LoginSignup
5
5

More than 5 years have passed since last update.

AWSの請求情報を攻めてみた

Last updated at Posted at 2015-02-20

動機

Hubotに過去のAWS料金なんかの問い合わせが出来るようにしたい。
そのためにはなにが必要なのか?

事前情報

CloudWatchから取得するかCSVから取得するという手段があるようだ。
SDKから直接この情報は取り扱えないらしい(?)

CloudWatchの情報は見たところ知りたい情報が揃ってなかったので、CSVとしてS3に吐出される情報をソースにしたい。

Lambdaは使えないのか?

S3にそのファイルがアップされたらRDSに保存するっていうのも考えたのだが、請求詳細を解凍してみたら100MB超えてたので(うちはいっぱいAWS使っている)60秒でちゃんと入れ終わるかは微妙すぎた。

請求詳細ファイルについて

AWS Detailed Billing Reports で時間単位の利用量をチェック!

クラウドパックさんの記事でかなり分かりやすく説明されている。

この記事でも触れられているが

謎カラム一覧
RateId
SubscriptionId
PricingPlanId

この3つが謎だ。
PricingPlanIdについてはちょっと気になったのでCSVをDBに流し込んで調べてみた。

PricingPlanId プロダクト名 内容
376398 Amazon Elastic Compute Cloud t1.micro リザーブドインスタンス(ap-northeast-1a)
376404 Amazon Elastic Compute Cloud m1.medium リザーブドインスタンス(ap-northeast-1a)
376413 Amazon Elastic Compute Cloud m1.small リザーブドインスタンス(ap-northeast-1a)
447227 Amazon Elastic Compute Cloud m1.medium リザーブドインスタンス(ap-northeast-1c)
454149 Amazon RDS Service リザーブドインスタンス
482457 Amazon Route 53
495777 Amazon Simple Queue Service
495869 Amazon Simple Notification Service
495936 Amazon Simple Storage Service
495948 Amazon RDS Service
497930 AWS Lambda
504635 Amazon CloudFront
505699 (なし) 全体的な通信に関わってる部分?
506835 AWS Key Management Service
511298 Amazon CloudWatch
519022 Amazon Virtual Private Cloud
520642 Amazon ElastiCache
524619 Amazon Glacier
524834 Amazon Elastic Compute Cloud EC2に係る従量分?

一部の請求から抜粋しただけでもこれだけのコードが確認出来た。
Hubotで問い合わせは期間とサービス名に絞ろうと思うのでこのコードが分かると素敵かもしれない

CSVファイルの形式だが、1行目はラベル、実際のデータはRecordTypeに"LineItem"となっているもの、あと"Rounding"にコンソリデーションに伴って出た誤差の料金が出ているようなので計算にはこれも含める必要がある

いろいろ費用が見えて感じたこと

自分が試験環境で使っているAWSの料金が出てくると止め忘れてたものとか放置でも課金が続いているものなども分かってきて結構ドキドキする。

経理担当の人はこれに為替問題が絡んだり、いろいろして大変なのだろうな。感謝してます。

5
5
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
5
5