Python 3 AWS lambda函数可以让用户访问密钥时代

时间:2017-07-18 18:09:22

标签: python amazon-web-services aws-lambda boto3

我试图获取多个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")

1 个答案:

答案 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.