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ドキュメントの解説 | 補足 |
---|---|---|
payer | 管理アカウントの ID | |
bill_invoiceid | 請求の ID。実際に AWS から発行される請求書の Invoice numberとそれぞれの明細項目が一致します。 | |
lineitem_usageaccountid | この明細項目を使用したアカウントの ID。組織の場合、これは管理アカウントまたはメンバーアカウントのいずれかになります。このフィールドを使用して、アカウント別のコストや使用状況を追跡することができます。 | |
lineitem_lineitemtype | この明細項目の対象となる請求の種類。以下の種類が対象となります。 | 項目の例 Credit — AWS が請求に適用するクレジット DiscountedUsage — リザーブドインスタンス(RI)の割引が効いている項目 Fee — サブスクリプションに支払った前払い年間料金。 Refund — AWS からの返金。 RIFee — サブスクリプションの定期的な月額料金。 Tax — 税金。 Usage — オンデマンドインスタンスレートで課金される使用料金。 SavingsPlanUpfrontFee — Savings Plans を購入した場合の前払い料金。 SavingsPlanRecurringFee — 前払いなしまたは一部前払い Savings Plans に対応する時間ごとの定期的な料金。 SavingsPlanCoveredUsage— Savings Plans の対象となるオンデマンドコスト。Savings Plans の対象となる使用量明細項目は、対応するSavings Plans 否定項目によって相殺されます。 |
lineitem_usagestartdate | 明細項目の開始日時は UTC で表されます (その時刻を含む)。形式は YYYY-MM-DDTHH:mm:ssZ です。 | |
lineitem_usageenddate | 対応する明細項目の終了日時は UTC で表されます(その時刻は含まない)。形式は YYYY-MM-DDTHH:mm:ssZ です。 | |
lineitem_productcode | 測定された製品のコード。たとえば、Amazon EC2 は、Amazon Elastic Compute Cloud の製品コードです。 | |
lineitem_usagetype | この明細項目の使用状況の詳細。たとえば、USW2-BoxUsage:m2.2xlargeは、米国西部 (オレゴン) リージョンの M2 ハイメモリダブルエクストララージインスタンスについて説明します。 | |
lineitem_operation | この明細項目の対象となる特定の AWS オペレーション。これは、明細項目の特定の使用状況を表します。たとえば、RunInstances の値は Amazon EC2 インスタンスのオペレーションを示します。 | |
lineitem_availabilityzone | この明細項目をホストするアベイラビリティーゾーン。例えば、us-east-1a、us-east-1b などです。 | |
lineitem_resourceid | (オプション)レポートに個々のリソース ID を含めることを選択した場合、この列にはプロビジョンしたリソースの ID が表示されます。 | |
lineitem_usageamount | 指定した期間に発生した使用量。 | |
lineitem_normalizationfactor | インスタンスがテナンシーを共有している限り、AWSは、インスタンスファミリー内のすべてのインスタンスサイズに対して、Linux または Unix の Amazon EC2 および Amazon RDS RI 割引を適用できます。AWSリージョン。これは、組織内のメンバーアカウントの RI 割引にも適用されます。すべての新規および既存の Amazon EC2 および Amazon RDS サイズ柔軟な RI のサイズは、インスタンスサイズに基づいて正規化係数により決定されています。AWS が各インスタンスサイズに適用する正規化係数を次の表に示します。 | |
lineitem_unblendedrate | 特定の使用のための結合されていない割合。明細項目に RI 割引が適用されている場合、UnblendedRate は 0 です。RI 割引が適用されている明細項目は、LineItemType が Discounted Usage です。 | |
lineitem_unblendedcost | UnblendedCost は、UnblendedRate に UsageAmount を乗じた値です。 | |
lineitem_lineitemdescription | 明細項目タイプの説明。たとえば、使用料の明細項目は、特定の期間に発生した使用タイプを要約したものです。 | |
lineitem_netunblendedrate | サイズ柔軟な RI の場合、説明は、利点が適用された RI に対応します。たとえば、明細項目が t2.micro に対応し、t2.small RI がその使用に適用された場合、lineitem/description には t2.small と表示されます。 | |
lineitem_legalentity | RI 割引が適用された使用料の明細項目の説明には、明細項目の対象となる料金プランが含まれています。 | |
pricing_publicondemandcost | 明細項目をオンデマンドコストとして計算した場合の金額 | |
reservation_endtime | - | RI の期限切れ日時 |
reservation_reservationarn | - | RI の ARN。購入したそれぞれのRI 固有の ID のようなものです。 |
reservation_starttime | - | RI の期限開始日時 |
savingsplan_savingsplanarn | - | Savings Plans のARN。購入したそれぞれの Savings Plans 固有の ID のようなものです。 |
savingsplan_starttime | - | SP の開始時間日時 |
savingsplan_endtime | - | SP の期限日時 |
*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 を上手く活用することにより、詳細なコストと利用状況のデータを、さまざまな粒度やまとまりで把握することができます。クラウドベンダーの純正ツールや外部ツールと併せて活用し、効率的なコストの把握に役立てましょう。
執筆者
Rena Mochizuki
Principal Customer Success Manager