AWSビリングのネタ、6回目。請求レポートCSVのナゾ編

6886

モビンギの幸道です。前回に引き続きAWSビリングのネタ6回目です。

連載の内容で請求レポートCSVから分解する方法などざっくり書いたところでしたが、そもそもRIに関してはAWSお任せな計算をしたくないことがあると思います。RIを再計算するときに請求レポートCSVの情報だけで判定する場合、公式ドキュメントに書かれていない部分が色々あります。今回、その部分の再計算方法について、お送りしたいと思います。

請求レポートCSVからRIを再計算するときに必要な作業って?

  • RIが適用されている対象レコードを探す。
  • 探し出したレコードからRIの適用条件に該当する情報を抽出する。
  • 探し出したレコードからRI適用の再計算を行う。

EC2の場合

プラットフォーム
インスタンスタイプ
リージョン

主に、この3つが必要になります。

ただ、この情報は請求データCSVにもproduct関係の項目として含まれていますが、RI適用分を再計算するには扱いにくい側面があります。例えばproduct/Operationとproduct/ProductFamilyで抽出しても、効率よく算出できない部分があります。

より効率のよい手順として以下の項目から判定していきます。

lineitem/ProductCode
lineitem/Operation
lineitem/LineItemType
lineitem/UsageType

1.ProductCode

EC2を対象にする場合、AmazonEC2になります。

2.Operation

RunInstances、または、RunInstances:[hoge]から絞り込みます。
この時、RIの再計算からスポットインスタンスは除外します。除外する際は、UsageTypeからより詳細な判定のためフィルタをかけます。

RunInstancesは、主にOnDemandの起動になります。
RunInstances:SV0001〜、この場合はスポットインスタンスを示しています。
その他のRunInstances:[xxxx]の場合、プラットフォームを示す番号になります。

主に以下の判定になり、変換することでプラットフォームの判別に使うことができます。

value platform detail
RunInstances Linux Amazon EC2 running Linux/UNIX
RunInstances:000g SUSE Linux Amazon EC2 running SUSE Linux
RunInstances:0002 Windows Amazon EC2 running Windows
RunInstances:0004 Linux+SQLStandard Amazon EC2 running Linux/UNIX with SQL Server Standard
RunInstances:0006 Windows+SQL Amazon EC2 running Windows with SQL Server Standard
RunInstances:0010 Red Hat Amazon EC2 running Red Hat Enterprise Linux
RunInstances:0100 Linux+SQLEnterprise Amazon EC2 running Linux/UNIX with SQL Server Enterprise
RunInstances:0102 Windows+SQLEnterprise Amazon EC2 running Windows with SQL Server Enterprise
RunInstances:0200 Linux+SQLWeb Amazon EC2 running Linux/UNIX with SQL Server Web
RunInstances:0202 Windows+SQLWeb Amazon EC2 running Windows with SQL Server Web
RunInstances:0800 Windows(licence) Amazon EC2 running Windows (Bring your own license)
RunInstances:S0001 Linux and Windows Linux and Windows

 

その他

|’RunInstances:SVxxxx’ | Operation of SpotInstance

 

3.LineItemType

サービスの利用料を集計するには、次の2つを対象にします。

DiscountUsage  -> RIが適用された請求レコード
Usage     -> 通常の請求レコード

以下は、前払い購入分などに該当します。

Fee
RIFee

その他、税額や返金

Tax
Refund
Credits

 

4.UsageType

UsageTypeのフォーマットは主には以下になります。サービスや課金対象によって異なるので若干のバラツキがあります。

[regionを示す省略表記]-[支払種別]:[インスタンスタイプ]

regionを示す省略記号:

APN1,USW2などあります。ただし、デフォルトのオレゴンregionの場合、省略されます。

支払種別:

BoxUsage        OnDemand or Reserved
HeavyUsage     Reserved
SpotUsage       Spot

インスタンスタイプ:

t2.micro,m3.medium,・・・・・

 

RIの再計算方法とは?

まずProductionCodeとOperationで対象のデータを絞り込みます。
LineItemTypeを用いて、DiscountUsageでフィルタをかけRIが適用されているレコードに絞り込みます。RIが適用されたレコードを抽出後、RI適用を解除した状態にします。この時、適用レートが0なので、インスタンスの価格表からOnDemandの単価を適用します。

次にRI購入データを元に、再割り当てを行います。
この時、RIの残期間と購入数から処理月の適用上限になる時間数を算出します。

算出した時間をプラットフォーム・リージョン・インスタンスタイプ毎に対象となるEC2インスタンスの利用時間に割当てます。

基本的にはAWSが1アカウント内で行なっているRIの割当ルールに沿って再適用することになります。
また適用した際に余剰が出た場合、係数に応じて上位サイズのインスタンスタイプへの適用を考慮することになります。

AWSによる計算イメージ。

実際のところ再適用作業はエクセルマクロなどプログラムを組まないとできない部分もあるので、手軽にできないのが実情かもしれません。

 

割当パターンいろいろ

固有の割当て方法に関しては、利用側各々の状況によると思いますが、良くあるケースとしては次の内容が多くあります。

  • 特定のアカウントだけにRIを割当てたい。
  • 複数購入したRIを数量単位で別アカウントに割当てたい。(コンソリ範囲に限り)
  • プロジェクト内でコスト管理を行いたいので特定の複数アカウント内で管理を区切りたい。

また、一括請求に変更してみたけどRIの管理は個別で行わないと経理処理に合わなくて困っている等々。

実務上で起きる割当イメージ。

 

AWSの利用料に関して、一般企業では月額利用料として経費処理されることが大半かもしれませんが、会計処理を細かく行っている場合、様々な要件が出そうな部分かもしれませんね。

 

最後に

連載を通してAWSのビリングレポートからRI管理まで足早に書いてみましたが、初心に戻るどころか色々アップデートする部分もありで、不足してる箇所も多々あったかもしれませんが参考になれば幸いです。

モビンギではAWSコストをタグ単位や任意のアカウント単位でまとめて管理できるMobingiWaveというツールを開発しています。
↓ご興味があれば、是非お問い合わせください↓

MobingiWave