Amazon Web Services(AWS)は利用した分だけ請求が発生する従量課金のモデルを採用しています。日々の利用状況や請求額などは AWS が提供しているコスト管理ツールや、外部ツールを利用することにより確認することができます。一方、特定の部署やプロジェクトの指定期間での利用料金や、特定のインスタンスの利用料金といった異なる条件ごとの金額を把握したい場合には、より細かい利用データを取得しコストを算出する必要があります。詳細な利用データを取得するには、API から情報を取得する方法のほか、今回ご紹介する AWS が提供している Cost and Usage Report(コストと使用状況レポート。通称 CUR)の活用があります。
Cost and Usage Report とは
AWS が「最も包括的なコストと使用状況のデータ」と表しているように、CUR は AWS のコストに関する詳細かつ膨大なデータがまとめられているレポートデータです。CUR は AWS コンソールから出力の設定をすることにより利用できます。AWS の CUR に関するページから実際の設定画面に遷移するリンクが表示されています。
CUR は多くの情報を集約しているため、ファイルの容量が重く、CSV ファイルのままダウンロードして活用することは効率的ではありません。標準的な使用方法としては Amazon Simple Storage Service(Amazon S3)バケットにレポートファイルを配信し、そのデータを加工していく方法です。
CUR の特徴として以下が挙げられます。
- 1. 管理アカウントで設定をすると組織配下のすべてのアカウントの利用情報が取得でき
- 2. メンバーアカウント単位でも設定が可能
- 3. 時間別・日別から選択
- 4. 金額はドルで記載される
- 5. S3 への CSV の出力は月単位で分かれて出力される
CURから取得できる情報
CUR には全部で 300以上の項目が含まれており、新たな項目の追加や仕様変更もあります。そのなかでも、データ活用に有効と考える主要な項目を以下に記載します。
*AWSドキュメントの解説に関しては明細項目の詳細を参照しています。
CURの応用
条件に合わせてCURの特定項目を抽出したり、掛け合わせたりすることにより取得したい情報を確認することが可能です。ここではいくつかの例をご紹介します。
*以下の条件の組み合わせは一例のため、別の条件の組み合わせでも同様の結果を得られる場合があります。
1. 特定アカウントのオンデマンドの利用料を算出する。
- a. lineitem_usageaccountid でアカウントIDを指定
- b. lineitem_lineitemtype で Usage を指定
- c. a と b の条件に当てはまる lineitem_unblendedcost の合計金額
2. 特定アカウントのEC2のオンデマンド利用料を算出する。
- a. lineitem_usageaccountid でアカウントIDを指定
- b. lineitem_lineitemtype で Usage を指定
- c. lineitem_productcode で Amazon EC2 を指定
- d. a と b と c の条件に当てはまる lineitem_unblendedcost の合計金額
3. 特定のインスタンスの使用量を算出する。
- a. lineitem_resourceid でインスンタスのIDを指定する。
- b. a の条件に当てはまるlineitem_usageamount の合計金額
まとめ
正確なコストを把握、分析、最適化することは、費用がブラックボックス化しやすいクラウドの利用においては非常に重要です。CUR を上手く活用することにより、詳細なコストと利用状況のデータを、さまざまな粒度やまとまりで把握することができます。クラウドベンダーの純正ツールや外部ツールと併せて活用し、効率的なコストの把握に役立てましょう。