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')
i
をi.id
またはi.instance_type
に変更できますが、name
を試すと次のようになります。
AttributeError: 'ec2.Instance' object has no attribute 'name'
インスタンス名を取得する正しい方法は何ですか?
他の方法があるかもしれません。しかし、コードの観点からは、次のように動作するはずです。
>>> 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
AWS EC2では、インスタンスはtaggedで、名前は tag です。
特定のインスタンスのNameタグの値を取得するには、そのタグのインスタンスをクエリする必要があります。
botoを使用してAWSインスタンスからタグを取得する を参照してください