🐒

【EC2編】AWS Boto3 by Pythonで特定タグ付与状況のリスト抽出

2023/03/15に公開約1,600字

1. 本稿の概要

◆ ゴール

以下のような機能を満たすPythonスクリプトを作成しました。
こちらはEC2インスタンス向けです。

  • EC2インスタンスで特定タグ(Owner)の付与状況をリスト化
  • ローカル環境でI/Oが自由なPythonスクリプトとして実行
  • その抽出結果はCSVカンマ区切り形式でローカルに出力

◆ 背景、前提、その他サービスまとめなど

全体論はこちら を参照
※単にタグを棚卸したり付与するだけならタグエディタを使うのが一番楽かとは思います。

2. 開発

◆ 概説

今回はEC2のNameタグ、Ownerタグが未付与のリソースの一覧を出力します。
とりあえず単体では東京リージョンのみを対象としています。

◆ コード

check_owner_tag_ec2.py
import boto3 # pip install boto3

def check_owner_tag_ec2(arg_region = 'ap-northeast-1'):

    print('region: ' + arg_region)
    ec2client = boto3.client(service_name = 'ec2', region_name=arg_region)
    resp_data = ec2client.describe_instances()

    for num, ec2_reservation in enumerate(resp_data['Reservations'], 1):
        for ec2_instance in ec2_reservation['Instances']:
            ec2_tags = dict([(tag['Key'], tag['Value']) for tag in ec2_instance['Tags']])
            ec2_name = ec2_tags.get('Name', 'Nameタグなし')
            ec2_owner = ec2_tags.get('Owner', 'Ownerタグなし')
            print(str(num)  + ',' + str(arg_region) + ',' + ec2_name + ',' + ec2_owner)


if __name__ == "__main__":
    check_owner_tag_ec2()

◆ 実行例

py .\check_owner_tag_ec2.py
1,ap-northeast-1,poc-EC2,Ownerタグなし
2,ap-northeast-1,web-server,kangaezaru
...

◆ 応用・発展

ec2_nameやec2_ownerのget条件を変えれば任意のタグがキャッチできると思います。
引数やグローバル定数にしてもいいけど、自分の環境では今のとこ別にいいかな。。。

◆ 参考等

Discussion

ログインするとコメントできます