python - 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 值?如何修复此错误?
解决方案
describe_instances()
返回一个dict
。采用:
instance["id"]
这用于instance.__getitem__("id")
进行密钥查找。你正在做的是一个属性查找,这是不同的。
推荐阅读
- android - 构建共享当前用户操作/屏幕的 Android 应用程序功能
- javascript - DM 命令不会 DM 用户
- r - 如何根据用户名将 R 中的数据帧分解为几个子数据帧?
- google-apps-script - GAS:每当共享文件时触发电子邮件
- flutter - Flutter - 尝试将从 JSON 获取的推文列表显示到 ListView
- pandas - 在 pandas 中使用 groupby 作为日期时间值
- ruby - 有没有办法编写一个匹配除文件夹中的所有文件之外的所有文件的全局模式?
- linux - 在 gdb 中为没有调试符号的应用程序调用系统命令
- php - PHP ZipArchive 从 XML 中去除标签
- docker - Traefik v2.5 未重定向到搬运工容器。404 未找到