[アップデート] Amazon CloudWatch SyntheticsでCanaryを削除する際に関連リソースも一緒に削除できるようになりました

地味ありがたい機能がAmazon CloudWatch Syntheticsに来たぞ。
2022.05.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

気づいたらIAMロールとIAMポリシーの数がとんでもないことに

こんにちは、のんピ(@non____97)です。

皆さんは気づいたらIAMロールとIAMポリシーの数がとんでも無いことになっていたという経験はありますか? 私はあります。

AWSではIAMロールの指定が必要な際に新しいロールを作成を選択できることがあります。こちらを選択すると、そのリソースの動作させるためのIAMロールと場合によってはIAMポリシー(インラインポリシー or カスタマー管理ポリシー)が作成されます。

この機能は非常に便利でよく使っているのですが、リソースを作成する度に使用すると、作成されたIAMロールとIAMポリシーの数がとんでもない数になりがちです。

マネージメントコンソールからだとIAMロールは複数個選択してまとめて削除できるのですが、IAMポリシーは複数個選択することはできずに、一個一個心を込めて削除する必要があります。

こういった理由から「リソースを削除するときに関連付くIAMロールやIAMポリシーも一緒に削除できたらなぁ」と思っていると、Amazon CloudWatch Syntheticsで、Canaryを削除する際に関連リソースも一緒に削除できるようになりました。

これは便利ですね。

早速試したので、紹介します。

いきなりまとめ

  • Canaryと一緒に削除できるリソースは以下の5つ
    1. Lambda関数
    2. Lambda Layers
    3. CloudWatchアラーム
    4. IAMロール
    5. IAMポリシー

やってみた

Canaryの作成

まず、Canaryの作成からします。

今回はDevelopersIOのトップページの外形監視をするためのCanaryを作成します。

CloudWatchのコンソールからCloudWatch Synthetics-Canaryを作成をクリックします。

Canaryを作成

設計図はデフォルトのハートビートのモニタリングのままです。テストするアプリケーションまたはエンドポイントURLにDevelopersIOのトップページのURL「https://dev.classmethod.jp/」を指定します。

設計図とCanaryビルダー

1回実行すれば十分なのでスケジュールは1回実行を選択します。

スケジュール

データ保持やデータストレージ、アクセス許可はデフォルトです。IAMロールは新しいロールを作成を選択します。

データ保持とデータストレージ、アクセス許可

CloudWatchアラーム、VPC設定、タグもデフォルトのままです。

CloudWatchアラーム、VPC設定、タグ

何となくX-Rayで見てみたかったので、AWS X-Rayでサービスを追跡します。にチェックを入れます。最後にCanaryを作成をクリックします。

アクティブトレースの有効化とCanaryを作成

Canaryが作成されました。早速実行しているようですね。

Canaryの作成完了確認

しばらく待つと、Canaryの実行が完了しました。ステータスも成功となっていますね。

Canaryの実行完了確認

画面上部のサービスマップで表示をクリックすると、X-Rayのサービスマップが表示されました。ロマンを感じます。

サービスマップ

Canaryの削除

それでは本題のCanaryの削除です。

Canary作成時に一緒に作成されたリソースを確認すると、以下の6つのリソースがありました。

  1. アーティファクトの保存先のS3バケット
  2. ログの出力先のCloudWatch Logsロググループ
  3. CanaryのスクリプトであるLambda関数
  4. Lambda関数に関連付くLambda Layers
  5. Lambda関数に関連付くIAMロール
  6. IAMロールにアタッチされているIAMポリシー

Canaryを削除するためにアクション-削除をクリックします。

Canaryの削除

すると、一緒に削除するリソースを選択する画面が表示されました。

Delete canaries

どうやら今回の場合は以下の4つのリソースが削除できそうですね。

  1. CanaryのスクリプトであるLambda関数
  2. Lambda関数に関連付くLambda Layers
  3. Lambda関数に関連付くIAMロール
  4. IAMロールにアタッチされているIAMポリシー

「削除する際は他のリソースにアタッチされているものを選択すると障害が発生するので注意が必要」と記載があります。

Review the canaries selected for deletion and choose any canary's associated resources to be deleted as well. Be careful, because if you choose to delete a CloudWatch alarm, a role, or a policy that is attached to another resource, it might cause failures. One example of this is if the canary’s alarm is used in a CloudWatch composite alarm.

機械翻訳結果は以下の通りです。

削除対象として選択したカナリアを確認し、カナリアの関連リソースも削除するものを選択します。他のリソースにアタッチされているCloudWatchアラーム、ロール、ポリシーの削除を選択した場合、障害が発生する可能性があるので注意が必要です。この例としては、カナリアのアラームがCloudWatchのコンポジットアラームで使われている場合です。

今回は作成していないですが、どうやらCloudWatchアラームも一緒に削除できるようですね。

今回は、チェックが外れているIAMロールとIAMポリシーにもチェックを入れて削除をクリックします。

Canaryの削除

確認の画面が表示されました。Deleteと入力して確認をクリックします。

確認

すると、削除処理が進んでいき、最終的にCanary successfully deletedと、選択した全てのリソースが削除されました。

Canary successfully deleted

実際に指定したリソースをコンソールから確認すると、確かに削除されていました。これは地味に便利。

他のサービスでも同等の機能が欲しくなった

Amazon CloudWatch SyntheticsでCanaryを削除する際に関連リソースも一緒に削除できるようになったアップデートを紹介しました。

実際触ってみると、これは思いのほか便利ということに気づきます。

EventBridgeルールやステートマシンなど他サービスにも同じような機能が提供されるとありがたいですね。私はフィードバックしておきました。

以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!