AWS Cloud Intelligence Dashboards を使ってFinOpsで役立つQuickSightダッシュボードをサクッと展開
QuickSight を使ったコスト可視化・運用を進めようとしていますが、 「 ダッシュボードを一から作るのってめちゃめちゃ大変だな… 」 って実感してます。 CURの列情報を把握したり、Athenaクエリを作成したり、 ダッシュボードを良い感じに見せる作業など。 やることがとても多いです。
車輪の再発明はしたくないなと思い、 色々調べていたら Cloud Intelligence Dashboards というフレームワークを見つけました。 これはAWSコスト/使用量を可視化できる オープンソースのフレームワークであり、 AWS社員によって継続的に開発・保守されています。 CloudFormationもしくはコマンドラインから、 簡単にQuickSight環境へデプロイできるとのこと。
画像引用: Cloud Intelligence Dashboards Framework - Workshop Studio
ダッシュボードもたくさん用意されていて便利そうです。
Foundational Dashboards 一覧を引用。上記含め 20以上のダッシュボードが提供されている
今回はこの Cloud Intelligence Dashboards (のうち、 Foundational の3つ) を実際に展開してみました。 結論からいうと、とても良いソリューションです。 基本的にはこのダッシュボードからインサイトを得たり、 コスト最適化活動をプロセス化していくのがいいのでは、と感じました。
以降で 展開した際の手順をまとめます。 ※ 基本的には公式ガイド Deployment in Global regions のとおりに、問題なく展開できました。
0. 概要と事前準備
デプロイプロセスは以下3ステップあります。
画像引用: Deployment in Global regions - Workshop Studio
- S3バケットとAthenaテーブルを [データ収集アカウント] に展開する
- Data Exports と S3バケット、レプリケーションポリシーを [ソースアカウント(1つ以上)] に展開する
- Cloud Intelligence Dashboards スタックを [データ収集アカウント] に展開する
各ステップ実施前に以下を確認します。
- リージョンを選択する: 全スタックを同一リージョンに展開します
- データ収集アカウントを定義する: 管理アカウントとは別に作成/選択することが推奨されています
- 権限を確認する: CloudFormationスタック展開権限があることを確認します
今回は以下のような環境で展開しました。
- 1つの AWS Organizations 組織内にある 管理アカウントとデータ収集アカウントを使用
- 東京リージョンに展開
1. CUR集約用の宛先作成
データ収集アカウント にログインします。
公式ガイドにある [Launch Stack] をクリックして CloudFormationスタック作成画面に移動します。
スタックのクイック作成
Destination Account Id
と Source Account Ids
のみ書き換えます。 それ以外は既に埋まっている値のままでOKです。
パラメータ設定その1
パラメータ設定その2
デプロイ後、以下のようなリソースが作成されていることを確認しました。
2. CUR2.0とレプリケーション作成
ソースアカウント(管理アカウント) にログインします。
同じように 公式ガイド にある [Launch Stack] をクリックして CloudFormationスタック作成画面に移動します。
スタックのクイック作成
Destination Account Id
を記載します。 エクスポート設定は「ステップ1で設定したものと一致」 している必要がある点に注意ください。
パラメータ設定その1
パラメータ設定その2
デプロイ後、以下のようなリソースが作成されていることを確認しました。
CUR 2.0 として cid-cur2
が作成されています。
3. ダッシュボード展開
以降は データ収集アカウント 上の作業です。
3.1 - QuickSight の準備
QuickSight をセットアップします。 今回は既に QuickSigh を有効化している環境であるため、 具体的な手順は割愛します。
もし有効化されていない環境の場合は 公式ガイドの 3.1 - Prepare Amazon QuickSight を参照ください。
3.2 - ダッシュボードのデプロイ
デプロイ方法は2025/05/28時点で CloudFormation もしくは コマンドラインの2つが用意されています。 今回はコマンドラインを使ったデプロイを実施します。 cid-cmd と呼ばれるツールを使って展開します。
AWS CloudShell を開きます。
まず pip3 install --upgrade cid-cmd
を実行して cid-cmdをインストールします。
pip3 install --upgrade cid-cmd
# Defaulting to user installation because normal site-packages is not writeable
# Collecting cid-cmd
# Downloading cid_cmd-4.1.5-py2.py3-none-any.whl (222 kB)
# |████████████████████████████████| 222 kB 10.0 MB/s
# ...略...
# Successfully installed InquirerPy-0.3.4 cid-cmd-4.1.5 pfzy-0.3.4 prompt-toolkit-3.0.51 tqdm-4.67.1 wcwidth-0.2.13
#
# ~ $ which cid-cmd
# ~/.local/bin/cid-cmd
cid-cmd --help
# CLOUD INTELLIGENCE DASHBOARDS (CID) CLI 4.1.5
#
# Usage: cid-cmd [OPTIONS] COMMAND [ARGS]...
#
# Options:
# --profile_name, --profile TEXT AWS Profile name to use
# --region_name TEXT AWS Region
# --aws_access_key_id TEXT
# --aws_secret_access_key TEXT
# --aws_session_token TEXT
# --log_filename TEXT log file name
# -v, --verbose
# -y, --yes confirm all
# --help Show this message and exit.
#
# Commands:
# cleanup Delete unused resources (QuickSight datasets, Athena...
# create-cur-proxy Create CUR proxy - an Athena view that transforms...
# create-cur-table Initialize CUR table
# csv2view Create account sql code from CSV file
# delete Delete Dashboard and all dependencies unused by other...
# deploy Deploy Dashboard
# export Export Dashboard
# init-qs Initialize Amazon QuickSight
# map Create account mapping
# open Open Dashboard in browser
# share Share QuickSight resources (Dashboard, Datasets,...
# status Show Dashboard status
# teardown Delete all CID assets
# update Update Dashboard
デプロイは各ダッシュボード単位で実施します。 まずは CUDOS ダッシュボードをデプロイしていきます。 cid-cmd deploy --dashboard-id cudos-v5
を実行すると、 以下のようなウィザードが始まります。
cid-cmd deploy ウィザード画面
以下のように質問に答えていきます。
ウィザードの質問 | 入力値 |
---|---|
[athena-workgroup] Select Amazon Athena workgroup to use | CID (create new) |
[quicksight-datasource-id] Please choose DataSource (Select the first one if not sure) | CID-CMD-Athena <CREATE NEW DATASOURCE> |
[quicksight-datasource-role] Please choose a QuickSight role. It must have access to Athena | CidCmdQuickSightDataSourceRole <ADD NEW ROLE> |
[athena-database] Select AWS Athena database to use as default | cid_data_export |
[quicksight-owner-choice] You have not provided quicksight-user or quicksight-group. Do you what your objects to be owned by a user or a group? | select group |
[quicksight-group] Please select QuickSight Group to use | quicksight-admin ※既存環境にあるQuickSight管理者用グループを指定 |
[cur-table-name-and-db] Please select CUR table | cur2 |
[timezone] Please select timezone for datasets scheduled refresh. | Asia/Tokyo |
デプロイに成功すると Congratulations!
とメッセージがでます。 最後にダッシュボードをアカウント内で共有するかの選択があります。
# ...略...
? [timezone] Please select timezone for datasets scheduled refresh.: Asia/Tokyo
Dataset "hourly_view" created
Creating dataset: resource_view
Detected views: account_map
Missing views: resource_view
Dataset "resource_view" created
Creating dataset: summary_view
Detected views: account_map
Missing views: ri_sp_mapping, summary_view
Dataset "summary_view" created
Using dataset summary_view: d01a936f-example
Using dataset hourly_view: 78f4cc36-example
Using dataset resource_view: ce8e358c-example
Deploying dashboard cudos-v5
#######
####### Congratulations!
####### CUDOS Dashboard v5 is available at: https://ap-northeast-1.quicksight.aws.amazon.com/sn/dashboards/cudos-v5
#######
? [share-with-account] Share this dashboard with everyone in the account?: yes
Sharing complete
QuickSighを確認するとダッシュボードが展開されていました!
※ CURおよびデータセットの更新がされていないため、デプロイ直後は「データなし」がたくさん
同じような流れで残り2つのダッシュボードを展開します。 cid-cmd deploy
を実行すると、 最初に「どのダッシュボードを展開するか」を選べます。
Cost Intelligence Dashboard と KPI Dashboard を順番に展開していく
無事 3つのダッシュボードを展開できました。
内容を確認する
- データ収集アカウントにCURがレプリケーションされるのに約24時間 (最大72時間)
- QuickSight データセットの更新が 24時間ごと
といった条件があるので、 ダッシュボードにデータが反映されるまで、 少し待つ必要があります。
私の場合は2日後に確認すると、データが見れていました。
CUDOS Dashboard v5
作られているシートは以下のとおり。
- Exective: Billing Summary
- Exective: RI/SP Summary
- Exective: MoM Trends
- Compute
- Storage & Backup
- Amazon S3
- Databases
- Amazon DynamoDB
- Messaging and Streaming
- Data Transfer & Networking
- AI/ML
- Monitoring & Observability
- Analytics
- Security
- End User Computing
- GameTech & Media
- TAGsplorer
- OPTICS Explorer
- (About)
包括的なダッシュボードから、 リソースレベルの粒度までドリルダウンできるダッシュボードまで揃っている、 一番汎用的なダッシュボードに感じました。
実際の Security タブの内容をキャプチャします。 セキュリティサービスのコスト状況が可視化されてますね。
ただ、CURが作成されたばかりということもあり、 自環境では「データなし」なものが多いのが現状です🙇♂️
以下 デモサイトにサンプルがあります。 それぞれのシートの内容を把握したい場合はそちらをご覧ください。
画像引用: https://cid.workshops.aws.dev/demo?dashboard=cudos
Cost Intelligence Dashboard
作られているシートは以下のとおり。
- Billing Summary
- Cost Summary
- Compute Summary
- Storage Summary
- RI/SP Summary
- Expiring RI/SP Tracker
- OPTICS Explorer
- MoM Pivot
- (Summary of Changes)
- (About)
CUDOSに比べるとより上位レイヤーのダッシュボードが揃っています。 AWSサービスに関する技術的な理解はそこまで必要ではありません。
実際の Billing Summary タブの内容をキャプチャします。
同じく、詳細はデモサイトを参照ください。
画像引用: https://cid.workshops.aws.dev/demo?dashboard=cid
KPI Dashboard
作られているシートは以下のとおり。
- KPI Tracker
- Set KPI Goals
- Metrics Summary
- EC2
- EBS
- S3
- RDS
- Other Graviton
- Commit Optimizations
- (About)
[Set KPI Goals] シートにて、各種 KPI をカスタマイズできます。
Set KPI Goals シート
KPI Tracker シート(画像引用: https://cid.workshops.aws.dev/demo?dashboard=kpi)
補足: CUR バックフィル
CURを新しい設定で再生成する機能(バックフィル)があります。 過去分、最大 36ヶ月のコストデータを取得して ダッシュボードに反映させたいときに使えます。 バックフィルは 管理アカウントからサポートケースを開くことでリクエストできるみたいです。
You can now create a Support Case , requesting a backfill of your reports (CUR or FOCUS) with up to 36 months of historical data. Case must be created from your Source Account (typically Management/Payer Account). If you are using multiple Management/Payer Accounts, the support ticket must be created in each.
おわりに
Cloud Intelligence Dashboards を触ってみました。 非常に便利に感じます。 コスト削減のネタ探しから、 長期的なコスト振り返りまで、 カバーしている範囲が広いです。
「基本的にはこのダッシュボードを使って、 個別のユースケースがあればカスタマイズしたダッシュボードを作っていく」 といった流れがいいのでは、と感じました。
他にも多くのダッシュボードを追加で入れられるので、 気になった方は ダッシュボード一覧 を確認ください。
以上、参考になれば幸いです。