[英]How do we fetch IAM service last accessed details using Boto3?
以下是我在转换为 report\\csv 格式之前的代码
client=boto3.client('iam',aws_access_key_id='somedeclaredvariable',aws_secret_access_key='somedeclaredvariable')
users=client.list_users()
for x in users['Users']:
response = client.generate_service_last_accessed_details(Arn=x['Arn'],Granularity='SERVICE_LEVEL')
response1=client.get_service_last_accessed_details(JobId=response['JobId'])
if(response1['JobStatus']!='IN_PROGRESS'):
print(response1['ServicesLastAccessed'])
我得到的输出在 ServicesLastAccessed 列表中没有任何数据
它只是一个空列表: []
我在 AWS Lambda 中运行您的相同代码
import json
import boto3
def lambda_handler(event, context):
# TODO implement
client=boto3.client('iam')
users=client.list_users()
print(users)
for x in users['Users']:
response = client.generate_service_last_accessed_details(Arn=x['Arn'],Granularity='SERVICE_LEVEL')
print(response)
response1=client.get_service_last_accessed_details(JobId=response['JobId'])
if(response1['JobStatus']!='IN_PROGRESS'):
print(response1['ServicesLastAccessed'])
generate_service_last_accessed_details(**kwargs)
生成一份报告,其中包含有关上次尝试访问 AWS 服务时使用 IAM 资源(用户、组、角色或策略)的详细信息。 最近的活动通常会在四小时内出现。
我也没有得到GenerateServiceLastAccessedDetails
结果。 但我尝试运行另一个使用相同用户角色的 Lambda。 这不是在这之后获得访问权限能够获得结果。
{'JobId': 'XXXXX', 'ResponseMetadata': {'RequestId': 'bac90379-dXXXXX', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': 'bac90XXXX', 'content-type': 'text/xml', 'content-length': '395', 'date': 'Thu, 15 Oct 2020 06:40:29 GMT'}, 'RetryAttempts': 0}}
明确表示get_service_last_accessed_details(**kwargs)
检索使用GenerateServiceLastAccessedDetails
操作创建的服务上次访问报告。 注意:
我发现您必须对 get_service_last_accessed_details(JobId=) 的结果进行轮询,直到您获得 COMPLETED 的 JobStatus。
我进行了一系列等待以涵盖快速响应案例和较慢的案例,例如。
for job_wait in (0.1, 0.1, 0.2, 0.4, 0.5, 1.0, 1.0):
response = ...
status = response.get('JobStatus', '')
if status == 'COMPLETED':
.... exit with result
time.sleep(job_wait)
else:
# loop completed without getting a result
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.