💰

【AWS】CUDOS Dashboard をデプロイしてみる【コスト可視化】

2024/11/08に公開

はじめに

Cost and Usage Dashboards Operations Solution(CUDOS)と呼ばれるコスト可視化のためのダッシュボードをデプロイしてみます。Cost Explorer でよいのでは?と思う方もいらっしゃると思いますが、主に複数 Organizations のコストをまとめて可視化できる点と Cost and Usage Reports(CUR) を利用したリソースレベルでの可視化が特長かと思います。CUDOS の利点は以下の AWS 公式ブログが参考になります。

https://aws.amazon.com/jp/blogs/news/aws-costdashboard-usecases-cud-cudos/

下図にあるように、各 Organizations の管理アカウントで CUR を出力し、可視化のために集約する AWS アカウント(Data Collection Account)の S3 バケットにレプリケーションを行い、Glue Crawler で CUR をクロールし Glue Data Catalog を作成し、Athena + QuickSight で可視化するというソリューションになっています。


https://catalog.workshops.aws/awscid/en-US/dashboards/foundational/cudos-cid-kpi より引用

ダッシュボードのサンプルはこちらから参照できます。

デプロイ

以下のページに沿って実施します。

https://catalog.workshops.aws/awscid/en-US/dashboards/foundational/cudos-cid-kpi/deploy

Step1:[Data Collection Account] S3 バケットと Athena テーブルのデプロイ

Data Collection Account(QuickSight をデプロイしたいアカウント)にログインし、以下にある Launch Stack より Cloudformation テンプレートをデプロイします。

https://catalog.workshops.aws/awscid/en-US/dashboards/foundational/cudos-cid-kpi/deploy#step-1.-data-collection-account-create-destination-for-cur-aggregation

パラメータは Destination (Data Collection) Account IdSource Account Ids (Comma separated list) のみ変更しています。

数分でデプロイが終わります。

Step2:[Management Account] Data Exports と Data Collection Account へのレプリケーション設定

集約元となる 各 Organizations の管理アカウント にログインし、以下にある Launch Stack より Cloudformation テンプレートをデプロイします。

https://catalog.workshops.aws/awscid/en-US/dashboards/foundational/cudos-cid-kpi/deploy#step-2.-in-managementpayersource-account-create-cur-2.0-and-replication

パラメータは Destination (Data Collection) Account Id のみ変更しています。

デプロイが完了すると、Data Exports を設定する Custom Resource(Lambda)と出力先の S3 バケットが作成されていました。S3 バケットには Data Collection Account へのレプリケーション設定がされています。

蛇足ですが、現在は Cloudformation のリソースが用意されているようなので、Custom Resource は不要かもしれません。
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-bcmdataexports-export.html

注意点として、Data Exports は設定以降のデータしか出力されませんが、以下にあるようにサポートケースを各 Organizations の管理アカウントから起票することで 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 each of your Source Accounts (Typically Management/Payer Accounts).

https://catalog.workshops.aws/awscid/en-US/dashboards/foundational/cudos-cid-kpi/deploy#backfill-data-export

Step3:[Data Collection Account] ダッシュボードのデプロイ

Step3.1:QuickSight の準備

QuickSight を利用したことがない AWS アカウントだったので、QuickSight にサインアップを選択します。

リージョン間のデータ転送量が発生しないように QuickSight リージョンが Cloudformation テンプレートをデプロイしたリージョンと同じリージョンであることを確認しておきましょう。

CUDOS には不要なので、ピクセルパーフェクトレポートを追加 のチェックを外しておきます。他はデフォルト値で進めます。(認証方法は QucikSight の削除をしないと変更できないので、慎重に検討してください。)

デプロイ手順上は、After pressing the Sign up button you will be presented with 2 options, please ensure you select the Enterprise Edition during this step と記載がありますが、クラスメソッドさんの以下記事にあるとおり GUI から有効化する場合はスタンダードエディションの選択肢が出ずにデフォルトでエンタープライズエディションとなります。
https://dev.classmethod.jp/articles/quicksight-new-subscription/

Step3.2:ダッシュボードのデプロイ

以下にある Launch Stack より Cloudformation テンプレートをデプロイします。

https://catalog.workshops.aws/awscid/en-US/dashboards/foundational/cudos-cid-kpi/deploy#3.2-deploy-dashboards

下図の上から 3 つのパラメータを変更します。

必要に応じてデプロイするダッシュボードを変更します。

他はデフォルトのまま Stack を作成します。

デプロイが完了すると、Athena Workgroup、S3 バケット、Glue Table、Glue Crawler、QuickSight Datasets、ダッシュボードが作成されます。

QuickSight にアクセスするとダッシュボードが作成されています。(デフォルトのままデプロイしたので CUDOS 以外のダッシュボードも作成されています。)

ダッシュボードのデプロイは Custom Resource で行っており、Lambda のログを見ると https://github.com/aws-samples/aws-cudos-framework-deployment からダッシュボードの定義を取得してデプロイしているようです。

CUDOS Dashboard v5 を選択すると以下のような画面が表示されます。CUR を作成してから 24~48 時間経過しないと初回データが出力されないようなので、時間を置いて見てみてください。QuickSight のデータセット更新が AM2:00(JST)、Glue Crawler が AM11:00(JST) に起動するようになっているので、業務開始時間前に変更しておくのが良いと思います。

S3 に CUR のデータが出力されていても QuickSight の表示が変わらない場合は、Glue Crawler の手動実行と QuickSight のデータセット更新を行ってみてください。

ダッシュボードを編集するには、共有ダッシュボードの共有 から編集させたいユーザに 「名前を付けて保存」を許可 を有効化する必要があります。

別名で保存 を選択すると以下のように編集して新しいダッシュボードとして用意することが可能です。

以上

Discussion