使用 Boto 3 显示 EC2 实例名称

Displaying EC2 Instance name using Boto 3

我不确定如何使用 boto3

在 AWS EC2 中显示我的实例名称

这是我的一些代码:

import boto3

ec2 = boto3.resource('ec2', region_name='us-west-2')
vpc = ec2.Vpc("vpc-21c15555")
for i in vpc.instances.all():
    print(i)

我在return中得到的是

...
...
...
ec2.Instance(id='i-d77ed20c')

我可以将 i 更改为 i.idi.instance_type 但是当我尝试 name 我得到:

AttributeError: 'ec2.Instance' object has no attribute 'name'

获取实例名称的正确方法是什么?

在 AWS EC2 中,一个实例被标记,名称为tag

为了获取给定实例的名称标签的值,您需要查询该标签的实例:

Obtaining tags from AWS instances with boto

可能还有其他方法。但从您的代码角度来看,以下内容应该有效。

>>> for i in vpc.instances.all():
...   for tag in i.tags:
...     if tag['Key'] == 'Name':
...       print tag['Value']

如果你想使用 Python 强大的列表理解,一个线性解决方案:

inst_names = [tag['Value'] for i in vpc.instances.all() for tag in i.tags if tag['Key'] == 'Name']
print inst_names