はじめに
EC2のタグ情報をもとに、EC2に紐づくEBSにタグ情報を設定するスクリプトの紹介です。
↓ このように、EBSのタグ情報を更新します。
-f
オプションは、対象のEC2を絞り込みます。EC2のNameタグに含まれる文字列を設定します。文字列は前方一致です。-f aws-test
とした場合、Nameタグが aws-testかきくけこ
のEC2のみがEBSタグ更新の対象になります。対象のEC2に複数のEBSが紐づく場合は、それら全てが対象になります。
実行環境
Pythonスクリプトの実行環境はWindows10です。
PS C:\> python --version
Python 3.9.5
PS C:\> pip list
Package Version
--------------- --------
boto 2.49.0
boto3 1.17.104
botocore 1.20.104
pip 21.1.3
PS C:\> aws --version
aws-cli/2.2.16 Python/3.8.8 Windows/10 exe/AMD64 prompt/off
スクリプト
スクリプトはgithubに格納しました。
スクリプト実行方法
-f
,-d
の2つのオプションを使用します。
オプション | 概要 |
---|---|
-f | EC2のNameタグに含まれる文字列を設定します。文字列は前方一致 |
-d |
False を指定するとdry-runが 無効 になり、EBSのタグ情報を設定します |
スクリプトの実行方法
PS C:\> python test.py -f {EC2 Nameタグのフィルタ文字列(前方一致)} -d False
実行例1)EC2のNameタグの文字列が aws
で始まるEC2に紐づくEBSをタグ更新の対象にする
PS C:\> python test.py -f aws -d False
実行例2)EC2のNameタグの文字列が aws-test
で始まるEC2に紐づくEBSをタグ更新の対象にする
PS C:\> python test.py -f aws-test -d False
実行例3)-d
オプションを指定しない場合は dry-runが 有効 になり、処理対象の情報表示のみ行います。
PS C:\> python test.py -f {EC2 Nameタグのフィルタ文字列(前方一致)}
スクリプト実行結果サンプル
スクリプトを実行したときの出力サンプルです。
PS C:\Users\usr01\test> python setEbsTags.py -f aws-test -d False
Python Version Check [OK] : sys.version_info(major=3, minor=9, micro=5, releaselevel='final', serial=0)
==========================================================
[1] ---------------------------
EC2 InstanceID = i-00000000000000001
タグ名= Name, 値= aws-testかきくけこ
タグ名= project, 値= projectかきくけこ
タグ名= cost, 値= costかきくけこ
EBS IDs= ['vol-000000000000001', 'vol-000000000000002']
==========================================================
----------------------------------------------------------
[Dry-run:OFF] EBSのタグ情報を更新->開始
[1](EBSタグ更新) ---------------------------
EC2-ID=i-00000000000000001
EBS=['vol-000000000000001', 'vol-000000000000002']
Tags=[{'Key': 'Name', 'Value': 'aws-testかきくけこ'}, {'Key': 'project', 'Value': 'projectかきくけこ'}, {'Key': 'cost', 'Value': 'costかきくけこ'}]
[Dry-run:OFF] EBSのタグ情報を更新->終了
----------------------------------------------------------
PS C:\Users\usr01\test>