Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在s3中将lambda输出写入JSON_Python_Json_Amazon Web Services_Aws Lambda - Fatal编程技术网

Python 如何在s3中将lambda输出写入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

我在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().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))