boto3でEC2.InstanceオブジェクトからNameタグを取得する方法[Python]

2017.09.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、臼田です。

皆さんPython書いてますか?

boto3で書いてて、ぐぐってもあんまりいい情報がなかったのでNameタグを取得する方法を共有します。

スクリプト

# -*- coding: utf-8 -*-

import boto3

ec2 = boto3.resource('ec2')
instance = ec2.Instance(id='i-xxxxxxxx')
name_tag = [x['Value'] for x in instance.tags if x['Key'] == 'Name']
name = name_tag[0] if len(name_tag) else ''
print(name)

Python 3.6で動作しない問題を修正しました。2.7, 3.6で動作を確認しています。ご指摘いただいたしんさかさん、ありがとうございます!

ec2.Instance.tagsで該当インスタンスのタグ一覧を取得して、filterで"key": "Name"のdictを取得します。

filter結果はlistになっているので[0]から取り出し、もしNameタグがなければfilter結果が空なので''を返します。

正直これが一番いいかわかりません。

他にもっといい方法があったら教えてほしいです。