コスト管理の新機能「Data Export」で請求データをSQLでエクスポート可能になりました! #AWSreinvent

従来のCURが大幅に拡張され、非常に柔軟にコストや請求関連のデータをプログラマブルに扱えるようになるという意欲的なアップデートです。
2023.11.27

コスト管理データの新機能「Data Export」で、請求データの任意データをSQLでエクスポートできるようになりました!

絶賛re:invent2023が開催中の現在、多数のアップデートが出ています。今回は、請求周辺のData Exportという機能と、合わせてCUR 2.0が新規リリースされましたので、その内容を紹介していきます。

請求データあれこれできるのきたか…!!
  ( ゚д゚) ガタッ
  /   ヾ
__L| / ̄ ̄ ̄/_
  \/   /

Data Exportのアップデート公式情報とサマリー

アップデートはこちら。

今回Data Exportsの新機能で、SQLを利用して請求やコスト管理に関するデータをエクスポートできるようになりました。エクスポートデータは、BIやデータ分析で利用するためにS3バケットに定期的に配信することができ、既存のCost and Usage Reportと同じ情報が含まれています。

SQL形式でデータを選択することで、配信先に必要なデータのみを提供できるようになります。

もっと踏み込んだ利用方法が記載されている公式ブログはこちら。

以前より、ユーザーではCost and Usage Reports(CUR)を利用して、AWS提供の詳細なデータをエクスポートして受け取ることはできましたが、CURではエクスポートされたカラムはユーザーのAWS利用状況に応じて時間とともに変化し、その中のデータを制御することができませんでした。

Data Exportでは、CUR 2.0のエクスポートを作成することで、エクスポートする列を選択したり、ビジネスユニットのコストをフィルタリングしたり、特定データを非表示にしたりするなど、任意のクエリを請求データにかけることができます。

公式ドキュメントのユーザーガイドはこちら。

Data Exportが利用できるリージョン

AWS GovCloud(US)リージョンと中国リージョンを除く全てのAWSリージョンで利用可能です。

実際にData Exportを試してみる

2023年11月27日
現状、作成したDataExportを参照しようとすると、何故かマネコントップページにリダイレクトされます。そのため作成したDataExportをマネコンから編集できません。おそらくリリース直後でうまく動作していないようなので、その部分はブログに含まれていません。

というわけで、実際にData Exportを試してみます。

AWSのマネコンからBilling and Cost Managementを開くと、コスト分析とレポートセクションにData Export(データエクスポート)メニューが増えているのでクリックします。

そうすると、こんな感じでData Exportの初期画面が表示されるので、中央下の作成ボタンをクリック。

すると、データエクスポートの作成画面に遷移します。エクスポートタイプも複数から選択できますが、今回は標準データエクスポートを利用。

データエクスポート名を入力し、データテーブルコンテンツ設定で、実際にエクスポートする列を選択できます。

この列は全部で114種類あり、詳細は公式のCost and Usage Report (CUR) 2.0 - Data exportsより、参照可能。

列の選択結果は、このようなSQLとしてプレビューすることが可能。逆にSQLからデータエクスポオートを作成することも可能なので、組織間でクエリを共有するなり、CLIやSDKでメンテナンスするなどの用途にも使えます。

その他データテーブル配信オプションや配信先のデータエクスポートストレージ(S3バケット)を設定して、Data Exportを作成。そうすると、このようにData Exportが作成され、最初の一覧に追加されます。

抽出されたデータを確認する

抽出データの構造の公式ドキュメントはこちら。

Understanding export delivery - Data exports

抽出データのS3パスはこのようになっています。パスにexport-nameが含まれているので、エクスポート設定時のS3prefixをエクスポート名単位で分ける必要はなさそうです。

s3://[bucket-name]/[prefix]/[export-name]/data/[partition]/

しばらくすると、作成したDataExportの定義にしたがって、請求データがS3にエクスポートされます。プレフィックス下を覗くとこのようにdatametadataの2つのディレクトリが存在します。

metadata

エクスポートされたファイルのメタ情報がManifest.jsonとして格納されています。このファイルは、データがエクスポートされる都度更新され、以下の情報を含みます。

  • エクスポートした全ての列情報
  • エクスポートしたファイルパス
  • エクスポート日付

data

エクスポートデータ本体は、1つの実行結果を1つのファイル(gzip/csvまたはParquet)として、またはエクスポートが十分に大きくなった場合に複数の「チャンク」(別々のgzip/csvまたはParquetファイル)として配信されます。

  • gzip/csv形式の場合
    • -.csv.gz
  • Parquet形式の場合
    • -.snappy.parquet

自分の環境では、Parquet形式で MyFirstExport-00001.snappy.parquetと言うファイル名でエクスポートされていました。

請求データへの柔軟なアクセス方法を提供する意欲的なアップデート

これまで、CURを請求データの分析に使っていた組織もかなり多いと思いますが、このData Exportの機能を利用することで、より柔軟かつプログラマブルに請求データの管理が実現できそうです。大規模にAWSを利用している組織であれば、このデータを利用することで、管理上の手間が一気に省略できる可能性もありそうなので、請求データに興味があるかた、一度試してみてはいかがでしょうか。

それでは、今日はこのへんで。濱田(@hamako9999)でした。