Python - Boto3 - dict не имеет атрибута «InstanceId» - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть пользователь, который вводит список идентификаторов экземпляров AWS.Я использую Pyton 3 и boto, чтобы распечатать информацию для экземпляра, а затем удалить его.

Я получаю эту ошибку при попытке запустить скрипт:

File ".\aws_test.py", line 11, in <module>
    print("Instance ID: ", instance.id)
AttributeError: 'dict' object has no attribute 'id'

Вотмой пример кода:

import boto3
import collections
from collections import defaultdict
ec2 = boto3.client('ec2')
instance_id = 'i-076361b30ee404bb4'
instance = ec2.describe_instances(
    InstanceIds=[instance_id]
    )['Reservations'][0]['Instances'][0]
# Add instance info to a dictionary
ec2info = defaultdict()
print("Instance ID: ", instance.id)

Если я смогу получить идентификатор экземпляра, я получу доступ к другим, которые мне нужно напечатать следующим образом:

ec2info[instance.id] = {
    'Instance ID': instance.id,
    'Type': instance.instance_type,
    'State': instance.state['Name'],
    'Private IP': instance.private_ip_address,
    'Public IP': instance.public_ip_address,
    'Launch Time': instance.launch_time
    }

и распечатать их.Почему я не могу получить значение instance.id?Как мне исправить эту ошибку?

1 Ответ

0 голосов
/ 28 февраля 2019

describe_instances() возвращает dict.Используйте:

instance["id"]

Используется instance.__getitem__("id") для поиска ключа.То, что вы делаете, это поиск атрибутов, который отличается.

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