CloudWatch Alarmにタグ付けができない件

こんにちは。
ブログの更新頻度が落ちてるのは、決してスプラトゥーンのせいではありませんよ。サーモンランたのしい。

さて、AWSでは様々なリソースにタグを付与することができます。
EC2であれば、インスタンスそのものはもちろん、インスタンスに関連して、EBSやENI、セキュリティグループやElastic IPにまでタグを付与することができます。

これは管理上便利にするため(検索利便性や精算の際にインデクシングできる)ですが、
これをまとめて実施できるのがTag Editorです。
AWSコンソールで検索欄に"Tag"と打つと出てくることでしょう。

今回は、このTag Editorを適当に使っていた時の話です。

Resource Groups & Tag Editor 使ってみよう!

既に使ったことある人は読み飛ばしてください。
とりあえず、先ほど紹介したTag Editorを使ってみます。

AWSコンソール画面で、Resource Groups & Tag Editorを開いてから、「Tag Editor」をクリックします。

そして、「リソースタイプ」にはお好みのサービス名を入れます。
先ほどの例で"ec2"と入力してみましたが、ずらーーーっとサービスが並んでいます。

単にEC2インスタンスに付いているタグを一覧で見るだけであれば、"AWS::EC2::Instance"の指定だけでいいでしょう。

デフォルトではタグを付与することができる全てのサービス・リソースを出力することができます。
選択肢で"All supported resource types"を選ぶことでも全出力ができます。

どのタグを絞るかも指定することができます。
条件が整ったら、「リソースを検索」でタグが付いているリソースを検索します。

タグ数と共に、一覧で表示されました。CSVに吐き出して、どんなタグが付いているのか(もしくは、付いていないのか)把握する使い方が多いかと思います。

基本的なTag Editorの使い方は以上です。

CloudWatch Alarmさん...?

ではここから本題ですが、とあるプロジェクトで「作成したリソースには全て識別用のタグを付与する」という要件がありました。コスト管理のためです。
タグの付与や命名を強制することはOrganizationsで可能ですが、プロジェクト時点ではまだ構築が済んでいませんでした。

そこで私は、前段のようにTag Editorから全リソースを引っこ抜いて、タグが付いていないリソースに、次々とタグを付けていいや〜と考えたわけです。

タグが付与されていないものは、その旨を教えてくれます

EC2やEFSなどのタグを付け終えた筆者は、ふんふん、次はCloudWatchか・・・と、リソースのリンクをクリックして、CloudWatchのコンソール画面を確認します。

・・・

ない。

・・・「タグ」のタブがない。

この辺にあった気がする。

「アクション」ボタンなどをいくら探してもありません。
いや、昔にタグ付けた記憶があるぞ?!(※勘違い)と探して5分ほど。

答えはAWSのドキュメントに書いてました。

Amazon CloudWatch リソースにタグを付ける
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch-Tagging.html

アラームにタグを付けるには、tag-resource AWS CLI コマンドと TagResource API を使用します。

・・・なんですと!?AWS歴は4年ちょいの若輩ではありますが、知らなかった。
どうやら2通りのタグ付け方法があるので、やってみます。

TagResource APIでのタグ付け

これはTag Editorの画面で行う操作です。
タグを付けたいリソースにチェックを入れ、右上の「選択したリソースのタグを管理する」を選択します。複数リソース一括もOK!

「タグキー」と「値」に付与したいタグの文字列を入れて、右下の適用ボタンを選択します。

確認ウィザードが出ます。特に複数リソースのタグを編集する場合は確認しておきましょう。

何やら怪しい日本語ですがタグは適用されていました。

コンソールでのタグ付けは、CloudWatch側ではできないため、執筆時点ではこの方法が良さそうです。

AWS CLIでのタグ付け

続いて、AWS CLIを用いたタグ付けです。
別にTag EditorのGUIで出来るからいいじゃん!という感じではありますが、超いっぱいリソースがある環境ではやはりCLIが便利です。

という訳で、とりあえずコマンドドン! ※太字を置き換えてください

aws cloudwatch tag-resource --resource-arn "CloudWatch AlarmのARN" --tags Key=タグのキー,Value=タグの値

ドキュメントのリンクも置いておきます。
https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/tag-resource.html

実際に実行するとこんな感じです。出力がなく、スンッと終わります。

途中のダブルクォーテーションは多分無くても通りますが、今回のように"&"など特殊文字が含まれている場合は必要です。

そして、タグ付け結果はTag Editorで確認します。
CLIで結果確認したかったですが、describe-alarmsでも出てこないしちょっとよく分からん。

しっかり目的のタグが付与されていました

これでタグ付け業務が捗りますね!

余談

余談その1:
2022年の春くらいにアラームアクションの無効化ができるようになってました。神。

余談その2:
AWS公式提供のSimpleアイコン集に"Resource Groups & Tag Editor"のアイコンが無くて超探しました。(結局コンソールにあるsvgリンクから画像作成した)