🙄

AWSの微少課金をCost and Usage Reports で調べる

2022/09/03に公開

Update

(2024-07-06)
Cost and Usage Reportsは名前が変わってData Exportsに統合されています。

Welcome to Data Exports
Data Exports enables you to create exports of the Cost and Usage Report (CUR) 2.0. You can still create and view your Legacy CUR exports in this console or in the Legacy console here . Click Create to start creating customized exports with only the data you want and to control the schema of your exports. You can also create an export that deploys a dashboard in QuickSight.

メニューの中でもData Exportsと現れているので注意。

動機

  • AWSで毎日0.3USDくらいの課金が起きているが、何なのか分からない
  • CostExploreでも一部表示できるが、もう少し具体的に知りたい

Cost Exploreだと

いちおう項目が表示されているのですが、いまいちよく分かりません。Othersとは・・・?

Cost and Usage Reportsを作成する

日本語だと「コストと使用状況レポート」です。

設定方法は以下の公式docで説明されています。

https://docs.aws.amazon.com/ja_jp/cur/latest/userguide/cur-create.html

--- ここから最後までオレオレ ---

  • Cost and Usage Reportsのページに移動して Create reportを押す
    https://us-east-1.console.aws.amazon.com/billing/home?region=ap-northeast-1#/reports

  • Report 名を設定する

  • リソースIDを表示するにチェックする

  • S3は選択したら自動でポリシーをつけてくれます

  • Prefixは必須です

    • S3 の中で、例えば<bucket>/Prefix1/report名/20220801-20220901/というフォルダにレポートファイルが入ることになります
  • Granualiryは HourlyとかDailyとか選べます

  • 圧縮はZipで(お好みで)

これで作成されますが、24時間以内に最初のレポートができるので、すぐには見られません。自分の場合は、朝6時に作成して24時半くらいにできていました。

レポートができたらS3 Eventで通知する

最初のレポートがいつできるか分からないのは不便なので、レポートができたらすぐに通知を受けたい場合のやり方です。

S3 -> SNS -> Email -> User という流れで受け取ります。

SNS Topicの設定

  • トピックを作る、サブスクリプションの設定をする
  • access policyを設定する。これはS3 EventからのトリガーでSNSがメールを出すためのもの。SNS TopicのARNを設定する。
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "1",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "sns:Publish",
      "Resource": "<arn-of-this-sns-topic>"
    }
  ]
}

S3 Eventの設定
Bucket選択 -> Event notifications

Event name: 自由
Suffix: .csv.zip
Event types: Object creation s3:ObjectCreated:Copyにチェック(Allでもよい)
Destination: SNS topic, Enter SNS topic ARN

設定するとこのような文面の入ったメールが来るはず。

"Service":"Amazon S3","Event":"s3:TestEvent"

ファイルを見る

S3バケットの中にオブジェクトができているのでダウンロードします。

私の場合、Google Sheetsで見ています。zipを解凍した中身のcsvをインポートします。項目が大量にありますが、整理します。

  • lineItem/ を列名から消す
  • 一行目を固定
  • 一行目でフィルター。UnblendedCostが0より大きいものだけ残す。
  • UsageStartDate〜UsageEndDateが1ヶ月分入っているので、一日分だけ残す。(このときは2022-08-31T00:00:00Zから2022-09-01T00:00:00Z)

項目 説明
ProductCode AWSサービス
UsageType 使用タイプ
Operation CRUD操作とか
ResourceId リソースIDがわかって便利
UsageAmount 使用量
CurrencyCode USD
UnblendedRate 単価
UnblendedCost 料金
LineItemDescription 単価の詳しい説明。リージョンの情報も

結果

  • 停止しているRDS Postgresが(ほとんどデータ入ってないつもりですが)0.6GBあるので課金1日0.09USD
    • ほとんど同じ条件のはずのAurora MySQLは0.003GBしか使っていないらしい
  • 停止しているEC2がTokyo、Ohio、Oregonリージョンにあって、1つにつき1日0.03USD
  • Customer kmsがOhioにあって月1ドルの日割り(記憶になかったですが、チュートリアルで作っていたみたいです)
  • CostExploreのOthersに相当するのはCloudTrailとS3で、合計1日0.03USD

--- ここまでオレオレ ---

まとめ

  • Cost and Usage Reportsは便利です
  • 試験にも出てますよね(たぶん)

更新のメモ

2023/11/05 画像差し替え、S3Eventでの通知を追加。

Discussion