我有一个兰姆达
此lambda将关闭并报告超过特定天数的任何人的访问密钥
导入boto3、json、time、datetime、sys
sns = boto3.client('sns')
usernames = []
mylist = []
sts_client = boto3.client('sts')
assumed_role_object=sts_client.assume_role(
RoleArn="arn:aws:iam::999999999:role/role",
RoleSessionName="AssumedRoleSession4"
)
credentials=assumed_role_object['Credentials']
client=boto3.client(
'iam',
aws_access_key_id=credentials['AccessKeyId'],
aws_secret_access_key=credentials['SecretAccessKey'],
aws_session_token=credentials['SessionToken'],
)
def lambda_handler(event, context):
users = client.list_users()
for key in users['Users']:
a = str(key['UserName'])
usernames.append(a)
for username in usernames:
try:
res = client.list_access_keys(UserName=username)
accesskeydate = res['AccessKeyMetadata'][0]['CreateDate']
accesskeydate = accesskeydate.strftime("%Y-%m-%d %H:%M:%S")
currentdate = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())
accesskeyd = time.mktime(datetime.datetime.strptime(accesskeydate, "%Y-%m-%d %H:%M:%S").timetuple())
currentd = time.mktime(datetime.datetime.strptime(currentdate, "%Y-%m-%d %H:%M:%S").timetuple())
active_days = (currentd - accesskeyd)/60/60/24 ### We get the data in seconds. converting it to days
if 90 < active_days:
a = str(username)
c = int(int(round(active_days)))
mylist.append(a)
mylist.append(c)
except:
f = str('')
print(mylist)
finallist = ''.join(str(mylist))
finallist = finallist
sns_message = (finallist)
response = sns.publish(
TopicArn='arn:aws:sns:eu-west-2:111111111:sns',
Message= sns_message,
Subject='Access Keys which need rotating',
)
这是回报
['David.Jim', 123, 'Dav.Jimmy', 469, 'David.Jimmy', 480, 'Jim.Dave', 103, 'Dave.Jimmy', 102, 'Jimmy.Dave', 179]
由于超过100名用户的访问密钥超过90天,因此很难对其进行审查。如何提高产量
谢谢 尼克
为什么不在代码中格式化输出?例如:
然后使用字符串
mylist
进行打印和发送。使用format
方法也有其他方法可以做到这一点,但这应该可以让您开始制作真正的对并使用
pprint
(表示漂亮的打印)当然,如果您拥有该代码,那么最好将
mylist
定义为beggining中的词汇相关问题 更多 >
编程相关推荐