メンバーズ CUR でやってみよう!Cloud Intelligence Dashboards カスタマイズ編
今回は メンバーズ版 CUR を利用して作成した Cloud Intelligence Dashboards(CID)に 実装ガイドで紹介されているカスタマイズを試していきます。
※ ちなみに CID のドキュメントが workshop studio から実装ガイドにお引っ越しましたね
検証項目はガイドで紹介されている中の以下となります。
- 分類の追加(アカウント名の追加、コスト配分タグの追加)
- ダッシュボードの編集(文言変更)
- 通貨の追加
完成イメージ:
事前準備
メンバーズ版 CUR を利用した CID の作成はこちらをご参照ください。
CUDOS Dashboard v5 がデプロイされていれば準備完了です。
検証
分類追加
ここでは下記2つのカスタマイズを行なっていきます。
- アカウント名の追加
- コスト配分タグの追加(コスト配分タグの情報が CUR にある前提)
レガシー CUR(メンバーズ版 CURも同じ仕様)ではアカウント名の情報が存在しないため CID ではアカウント ID が表示されています。またデフォルトではコスト配分タグはコントロールとして設定されていません。
アカウント名を表示するにはマッピング情報を更新する必要があります。
方法は以下の2つがあります。今回は静的アカウントマップを採用します。
- AWS Organizations データに基づくアカウントマップ
- 静的アカウントマップ
- Athena へ移動 -> account_map -> クエリを表示/編集
- バックアップ作成用 SQL を実行
CREATE OR REPLACE VIEW "account_map_original" AS
SELECT DISTINCT
line_item_usage_account_id account_id
, MAX_BY(bill_payer_account_id, line_item_usage_start_date) parent_account_id
, MAX_BY(line_item_usage_account_id, line_item_usage_start_date) account_name
, MAX_BY(line_item_usage_account_id, line_item_usage_start_date) account_email_id
FROM
"cid_cur"."cur"
GROUP BY line_item_usage_account_id
- account_map 更新用 SQL を実行
VALUES
にアカウントIDとアカウント名の情報を記載します
CREATE OR REPLACE VIEW account_map AS
SELECT *
FROM
(
VALUES
ROW ('111111111111', 'Account1')
, ROW ('222222222222', 'Account2')
, ROW ('333333333333', 'Account3')
) ignored_table_name (
account_id, --mandatory
account_name --mandatory
)
- CloudShell からコマンドでダッシュボードを更新
選択しながら進めます。
途中でコスト配分タグ(cm_billing_group)の追加も合わせて確認されるため、追加します。
$ pip3 install --upgrade cid-cmd
$ cid-cmd update --force --recursive
〜 中略 〜
? [dashboard-id] Please select dashboard from the list: CUDOS Dashboard v5 (cudos-v5)
? [athena-database] Select AWS Athena database to use as default: cid_cur
? [athena-workgroup] Select Amazon Athena workgroup to use: CID
? [cur-table-name-and-db] Please select CUR table: cid_cur.cur
? Enter Cost Allocation Tags to be added to datasets(WARNING: this can affect performance. Choose only the strict minimum)
✔ Looks good
--- Selected Items ---
--- Selected Items (empty) ---
--- Items Available To Add ---
❯ tag_cm_billing_group
? Enter Cost Allocation Tags to be added to datasets(WARNING: this can affect performance. Choose only the strict minimum)
❯ ✔ Looks good
--- Selected Items ---
✓ [1] tag_cm_billing_group
? [timezone] Please select timezone for datasets scheduled refresh.: Asia/Tokyo
? [dataset-resource-view-override] The existing dataset is different. Override?: proceed and override
? Select taxonomy fields to add as dashboard filters and group by fields
❯ ✔ Looks good
--- Selected Items ---
✓ [1] payer_account_id
✓ [2] account_id
✓ [3] account_name
✓ [4] tag_cm_billing_group
#######
####### CUDOS Dashboard v5 is available at: https://ap-northeast-1.quicksight.aws.amazon.com/sn/dashboards/cudos-v5
#######
~ $
アカウント名が更新されました。
続いて、コスト配分タグ(Cm Billing Group)が追加されました。
ダッシュボード編集
続いては、既存のダッシュボードをコピーして、編集可能にした上で、ダッシュボードの内容をカスタマイズしていきます。
ここでは、下記を目標にします。
- ダッシュボード内の文言変更(英語部分を日本語へ)
というのも CID は英語表記となっています。
翻訳に関してはガイドのよくある質問でも言及されています。
ダッシュボードを別の言語に翻訳できますか?
ダッシュボードを他の言語に翻訳することは大きな課題です。ダッシュボードからQuickSight分析を生成し、レコメンデーションのタイトルや静的テキストを調整することは理論的には可能ですが、ダッシュボードを完全に翻訳するのは非常に複雑な作業です。ダッシュボードはコストと使用状況レポートのフィールドを使用しており、これらのフィールドには英語の値が含まれています。ダッシュボードは組み込みフィルターや計算フィールドのロジックでこれらの値に大きく依存しており、自動翻訳の大きな障害となっています。
引用元:https://docs.aws.amazon.com/guidance/latest/cloud-intelligence-dashboards/faq.html#customization
こちらの手順に沿って、ダッシュボードのいくつかの部分を日本語に変更していきます。
- 分析として別名で保存
- 新しい分析が表示
- 文言を編集
-
(コントロール)3点リーダー -> 編集 -> タイトル
-
(ビジュアル)ビジュアルのフォーマット -> ディスプレイ設定 -> タイトルを編集 -> 変更後に保存
-
(その他)カーソルを合わせて編集
- ダッシュボードの公開
- 画面右上の
公開
を選択して、名前をつけて公開します。
文言の変更が出来ました!
無事にデフォルトの CID から文言(英語から日本語)を変更することができました。全てを手作業で実施するには少し負荷が高そうですが、実現可能ということはわかりました。
通貨追加
最後に以下の手順で、為替レートと通貨コントロールを追加していきます。
- 為替レート(ドルに対する)ファイルを用意
ガイドにあるファイルをダウンロードして、こちら のサイトから $ と ¥ に関する月中平均をファイルへ記載します
Month,CurrencyConversionRate
2025-01-01,156.86
2025-02-01,151.96
2025-03-01,149.27
2025-04-01,144.27
2025-05-01,144.92
2025-06-01,144.42
2025-07-01,146.83
2025-08-01,148.31
- CUR を出力しているバケットに以下のフォルダを作成してファイルをアップロードします
s3://cid-{account_id}-shared/CurrencyConversionRate
- 外部テーブル作成用 SQL を実行
※ LOCATION
は適宜修正してください。
CREATE EXTERNAL TABLE IF NOT EXISTS currencyconversionrate (
Month date,
CurrencyConversionRate double
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES ('field.delim' = ',')
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://cid-{account_id}-shared/CurrencyConversionRate'
TBLPROPERTIES (
'classification' = 'csv',
'skip.header.line.count' = '1'
);
- QuickSight -> データセット -> summary_view -> 編集 -> データを追加 -> データソース -> CID-Athena -> currencyconversionrate を選択
- 「summary_view」テーブルの「billing_period」列と「currencyconversionrate」テーブルの「month」列を結合 -> 保存して公開
-
QuickSight -> 分析 -> 作成済みの分析を選択 -> データ -> パラメータ を作成
-
パラメータをコントロールとして追加
-
コントロールに合わせて表示が切り替わるように設定
計算フィールドの値が NULL だと構文エラーとなったので 0 に変更
switch( ${Currency},
"$", {unblended_cost},
"¥", {unblended_cost} * {currencyconversionrate},
0
)
- ダッシュボードの公開
-
通貨($)バージョンの表示
-
通貨(¥)バージョンの表示
為替を確認します。
千単位での表記にしているため、多少の誤差はありますが良さそうですね。
# 為替ファイル
2025-06-01,144.42
2025-07-01,146.83
# 通貨($)表示
2025-06, 0.07K
2025-07, 0.09K
# 通貨(¥)表示
2025-06, 10.11K・・・144.42 * 0.07
2025-07, 13.18K・・・146.83 * 0.09
最後に
今回はメンバーズ CUR で作成した CID に実装ガイドで記載されているカスタマイズをいくつか検証してみました。
結果としては、問題なく利用(カスタマイズ)が可能でした。
CID を利用したいが、どうしても譲れない自社の要件がある場合には、カスタマイズすることで要件を満たせないかを検証してみるのも良いかもしれません。記事中にも記載した通り、ダッシュボード(分析)をコピーして変更を加える場合、CID のアップデートなどへの追従が難しくなる可能性がある点にはご注意ください。