python-3.x - 如何使用 Boto 3 显示 EC2 实例名称
问题描述
我正在使用下面的代码来显示 instance_id,instance_type 但我无法显示我想要的实例名称
print (instance.id, instance.instance_type, region)
这是有效的,但这不是 instance.instance_name
import boto3
access_key = "AKIAJ5G2FAUVO3TXXXXXXXX"
secret_key = "nk7eytkWfoSDU0GwvBZVawQvXXXXXX"
client = boto3.client('ec2', aws_access_key_id=access_key, aws_secret_access_key=secret_key,region_name='us-east-1')
ec2_regions = [region['RegionName'] for region in client.describe_regions()['Regions']]
for region in ec2_regions:
conn = boto3.resource('ec2', aws_access_key_id=access_key, aws_secret_access_key=secret_key,region_name=region)
instances = conn.instances.filter()
for instance in instances:
if instance.state["Name"] == "running":
print (instance.instance_name,instance.id, instance.instance_type, region)
解决方案
您正在使用的对象没有instance
名称属性。原因是实例的“名称”仅基于名为Name
. 所以你必须得到标签,并找到一个标签名称Name
:
def get_tag(tags, key='Name'):
if not tags: return ''
for tag in tags:
if tag['Key'] == key:
return tag['Value']
return ''
ec2_regions = [region['RegionName'] for region in client.describe_regions()['Regions']]
for region in ec2_regions:
conn = boto3.resource('ec2', aws_access_key_id=access_key, aws_secret_access_key=secret_key,region_name=region)
instances = conn.instances.filter()
for instance in instances:
instance_name = get_tag(instance.tags)
print (instance_name, instance.id, instance.instance_type, region)
推荐阅读
- python - Cancate three channels to one
- reactjs - 在 Formik 中使用 htmlFor - React
- java - 如何通过spring boot在所有记录器上保存数据库中的日志
- javascript - 如果另一个 h2 选择关闭当前一个,我如何一次显示一个 h2?
- c - 大约堆栈位置
- perl - Perl:谁能告诉我如何解决这个警告
- javascript - 我在javascript的回调函数中做错了什么?
- mongodb - 如何在 MongoDB 3.4 中加入多个集合?
- json - 我有一个 twitch vod 的纯文本聊天记录,是否可以将此文件转换为 json 格式?
- azure - terraform 在配置 azure vm 时激活趋势微代理