🙄

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

2022/09/03に公開

動機

  • 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