如何解决如何使用 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',region_name=region)
instances = conn.instances.filter()
for instance in instances:
if instance.state["Name"] == "running":
print (instance.instance_name,instance.id,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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。