首页 > 解决方案 > Python - Boto3 - dict 没有属性“InstanceId”

问题描述

我让用户输入 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,我将访问我需要打印的其他人,如下所示:

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 值?如何修复此错误?

标签: pythonpython-3.xboto3

解决方案


describe_instances() 返回一个dict。采用:

instance["id"]

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


推荐阅读