Как записать лямбда-вывод в JSON в s3 - PullRequest
0 голосов
/ 26 июня 2018

У меня есть кое-что в python 2.7, которое хорошо работает при записи в CSV, как я могу добавить вывод в json в отдельном файле в той же корзине s3?

#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'))

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Это было полезно, однако, мне удалось получить список IP-адресов 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))
0 голосов
/ 26 июня 2018

Вы можете создать аналогичную функцию на основе уже имеющейся у вас, но сначала создайте список словарей Python, как показано ниже. Узнайте больше о списках и словарях и json , если это необходимо. Затем вы можете создать строку из словаря для записи в файл S3.

Обратите внимание, что у вас много проблем со стилем вашего кода Python. Такие вещи, как имена переменных, проверки длины списка и т. Д. Пожалуйста, просмотрите PEP-8 для рекомендаций по стилю.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...