こんにちは。
AWS初心者インフラエンジニアの青木です。
シェルスクリプトを用いて同一アカウント・同一リージョン内にある複数のEC2インスタンスのARNを指定し、一括でタグ付けを行いました。
AWS初心者の私は配列の指定法で少々沼ってしまったので、同じようなAWS初心者さんのお力になれればと思います。
本記事では、以下のAWS公式ドキュメントに沿って処理を進めています。
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/resourcegroupstaggingapi/tag-resources.html
1. CloudShellでbashファイルを作成
CloudShellに以下のコマンドを入力します。
vi failename.sh
filenameの部分はお好きなファイル名を指定してください。
2. bashファイルにスクリプトを書き込む
1.でファイルを作成すると、自動で作成したfilename.shが開きます。
filename.sh内に、以下のスクリプトを書き込んでください。
aws resourcegroupstaggingapi tag-resources \
--resource-arn-list arn:aws:ec2:ap-northeast-1:accountID:instance/instanceID arn:aws:ec2:ap-northeast-1:accountID:instance/instanceID \
--tags stop-start=on
--resource-arn-list の後にタグ付けしたいEC2インスタンスのARNを貼り付けます。
2つ以上のインスタンスにタグ付けしたい場合、上記のように半角1文字分の(空白)をあけて列挙してください。
--tags 配下にはkey=valueとなるように任意の値を指定してください。
※ARN名を「"」で囲んだり、列挙するARN名とARN名の間に「,」を入れるとエラーの対象となりうまく動作しませんでした。bashでは空白一文字や「"」の有無でもエラーとなってしまうようなのでご注意ください!
3. bashファイルを保存して閉じる
2.が書き込めたら、ESC
キーを押下 → :wq
と入力してbashファイルの入力を保存・終了してください。
4. 作成したbashファイルを実行
3.が完了したらCloudShellの画面に戻るので、そのまま以下のコマンドを入力します。
bash tag-test.sh
tag-testの部分は、1.で作成したファイルの名前に置き換えてください。
5. 出力結果を確認
以下の出力となれば問題なく完了している合図です。
{
"FailedResourcesMap": {}
}
以上で説明は終了です。
お疲れ様でした!
最後までお読みいただき、ありがとうございました。