我试图获取多个AWS账户中每个用户的访问密钥年龄。我目前有代码打印出访问密钥时代,但代码没有正确地从错误中返回它。与我合作的代码是,
google-play-services.jar
我的问题是,如果我注释掉
的提及 <dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>4.1.1.4</version>
<scope>provided</scope>
</dependency>
和
import boto3
from time import gmtime, strftime
from datetime import datetime
sts = boto3.client('sts')
def lambda_handler(event, context):
rolesessionname = "rolename"
account = "123456789"
response = sts.assume_role(
RoleArn = "arn:aws:iam::" + str(account) + ":role/audit",
RoleSessionName= rolesessionname
)
credentials = response['Credentials']
iam = boto3.client(
'iam',
aws_access_key_id = credentials['AccessKeyId'],
aws_secret_access_key = credentials['SecretAccessKey'],
aws_session_token = credentials['SessionToken']
)
response = iam.list_users()
nameList = []
todaysDate = strftime("%Y-%m-%d %H:%M:%S", gmtime())
todaysDate = str(todaysDate)
todaysDate = todaysDate[0:10]
todaysDate = datetime.strptime(todaysDate, "%Y-%m-%d")
for person in response["Users"]:
curPersonName = person["UserName"]
keys = iam.list_access_keys(UserName=curPersonName)
for keyData in keys["AccessKeyMetadata"]:
keyID = keyData["AccessKeyId"]
status = keyData["Status"]
CreateDate = keyData.get("CreateDate","none")
CreateDate = str(CreateDate)
CreateDate = CreateDate[0:10]
CreateDate = datetime.strptime(CreateDate, "%Y-%m-%d")
totalDays = abs((CreateDate - todaysDate).days)
print (totalDays-1)
nameList.append({
"UserName:":curPersonName,
"Status:": status,
"Create Date": CreateDate
#"Total days:" : totalDays-1
})
return nameList
我成功构建并返回数据,只是没有键的年龄,这主要是我想要的。但是,如果我保留这些线并打印出来以确定它是否正确地获得了年龄。但是它只打印出来然后出现错误。
CreateDate = datetime.strptime(CreateDate, "%Y-%m-%d")
答案 0 :(得分:0)
您收到此错误是因为datetime
不是JSON可序列化的。您正在使用
datetime
中保存CreateDate
个对象
datetime.strptime(CreateDate, "%Y-%m-%d")
似乎答案是使用此值来计算您的日期:
totalDays = abs((CreateDate - todaysDate).days)
然后在将其添加到返回对象之前将其更改为字符串表示形式:
CreateDate = CreateDate.isoformat() #or whatever return format you want.