[小ネタ] AWS CLI を使って異なるタグ値が設定されたタグキーをまとめて変更してみた
アノテーション・テクニカルサポートチームの hato です。
複数リソースに付けられたタグのキーを、値はそのままで一括で変更する方法を調査する機会がありましたので、小ネタとしてご紹介します。
変更前
タグのキー | タグの値 |
---|---|
hato-old-key | hato-tag-1a |
hato-old-key | hato-tag-1c |
変更後
タグのキー | タグの値 |
---|---|
hato-new-key | hato-tag-1a |
hato-new-key | hato-tag-1c |
タグエディタコンソールから出来るか?
AWS マネジメントコンソールのタグエディタから出来そうと確認しましたが、2024年12月時点では、値はそのままでキー名だけをまとめて変更はできないようです。
AWS のタグエディタを利用してコスト配分タグの設定ミスの修正や既存のタグ値の一括変更を試してみた | DevelopersIO
キー名を変更します。タグ値はそのままにキー名だけ変更することはできないようです。そのため、タグ値ごとに変更していきます。今回の場合はタグ値 0001 と 0002 に分けて作業をします。
Resource Groups Tagging API で行う
タグ付けをサポートする Resource Groups Tagging API の場合、簡単なシェルスクリプトを作成する必要がありますが、どうやら出来そうです。
AWS Bedrock で提供されている Anthropic の Claude 3.5 Sonnet の助けを借りつつ、以下のシェルスクリプトを作成しました。
- 変更対象の「タグのキー」が付けられたリソースを抽出
- 抽出リソースに新しいキー名でタグを付与
- 抽出リソースから変更前の古いタグを削除
コード
#!/bin/bash
# 変更前のタグキーと、変更後のタグキー
OLD_KEY="hato-old-key"
NEW_KEY="hato-new-key"
echo "Starting the tag key renaming process..."
# 対象リソースの ARN と現タグ値を取得
RESOURCES=$(aws resourcegroupstaggingapi get-resources --tag-filters "Key=${OLD_KEY}" --query 'ResourceTagMappingList[].[ResourceARN,Tags[?Key==`'${OLD_KEY}'`].Value | [0]]' --output text)
echo "Renaming tag keys in progress..."
while IFS=$'\t' read -r RESOURCE_ARN TAG_VALUE
do
echo "Renaming ARN :${RESOURCE_ARN}"
# 新しいタグを追加
aws resourcegroupstaggingapi tag-resources --resource-arn-list ${RESOURCE_ARN} --tags ${NEW_KEY}=${TAG_VALUE}
# 古いタグを削除
aws resourcegroupstaggingapi untag-resources --resource-arn-list ${RESOURCE_ARN} --tag-keys ${OLD_KEY}
sleep 1s
done <<< "$RESOURCES"
echo "Tag key renaming process completed."
やってみた
AWS CloudShell に上記スクリプトをアップロードして実行しました。
アップロード方法の参考手順
bash aws-tag-key-renamer.sh
でコードを実行します。
実行例
実行後
改めてタグエディタで確認すると、変更前はhato-old-key
のタグが
タグの値はそのままで、タグのキーだけ更新されました。
最後に
この記事が誰かのお役にたてば幸いです。
参考資料
タグキーの名前を変更することはできません
- get-resources — AWS CLI 2.22.12 Command Reference
- tag-resources — AWS CLI 2.22.12 Command Reference
- untag-resources — AWS CLI 2.22.12 Command Reference
- AWS CloudShell で AWS SDK for Python (Boto3) のコードを実行する方法を教えてください | DevelopersIO
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイト をぜひご覧ください。