LoginSignup
0
4

More than 5 years have passed since last update.

AWS 利用料金データ取得時のヒント

Last updated at Posted at 2018-09-01

AWS利用料金

利用料金を取得する際、APIを使って大まかな金額は取得できるようですが、請求ダッシュボードに表示されるアイテム単位での金額を取得しようとした際、APIで取得できる手段がない模様。
その為、請求レポートから出力されるCSVファイルから集計するしかなさそうです。
(もしありましたら教えてください。)

■事前作業

請求ダッシュボードの「レポート」「AWS のコストと使用状況レポート」にてS3に出力するように設定。
【設定例】

頻度:時間別
形式:text/csv
圧縮:GZIP

■作業日

アマゾン側の集計処理が毎月6日頃に終わりますので、7日以降に実施。

1.マニフェストファイル取得

マニフェストファイルを取得し、ファイル内に記載されいてるコストレポートのファイルパスを取得する。

S3://CostReport/20180501-20180601/CostReport-Manifest.json

の様に月毎にマニフェストファイルがS3へ作成される。

上記ファイルを取得する際、日別のフォルダー名「前月01日~当月01日」を指定する。
例)
2017年12月利用分取得時「20171201-20180101」
2018年03月利用分取得時「20180201-20180301」

2.コストレポートファイル取得

マニュフェストから「reportKeys」名をキーに、最新のコストレポートファイル名を取得。

"reportKeys":["/CostReport/20180501-20180601/XXXXXXXX-XXXX-YYYY-ZZZZ-AAAAAAAAAAAA/
CostReport-1.csv.gz"],

上記パスからCostReport-1.csv.gz圧縮ファイルを取得、解凍しCSVファイルCostReport-1.csvを生成。

取得したコストレポートファイルは、AWSサービスの利用内容によりますが、圧縮ファイルサイズが数十メガ 、解凍したCSVファイルが数百メガバイトのファイルになります。
(自分のところはCSVファイルが600 Mbyte以上ありました。)

1行目に項目名(100項目以上)、2行目以降がデータ行として数万行出力されており、テキストエディタやエクセルで開くとフリーズするのであまりお勧めしません。

3.あとはどうにかして集計する

請求書の計算方法は各社で違ってくる為なんともいえないですが、自分のところではコストレポートファイルをDB(SQLServer)に格納し集計、結果をエクセルに出力しています。

項目名が大量にありますが、集計のヒントとなる項目名は以下項目でしょうか。

インボイスID:bill/InvoiceId
アカウントID:bill/PayerAccountId
アイテム名:lineItem/LineItemDescription
使用量:lineItem/UsageAmount
使用量単位:pricing/unit
利用金額:lineItem/UnblendedCost

4.レート金額について

上記コストレポートはドル建てで出力されており、円建てで算出する際のレート金額は、
請求ダッシュボード「要約」「Amazon Web Services, Inc. - Service Charges」以下の
- 請求書 123456789 - AWS サービス: サブスクリプション料金
- 請求書 234567891 - AWS サービス: サブスクリプション料金
でリンクされているPDFファイルに出力されていますが、レート金額はインボイスID毎に変動しており、これもAPIで取得する方法がない。

その為、AWSコンソールにログインした状態で
ttps://console.aws.amazon.com/billing/rest/v1.0/bill?year=yyyy&month=mm

で年月を指定しスクレイピングすることで、jsonデータからレート金額(exchangeRate)が取得できます。
しかし、オフィシャルのページに書かれていませんので(たぶん)、いつまで使えるのか不明です。

※python+SQLServerで上記取り込み処理、エクセル出力処理を自動化したのですが、どこか買ってくれないかなあ。

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4