Python-Boto3-dict没有属性'InstanceId'

时间:2019-02-28 18:28:20

标签: python python-3.x boto3

我正在让用户输入一个AWS实例ID列表。我正在使用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)

如果可以获取实例ID,我将访问需要打印的其他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 :(得分:1)

describe_instances() returns a dict。使用:

instance["id"]

这使用instance.__getitem__("id")进行密钥查找。您正在做的是一个属性查找,这是不同的。