博報堂テクノロジーズでインフラエンジニア・ITアーキテクトをしている森です。
近年、企業におけるクラウド利用はますます広がっており、マルチクラウドとしての利用も珍しくなくなってきました。
多くのクラウドサービスにはネイティブなコストダッシュボード機能が備わっており、例えば AWS のみを利用している企業であれば AWS 標準のコストダッシュボードで事足りるケースが多いでしょう。しかし、複数のクラウドサービスのコストを一つのダッシュボードで統合的に管理したい場合は、利用者側で仕組みを検討する必要があります。
私たちのチームでは、AWS、Google Cloud、Snowflake と3つのクラウドサービスを利用しています。本記事では、これらマルチクラウドのコストを一つのダッシュボードで管理する仕組みを「なるべく費用をかけずに」実現した事例としてご紹介します。
アーキテクチャ
まず結論から述べると、アーキテクチャ構成は以下の図のようにしています。(命名はすべて仮称です)

この構成を選定した理由と、実装手順を以降で説明します。
この構成を選定した理由
3つのクラウドのコストを1つのダッシュボードで見せるには、コスト情報(データ)を1か所に集約する方が管理しやすくなります。そのため、まず「どこにデータを集約するか」、次に「集約したデータをどのダッシュボードで表示するか」を検討しました。
データの集約先については、既に利用しているクラウドサービスを利用するか、新たに別のクラウドサービスを利用するかという選択肢があります。新たなクラウドサービスを利用すると、その分の管理コストが発生します。そのため、今回は既に利用しているクラウドサービスを利用することを前提としました。既に利用しているサービスの中であれば、どれを採用してもクラウド費用や管理負荷に大きな差はないと考え、ダッシュボードとの親和性も含めて最終的に判断することにしました。
ダッシュボードについては、Webアプリケーションとして独自に作ることもできます。しかし、AIを活用したとしても、認証・認可の仕組みまで作り込むことを考慮すると、相応の開発コストがかかることが想定されます。一方、SaaS の BI ツールを使えば、開発工数はほぼ不要になります。また、無償で利用できる BI ツールも存在しているため、この部分はコストインパクトが大きい判断ポイントになります。
BI ツールには「機能の範囲内のことしかできない」という制約がありますが、コストダッシュボードであれば、それほど複雑な機能は不要だと想定しました。もし機能が不足する局面が出てきた場合は、その時点で Web アプリケーション化を検討しても問題ないと考えました。
以上を踏まえ、ダッシュボードは Data Studio(旧 Looker Studio) を採用することにしました。Google アカウントを保持していれば無償で利用でき、かつ利用中の Google Cloud との親和性も高いためです。
また、ダッシュボードに Data Studio を採用する場合、データ集約先も Google Cloud のサービスを使う方が親和性が高いため、BigQuery を採用することにしました。
実装手順
① BigQuery へのデータ集約方法
AWS
- Cost & Usage Report(CUR)データ出力用の S3バケット を作成します。時間の経過とともに S3 上のデータが増えていくため、S3 ライフサイクルの設定も行います。
- [Billing and Cost Management feature] - [Data Exports] から定義を作成し、[Cost & Usage Report(CUR)] から S3 へ日次でデータを出力します。Data Exports の設定値は基本的にデフォルト(Standard data export / CUR 2.0)のままで問題ありません。
- レポートデータのデータレイアウトに従い、BigQuery のテーブルを作成します。
- S3 から BigQuery へ取り込むため、BigQuery Data Transfer Service の定義を作成します。データは全量洗い替え(WRITE_TRUNCATE)とします。BigQuery Data Transfer から AWS へのアクセスは現時点で Workload Identity 非対応のため、Access Key を使用します。
Google Cloud

Google Cloud のコストデータは、Cloud Billing ネイティブの BigQuery エクスポートを使うことで簡単に取り込めます。Cloud Billing の課金アカウント設定から「Cloud Billing データのエクスポート」を有効化し、エクスポート先の BigQuery データセットを指定するだけで、日次でコストデータが自動的に BigQuery のテーブルへ追記されます。
※エクスポートには「標準使用量コストデータ」と「詳細な使用量コストデータ(価格・プロモーション情報を含む)」の2種類があり、必要な粒度に応じて選択できます。
Snowflake
- Snowflake のコスト情報は Snowflake の管理データベースである [Snowflake] に存在します。
- Snowflake と Cloud Storage のストレージ統合(Storage Integration)を設定し、Snowflake から対象の Cloud Storage バケットを参照できるようにします。
- COPY INTO コマンドを定期実行するタスク(TASK)を登録し、日次でコストデータを Cloud Storage へ出力します。
- レポートのデータレイアウトに従って、BigQuery 側にテーブルを作成します。
- Cloud Storage から BigQuery への転送を日次で実行するよう、BigQuery Data Transfer Service で定義を作成します。
② ダッシュボード

ダッシュボードは、権限を付与するだけで誰でも見られる標準提供用と、個別要望に応じてカスタム提供するものを作成する方針にしました。

AWS、Google Cloud、Snowflake の3つのクラウドサービスについては、Data Studio のページをサービスごとに作成し、ページを切り替えられるようにすることで、1つのレポート(ダッシュボード相当)として実現しました。
おわりに
本記事では、AWS、Google Cloud、Snowflake のコストデータを BigQuery に集約し、Data Studio で可視化した実例をご紹介しました。マルチクラウド環境のコスト管理を、なるべく費用をかけずに実現する際の参考になれば幸いです。


