【发布时间】:2021-12-27 20:10:12
【问题描述】:
我需要从所有区域获取 ec2 详细信息并需要生成 csv。所以将区域存储在一个数组中并尝试过,但只显示最后一个区域的详细信息。
import boto3
import csv
ec2=boto3.client(service_name='ec2')
region=[]
for each_region in ec2.describe_region()['Regions']:
region.append(each_region['RegionName'])
for each_region in region:
client = boto3.client('ec2',region_name=each_region)
result = []
response = ec2.describe_instances(
InstanceIds=[
'i-xxxxxxxxxxxxxxxxx'
]).get('Reservations')
for item in response:
for each in item['Instances']:
result.append({
'ImageId': each['ImageId'],
'InstanceType': each['InstanceType'],
'PublicIp': each['PublicIpAddress'],
'PrivateIp': each['PrivateIpAddress']
})
header = ['ImageId', 'InstanceType', 'PublicIp', 'PrivateIp']
with open('ec2-details.csv', 'w') as file:
writer = csv.DictWriter(file, fieldnames=header)
writer.writeheader()
writer.writerows(result)
【问题讨论】:
-
您正在向 describe_instances 提供占位符
'i-xxxxxxxxxxxxxxxxx'。您如何知道每个给定区域的实例 ID 列表?您的代码没有显示您是如何做到的。
标签: python-3.x amazon-web-services amazon-ec2 boto3