Python 如何在s3中将lambda输出写入JSON
我在Python2.7中有一些东西在写入CSV时可以很好地工作,如何在同一个s3存储桶中的单独文件中向json添加输出Python 如何在s3中将lambda输出写入JSON,python,json,amazon-web-services,aws-lambda,Python,Json,Amazon Web Services,Aws Lambda,我在Python2.7中有一些东西在写入CSV时可以很好地工作,如何在同一个s3存储桶中的单独文件中向json添加输出 #boto3 library ec2 API describe addresses page #http://boto3.readthedocs.org/en/latest/reference/services/ec2.html#EC2.Client.describe_addresses addresses = ec2con.describe_addresses
#boto3 library ec2 API describe addresses page
#http://boto3.readthedocs.org/en/latest/reference/services/ec2.html#EC2.Client.describe_addresses
addresses = ec2con.describe_addresses().get('Addresses',[] )
addresseslist = len(addresses)
if addresseslist > 0:
csv_file.write("%s,%s,%s,%s,%s\n"%('','','','',''))
csv_file.write("%s,%s\n"%('EIPS INSTANCE',regname))
csv_file.write("%s,%s,%s,%s\n"%('PublicIp','AllocationId','Domain','InstanceId'))
csv_file.flush()
for address in addresses:
PublicIp=address['PublicIp']
try:
AllocationId=address['AllocationId']
except:
AllocationId="empty"
Domain=address['Domain']
if 'InstanceId' in address:
instanceId=address['InstanceId']
else:
instanceId='empty'
csv_file.write("%s,%s,%s,%s\n"%(PublicIp,AllocationId,Domain,instanceId))
csv_file.flush()...
date_fmt = strftime("%Y_%m_%d", gmtime())
#Give your file path
filepath ='/tmp/AWS_Resources_' + date_fmt + '.csv'
#Save Inventory
s3.Object('s3BUCKETNAME', filename).put(Body=open(filepath, 'rb'))
您可以在已有函数的基础上创建类似的函数,但首先构建一个Python字典列表,如下所示。如果需要,请阅读更多关于和的信息。然后可以从字典中创建一个字符串,用于写入S3文件 请注意,Python代码存在很多样式问题。变量名、列表长度检查等。请仔细查看样式建议
addresses_json = []
for address in addresses:
# extract values as you already do
# create dict
addresses_json.append(dict(
PublicIp=PublicIp,
AllocationId=AllocationId,
Domain=Domain,
instanceId=instanceId
))
body = json.dumps(addresses)
filepath = '/tmp/AWS_Resources_' + date_fmt + '.json'
# use similar s3 calls to create a file for the JSON
这很有帮助,但是,我通过添加
iplist = list()
for address in addresses:
PublicIp=address['PublicIp']
iplist.append(PublicIp)
s3.Object('S#BUCKETNAME', account_id + "_" + date_fmt).put(Body=json.dumps(iplist))