web-dev-qa-db-ja.com

Boto 3を使用してEC2インスタンス名を表示する

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)

私が見返りに得るものは

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

enter image description here

ii.idまたはi.instance_typeに変更できますが、nameを試すと次のようになります。

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

インスタンス名を取得する正しい方法は何ですか?

17
Liondancer

他の方法があるかもしれません。しかし、コードの観点からは、次のように動作するはずです。

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

Pythonの強力なリスト理解を使用する場合の1つのライナーソリューション:

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

AWS EC2では、インスタンスはtaggedで、名前は tag です。

特定のインスタンスのNameタグの値を取得するには、そのタグのインスタンスをクエリする必要があります。

botoを使用してAWSインスタンスからタグを取得する を参照してください

6
Rodrigo M