Возвращение атрибута AWS EC2 Availability_zone с использованием boto3 Python SDK - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь вернуть информацию обо всех экземплярах 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, который я использую и работаю.

Что мне здесь не хватает? Кто-нибудь может указать мне правильное направление или дать мне знать, что я делаю неправильно?

1 Ответ

1 голос
/ 30 января 2020

Зона доступности является атрибутом Су bnet.

Поэтому вы можете использовать:

import boto3

ec2 = boto3.resource('ec2')

output = {}

for instance in ec2.instances.all():
    for iface in instance.network_interfaces:
        output[instance.id] = {
            'Instance ID': instance.id,
            'Subnet ID': iface.subnet_id,
            'AZ': iface.subnet.availability_zone
        }

print(output)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...