[アップデート] Amazon CloudWatch ダッシュボードで「変数」を定義して、閲覧者がダッシュボードの表示条件を動的に切り替えることが出来るようになりました

2023.07.01

いわさです。

Amazon CloudWatch の機能にダッシュボードという機能があります。
CloudWatch ダッシュボードは CloudWatch コンソール内でカスタマイズ可能なモニタリングダッシュボードを作成することが出来る機能です。

通常はモニタリングが必要なリソースごとのいくつかのメトリクスをダッシュボード上に並べたりすると思いますが、本日のアップデートで「変数」という機能を使うことが出来るようになりました。

これを使うことで変数への入力値に応じてダッシュボードの特定フィールドを動的に変化させることで切り替え機能を持つダッシュボードが作成出来るようになりました。

「変数」を使わない場合

検証用に、次のようないくつかの S3 バケットのオブジェクト数をモニタリングするようなダッシュボードを考えてみます。
※ 単純化した例なので次のように数値で一括で表示しても良いものですが。

ここでは次のようにバケットごとにウィジェットを並べてみましょう。

これまではこのように様々な視点で切り替えが必要な場合はダッシュボードを分けるか、あるいはダッシュボード内にまとめて配置するかが必要でした。

「変数」を使ってみる

では新しい機能「変数」を使ってみましょう。
変数はダッシュボード内のアクションメニューからアクセスすることが可能です。

「変数を管理」では作成済みの変数一覧を管理することが出来ます。

「変数を作成」から新しい変数を作成することが出来ます。

まず、変数には「プロパティ変数」と「パターン変数」の 2 つのタイプが用意されています。
通常はプロパティ変数を使ってダッシュボード内の特定のプロパティに変数を適用させる使い方になると思います。
パターン変数を使うと、ダッシュボードの JSON データに対して正規表現でパターン変更を行う機能です。プロパティ変数では対象プロパティはすべて対象となりますが、例えば一部のウィジェットにのみ適当したいなど、高度なカスタマイズが必要な場合はパターン変数を使うことになります。

今回は「プロパティ変数」を試してみたいと思います。
ここでは変数を BucketName プロパティに適用することでウィジェットの対象バケットが切り替わるような仕組みにしてみたいと思います。

また、変数には入力タイプがあって、テキストで任意にバケット名を入力させることも出来ますが、ラジオボタンやドロップダウンでバケット名を選択させることも出来ます。
さらに、選択肢をテキストで予め用意出来る他、メトリクス検索機能を使うことで対象メトリクスで検索して自動でバケット名などのプロパティ値一覧を生成することも出来ます。

ここでは次のように、NumberOfBuckets とバケット名の一部を指定して、バケット名の選択肢を作ってみました。

変数の構成をある程度決めた段階で、プレビュー機能でどのように変数入力が出来るようになるかを確認することも出来ます。
良さそうなので、変数の作成を確定させましょう。

変数を作成しダッシュボードで戻ると変数の動作が反映されるようになっています。
ダッシュボード上部でバケット名を選択出来るようになり、選択したバケットのメトリクスが対象ウィジェットで表示されるようになっています。

変数で動的に切り替えることが出来るようになったので、冗長なウィジェットは削除してみました。
複数のウィジェットを並べて分析することが重要な場合もあると思いますが、冗長な場合には変数で切り替えるほうが良い場合もあります。

なお、この場合でもウィジェットで設定されているバケット名は、元々設定していたバケット名が設定されています。

一方で、メトリクスツールチップなどで表示される情報は変数で選択した値に切り替わっていました。

ウィジェットの構成情報に変数が埋め込まれる形ではなくて、ダッシュボード表示の際に変数でオーバーライドされるような動きになっていますね。

他の変数と組み合わせて使ってみる

また、変数は 1 つ以上設定が可能なので、他のプロパティ変数などと組み合わせることも出来ます。
ダッシュボード内に配置されたウィジェットに応じて選択可能なプロパティは異なっていますが、height や width などウィジェットのビジュアル的な部分に介入することも出来るようです。

ここではフリーテキストで height プロパティを対象とする変数を作成してみました。
3を入力してみると次のような表示となります。

6を入力してみると次のようにウィジェットサイズが変更されました。

ダッシュボードの構成情報の中のheightプロパティを変数で上書きしているような動きですね。

さいごに

本日は Amazon CloudWatch ダッシュボードで「変数」を定義して、閲覧者がダッシュボードの表示条件を動的に切り替えることが出来るようになったので使ってみました。

閲覧者の操作が可能で分析の切り口を変更させるような場合は有効だと思います。
特に、従来そのためにダッシュボードを複製して微妙に変更するみたいな使い方をしていた方には朗報なのではないでしょうか。
例えばリージョンごととかマルチテナントアプリケーションのテナントごととかでダッシュボードを複製していたような場合は、変数をうまく使うことで 1 つのダッシュボードを運用するだけで良くなりそうですね。

無理に変数を導入して複雑にする必要はないと思いますが、ダッシュボードの冗長性を排除出来る可能性がありますので、是非有効性を評価してみてください。