モビンギの幸道です。前回に引き続き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の割当ルールに沿って再適用することになります。
また適用した際に余剰が出た場合、係数に応じて上位サイズのインスタンスタイプへの適用を考慮することになります。
実際のところ再適用作業はエクセルマクロなどプログラムを組まないとできない部分もあるので、手軽にできないのが実情かもしれません。
割当パターンいろいろ
固有の割当て方法に関しては、利用側各々の状況によると思いますが、良くあるケースとしては次の内容が多くあります。
- 特定のアカウントだけにRIを割当てたい。
- 複数購入したRIを数量単位で別アカウントに割当てたい。(コンソリ範囲に限り)
- プロジェクト内でコスト管理を行いたいので特定の複数アカウント内で管理を区切りたい。
また、一括請求に変更してみたけどRIの管理は個別で行わないと経理処理に合わなくて困っている等々。
実務上で起きる割当イメージ。
AWSの利用料に関して、一般企業では月額利用料として経費処理されることが大半かもしれませんが、会計処理を細かく行っている場合、様々な要件が出そうな部分かもしれませんね。
最後に
連載を通してAWSのビリングレポートからRI管理まで足早に書いてみましたが、初心に戻るどころか色々アップデートする部分もありで、不足してる箇所も多々あったかもしれませんが参考になれば幸いです。
モビンギではAWSコストをタグ単位や任意のアカウント単位でまとめて管理できるMobingiWaveというツールを開発しています。
↓ご興味があれば、是非お問い合わせください↓