python - Boto3 AttributeError:“dict”对象没有属性“tags”
问题描述
当我运行我的脚本时,我得到了错误:AttributeError: 'dict' object has no attribute 'tags'
这是我的代码:
import sys
import boto3
ec2 = boto3.client('ec2')
instance_id_list = input("Enter an instance ID separated by commas: ")
instance_ids = instance_id_list.split(",")
print("Deleting Instance IDs:")
for instance_id in instance_ids:
instance = ec2.describe_instances(
InstanceIds=[instance_id]
) ['Reservations']
#ec2info = defaultdict()
#for tag in instance.tags:
# if 'Name'in tag['Key']:
# print(tag['Key'])
# name = tag['Value']
# Add instance info to a dictionary \
print(instance.get('Instances'))
ec2info[instance.id] = {
'Name': instance.get('Reservations').get('Instances').get('InstanceId'),
'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
}
attributes = ['Name', 'Instance ID', 'Type',
'State', 'Private IP', 'Public IP', 'Launch Time']
for instance_id, instance in ec2info.items():
for key in attributes:
print("{0}: {1}".format(key, instance[key]))
#print(instance.terminate())
print("------")
这是我的脚本的完整输出:
Enter an instance ID separated by commas: i-024d1b8e8eaa8e417,i-03804b280877175be
Deleting Instance IDs:
Traceback (most recent call last):
File ".\aws_ec2_terminate_instances.py", line 13, in <module>
for tag in instance.tags:
AttributeError: 'dict' object has no attribute 'tags'
我该如何解决这个错误?
解决方案
需要的 2 个修复
1) 追加[0]['Instances'][0]
获取实例详细信息
instance = ec2.describe_instances(
InstanceIds=[instance_id]
) ['Reservations'][0]['Instances'][0]
2)instance
不是一个对象,而只是一个包含“标签”键的常规字典。
>>> instance['Tags']
[{'Key': 'Name', 'Value': 'instance-1'}]
推荐阅读
- c++ - SFINAE 和继承
- c++ - 在运算符c ++中访问对象
- php - 301重定向,更改url中的参数,相同的域和文件
- python - 在python程序中找不到mysql模块
- java - 使用 OAuth2 / OIDC 的安全微配置文件 REST 客户端
- css - 试图从 React Material Ui 覆盖 AppBar 的 css,
- android - 从 MySql 数据库访问和转换 android 中的 Blob 图像时出现问题。- 无法创建带有消息“未实现”的图像解码器
- javascript - 根据日期输入动态显示/隐藏 HTML 表单文本字段
- python - 蟒蛇X509 zeep
- javascript - 将变量值传递给 EJS 布局文件