Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 获取iam用户列表的Python脚本,该用户列表未使用访问密钥超过10天_Python 3.x_Amazon Web Services_Aws Lambda_Boto3 - Fatal编程技术网

Python 3.x 获取iam用户列表的Python脚本,该用户列表未使用访问密钥超过10天

Python 3.x 获取iam用户列表的Python脚本,该用户列表未使用访问密钥超过10天,python-3.x,amazon-web-services,aws-lambda,boto3,Python 3.x,Amazon Web Services,Aws Lambda,Boto3,我已经准备好了python脚本,该脚本将获得10天以上未使用访问密钥的iam用户列表 但我得到了以下错误: AttributeError:“iam.User”对象没有“accesskey\u last\u used”属性 错误消息相当准确。iam.User对象上没有上次使用的accesskey\u属性 此外,用户可以拥有多个访问密钥,并且每个访问密钥都可以具有AccessKeyLastUsed属性 因此,您需要使用客户端调用,而不是资源调用,并为每个用户循环每个访问密钥: import boto

我已经准备好了python脚本,该脚本将获得10天以上未使用访问密钥的iam用户列表

但我得到了以下错误:

AttributeError:“iam.User”对象没有“accesskey\u last\u used”属性


错误消息相当准确。
iam.User
对象上没有上次使用的
accesskey\u属性

此外,用户可以拥有多个访问密钥,并且每个访问密钥都可以具有
AccessKeyLastUsed
属性

因此,您需要使用
客户端
调用,而不是
资源
调用,并为每个用户循环每个访问密钥:

import boto3
import datetime
from dateutil.tz import tzutc

resource = boto3.resource('iam')
client = boto3.client('iam')

today = datetime.datetime.now()
final_report = ''
number = 1

# For every user
for user in resource.users.all():

    # Get Access Keys for the User
    keys_response = client.list_access_keys(UserName=user.user_name)
    last_access = None

    # For every Access Key associate with the user
    for key in keys_response['AccessKeyMetadata']:

        last_used_response = client.get_access_key_last_used(AccessKeyId=key['AccessKeyId'])
        if 'LastUsedDate' in last_used_response['AccessKeyLastUsed']:
            accesskey_last_used = last_used_response['AccessKeyLastUsed']['LastUsedDate']
            if last_access is None or accesskey_last_used < last_access:
                last_access = accesskey_last_used

    # More than x days since last access?
    if last_access is not None:
        delta = (today - last_access.replace(tzinfo=None)).days
        if delta >= 10:
            final_report += str(number) + " username: " + [user.user_name][0] + " - " + str(delta) + " days\n"
            number += 1

print(final_report)
导入boto3
导入日期时间
从dateutil.tz导入tzutc
resource=boto3.resource('iam')
client=bot3.client('iam')
今天=datetime.datetime.now()
最终报告=“”
数字=1
#对于每个用户
对于resource.users.all()中的用户:
#获取用户的访问密钥
keys\u response=client.list\u access\u keys(用户名=user.user\u name)
上次访问=无
#对于与用户关联的每个访问密钥
对于密钥中的密钥\u响应['AccessKeyMetadata']:
上次使用\u响应=client.get\u access\u key\u上次使用(AccessKeyId=key['AccessKeyId'])
如果上次使用的响应['AccessKeyLastUsed']中的'LastUsedDate':
accesskey\u last\u used=last\u used\u响应['AccessKeyLastUsed']['LastUsedDate']
如果last_access为None或accesskey_last_used=10:
最终报告+=str(数字)+“用户名:”+[user.user\u name][0]+“-”+str(增量)+“天数\n”
数字+=1
打印(最终报告)
import boto3
import datetime
from dateutil.tz import tzutc

resource = boto3.resource('iam')
client = boto3.client('iam')

today = datetime.datetime.now()
final_report = ''
number = 1

# For every user
for user in resource.users.all():

    # Get Access Keys for the User
    keys_response = client.list_access_keys(UserName=user.user_name)
    last_access = None

    # For every Access Key associate with the user
    for key in keys_response['AccessKeyMetadata']:

        last_used_response = client.get_access_key_last_used(AccessKeyId=key['AccessKeyId'])
        if 'LastUsedDate' in last_used_response['AccessKeyLastUsed']:
            accesskey_last_used = last_used_response['AccessKeyLastUsed']['LastUsedDate']
            if last_access is None or accesskey_last_used < last_access:
                last_access = accesskey_last_used

    # More than x days since last access?
    if last_access is not None:
        delta = (today - last_access.replace(tzinfo=None)).days
        if delta >= 10:
            final_report += str(number) + " username: " + [user.user_name][0] + " - " + str(delta) + " days\n"
            number += 1

print(final_report)