Я пытаюсь вернуть информацию обо всех экземплярах EC2
в учетной записи AWS
, используя boto3
API
вызовы в Python
, но мне не удается отобразить ресурс availability_zone
.
Например, когда я могу перебрать все мои EC2
экземпляры, успешно используя этот код:
ec2 = boto3.resource('ec2')
output = defaultdict()
for instance in ec2.instances.all()
for iface in instance.network_interfaces:
output[instance.id] = {
'Instance ID': instance.id,
'Subnet ID': iface.subnet_id
}
Я опускаю оставшуюся часть кода, но вышеприведенный код работает и выводит значения тех ресурсов, которые я затем помещаю в файл csv
, используя Pandas
.to_csv
.
Когда я пытаюсь добавить следующее в качестве значения в Python
dictionary
:
'Availability Zone': instance.availability_zone
Я получаю следующую ошибку:
AttributeError: 'ec2.Instance' object has no attribute 'availability_zone'
Это ожидаемое поведение. Вместо этого я пытаюсь сделать следующее:
'Availability Zone': iface.availability_zone
Это работает с ошибкой, но вывод пуст. В файле csv
просто ничего нет.
Я посмотрел документацию boto3
, а availability_zone
- это доступный атрибут ресурса в ресурсе NetworkInterface
, точно так же как subnet_id
, который я использую и работаю.
Что мне здесь не хватает? Кто-нибудь может указать мне правильное направление или дать мне знать, что я делаю неправильно?