[英]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.