[実践]Amazon CloudWatch ダッシュボードを外部ユーザーに共有

![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/9627c8e6-02f7-0df4-55bc-a34ddb8a776d.png)

システム運用保守に関わる外部ユーザー(情シスの方など)から「システムリソースを随時把握したい！」
そんな時にピッタリですね。

# はじめに
Amazon CloudWatchの一機能であるダッシュボード機能は、IAMユーザーを持たないAWSアカウント外のユーザーに共有することが可能です！

# CloudWatch ダッシュボード
### 概要
対応するデータソース(後述)から取得した値をダッシュボード単位で集約し可視化することができます。
ダッシュボードはリージョン固有ではなくグローバルとなります。そのため、複数のリージョンにあるリソースの情報を集約して一元管理することができます。
![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/fbdc2a43-c8e0-f589-14a3-adf9b7d71e79.png)

### マルチアカウント
ダッシュボード固有の話ではないですが、CloudWatchの機能として複数アカウントのCloudWatchのデータを一つのアカウントに集約することが可能です。
本機能はAWS Organizationsが有効化されていなくても利用可能です。
![画像4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/d5d4e24e-c151-34df-8978-aa4e116b2043.png)

### データソース
ダッシュボードに追加できるデータソースのタイプは大きく3つあります。

#### タイプ１：CloudWatch
CloudWatchで収集しているデータである「メトリクス」「ログ」「アラームステータス」を選択することが可能です。
![画像5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/ac094197-78fb-dc0f-561f-ca05d6ca6e7e.png)

#### タイプ２：コンテンツ
マークダウン形式で記述した内容を追加したり、Lambda関数で任意のソースからデータを取得し処理したものをダッシュボードに追加することが可能です。
![画像6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/7ef80bb3-c63e-a404-c0e6-cb2ab1f65385.png)

#### タイプ３：カスタムデータソース
サポートされているカスタムデータソースに対しクエリを発行し、メトリクス化したものをダッシュボードに追加することが可能です。
![画像7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/cea71f97-7da5-ce8b-750b-9efee889a627.png)

:::note info
現在(2025/2/1時点で)サポートされているデータソースは7つです。
:::
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/MultiDataSourceQuerying.html

### 料金
無料利用枠がありますが、超える分は1か月当たり「ダッシュボード個数×3.00USD」費用が発生します。
* 無料利用枠(無期限利用枠)：毎月最大 50 メトリクスのダッシュボード 3 個
* 有料利用枠：3.00USD/ダッシュボード/月

https://aws.amazon.com/jp/free/?all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=*all&awsf.Free%20Tier%20Categories=*all&all-free-tier.q=cloudwatch&all-free-tier.q_operator=AND

https://aws.amazon.com/jp/cloudwatch/pricing/

### 共有方法
ダッシュボードの共有方法は大きく3つあります。
![画像9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/87b3cd49-d11e-307e-66ca-0e5a84a58cf4.png)


# 実践
前置きが長くなりましたが、ダッシュボードの作成から共有まで順を追って実践していきましょう！
今回はシンプルにメトリクスをダッシュボードに追加して、Eメールで共有していきます。

### 検証環境
せっかくなので、複数リージョンのメトリクスを登録し共有していきます。
![画像10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/277cc61d-3e46-76ab-a1bc-aa4e362c1fb8.png)

### ダッシュボード作成
特段理由はないですが、東京リージョンで作業していきます。
初めに、CloudWatchサービスページの左ペインにある「ダッシュボード」を選択し、「ダッシュボードの作成」をクリックします。
![画像11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/7348a51d-81f2-bae6-7a02-d3973042055e.png)

任意のダッシュボード名を入力し、「ダッシュボードの作成」をクリックします。
![画像13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/a6553db6-4792-f0d7-4bfe-4fe8449b096e.png)

ウィジェットの追加をします。
今回はメトリクス(CPUUtilization)を追加したいので、以下の条件で「次へ」をクリックします。
|データソースタイプ|データ型|ウィジェットのタイプ|
|:-|:-|:-|
|CloudWatch|メトリクス|線|

![画像14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/58965fbb-2169-17ed-3fbe-d2cdaa47ac9d.png)

メトリクス一覧が表示されるので、「Tokyo」が選択されていることを確認し、追加したメトリクスにチェックを入れてウィジェットの作成をクリックします。
![画像15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/b11e4417-bc93-e7d3-7306-894603c7818c.png)

:::note info
複数のメトリクスにチェックを入れて、一つのウィジェット内に複数表示することも可能です。
:::

東京リージョンで収集しているEC2のCPUUtilizationの追加が完了しました。説明は割愛しますが、右上の「＋」ボタンをクリックし同様に大阪リージョンのCPUUtilizationも追加します。上記のメトリクス一覧画面にて「Osaka」を選択することで、大阪リージョンで収集しているメトリクスが表示されます。

::: note warn
追加後は、保存を忘れずに行ってください。
:::

![画像16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/96cb73ba-d8c4-1cfb-df57-e1f9c7b4b9cf.png)

### ダッシュボード共有
ダッシュボードの作成が完了したので共有していきます。
ダッシュボード画面右上の「アクション」→「ダッシュボードの共有」をクリックします。
![画像17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/97dd58bd-ff12-3681-27f1-e8e222bdf955.png)

3つの選択肢が表示されます。今回はEメールアドレスを登録したユーザーのみに共有したいので「ダッシュボードを共有し、ユーザー名とパスワードを要求する」の「共有を開始」をクリックします。
![画像18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/d2cebfb0-8a01-6c78-6407-c843a08f9ca6.png)

入力欄に登録するEメールアドレスを記入し、問題なければ「ポリシーを確認してプレビューする」をクリックします。
![画像19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/34a2a05a-6a9f-4dde-cf25-b4b6a83bd8dc.png)

登録したユーザーにアタッチするポリシーが表示されます。この場では編集できないので「ポリシーを受け入れ、共有可能なリンクを生成する」をクリックします。
![画像20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/e7e2e128-f962-d25a-0486-f94ea37112ca.png)

完了するとダッシュボード画面に戻り、画面上部に共有リンクコピーボタンが表示されるため、リンクをコピーし共有するユーザーにリンクを共有します。
![画像21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/a1ad4959-4f87-ef25-b80e-8ad9849ba369.png)

### 共有ダッシュボード確認
それではEメールアドレスを登録したユーザーで共有されたダッシュボードを確認していきましょう。
先ほど入力したEメールアドレス宛に、ログイン情報が記載されたメールが届きます。
![画像22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/10dd6c46-2043-f766-bca2-9338f297c33d.png)

共有ダッシュボードのリンクをブラウザで検索し、メールに記載されている情報を入力します。
![画像23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/edb3af58-06f7-b16a-c798-b69f9286b8ef.png)

:::note info
初回ログイン時はパスワード変更が求められるので変更を実施します。
:::

ログインに成功すると共有されたダッシュボードが確認できました！
![画像24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/dbc4fff0-70c5-eb6c-420e-d1fd3e29cf80.png)

### 補足
#### 後からダッシュボードの内容を変更しても、同一のリンクで参照可能
共有後にダッシュボードを編集しても、共有先ユーザーは同一のURLで参照可能です。

#### バージニア北部リージョンにCognitoユーザープールが作成される
Eメールアドレスで登録したユーザー情報は裏ではCognitoユーザープールで管理されています。
![画像25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/c1484499-0d5a-5e7f-2afa-7eabb8b5076b.png)

登録したユーザーを削除したい場合は、ユーザープールからユーザーを削除することで対応できます。
![画像26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/4e9a744a-ec2f-633c-c953-c4a4c05e5334.png)

#### 共有の停止、ダッシュボードの削除をしてもCognitoユーザープールは残る
実際に試してみましたが、各共有ダッシュボードは一つのユーザープールを見て認証を実施しているようです。
そのため、ダッシュボードの共有を停止もしくは削除したとしても、ユーザープールは残るということです。
![画像27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3984127/b24a7296-bc5b-5e78-2764-1f481d1c6fd0.png)

# まとめ
ダッシュボードの共有を実践してみました！
運用保守フェーズでは結構役に立ちそう:thinking:

# 参考文献
### リファレンス
* [Amazon CloudWatch ユーザーガイド -Amazon CloudWatch ダッシュボードの使用-](https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)
* [Amazon CloudWatch ユーザーガイド -CloudWatch ダッシュボードの共有-](https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/cloudwatch-dashboard-sharing.html)