我是AWS lambda的新手;我必须将lambda函数的结果返回for循环的结果,
以下代码将为过去60天未在此使用过AWS密码的用户提供密码;它已在jupyter笔记本电脑中经过测试,并且可以正常工作
import json
import boto3
import datetime
from dateutil.tz import tzutc
resource = boto3.resource('iam')
today = datetime.datetime.now()
for user in resource.users.all():
if user.password_last_used is not None:
delta = (today - user.password_last_used.replace(tzinfo=None)).days
if delta > 60:
print("username: ", [user.user_name][0]," - ",delta , "days")
如何从jupyter笔记本返回以下结果
Username: abc- 96 Days
Username: def- 64 Days
Username: ghi- 184 Days
Username: mno- 158 Days
Username: xyz- 95 Days
我尝试将输出追加到数组并返回该数组但返回Null的Lambda代码:-
import json
import boto3
import datetime
from dateutil.tz import tzutc
def lambda_handler(event, context):
resource = boto3.resource('iam')
client = boto3.client('iam')
today = datetime.datetime.now()
userName = []
for user in resource.users.all():
if user.password_last_used is not None:
delta = (today - user.password_last_used.replace(tzinfo=None)).days
if delta > 30:
userName.append("username: ", [user.user_name][0]," - ",delta , "days")
return userName
答案 0 :(得分:0)
问题在于您如何附加结果。 Append不像打印一样采用逗号分隔的值。使用以下行使其起作用。
userName.append(f"username: {[user.user_name][0]}- {delta} days")
或以下(如果您使用的是python 2
)userName.append("username: {}- {} days".format([user.user_name][0],delta))
还要确保该策略同时允许IAM:GetUser和IAM:ListUsers
答案 1 :(得分:0)
import json
import boto3
import datetime
from dateutil.tz import tzutc
def lambda_handler(event, context):
resource = boto3.resource('iam')
client = boto3.client('iam')
sns = boto3.client('sns')
today = datetime.datetime.now()
physicalString ='Below users not logged into AWS console for 90 days\n'
final_report = ''
final_result = ''
number =int(1)
for user in resource.users.all():
if user.password_last_used is not None:
delta = (today - user.password_last_used.replace(tzinfo=None)).days
if delta >= 0:
final_result= str(number) + " username: "+ [user.user_name][0]+" - "+str(delta) + "days\n"
final_report = final_report+final_result
number=number+1
response = sns.publish(
TopicArn='arn:aws:sns:XXXXXXXXXXXX:AWS_KMSKEY',
Message= physicalString + final_report,
Subject='IAM USER'
)
以上代码有效,我们能够获得如下输出的用户列表:-
1 username: abc- 102days
2 username: efg- 190days
3 username: zyz- 164days