Я начинаю использовать boto3, и мне интересно, как я могу получить список всех экземпляров ec2 во всех регионах с настраиваемыми атрибутами и поместить его в файл CSV. Для одного региона это выглядит просто:
import boto3
import jmespath
import csv
client = boto3.client('ec2')
response = client.describe_instances()
myData = jmespath.search("Reservations[].Instances[].[NetworkInterfaces[0].OwnerId, InstanceId, InstanceType, State.Name, Placement.AvailabilityZone, PrivateIpAddress, PublicIpAddress, KeyName, [Tags[?Key=='Name'].Value] [0][0]]", response)
myFile = open('inventory.csv', 'w')
with myFile:
writer = csv.writer(myFile)
writer.writerows(myData)
Но я не могу понять, как добиться аналогичного результата для всех регионов. Я пробовал что-то вроде этого:
all_regions = client.describe_regions()
RegionList = []
for r in all_regions['Regions']:
RegionList.append(r['RegionName'])
for r in RegionList:
client = boto3.client('ec2', region_name = r)
response = client.describe_instances()
myData = jmespath.search("Reservations[].Instances[].[NetworkInterfaces[0].OwnerId, InstanceId, InstanceType, State.Name, Placement.AvailabilityZone, PrivateIpAddress, PublicIpAddress, KeyName, [Tags[?Key=='Name'].Value] [0][0]]", response)
myFile = open('inventory.csv', 'w')
with myFile:
writer = csv.writer(myFile)
writer.writerows(myData)
Но у меня просто пустой список.