🌊

身に覚えのないEC2-Other課金$35をCLIで特定してみた

に公開

はじめに

AWSの請求書で身に覚えのない「EC2-Other」の課金$35/月を発見し、原因を調査しました。

結論から言うと、AWS Organizations環境では各アカウントで切り分けないと犯人は見つからない、という話でした。

目的

Cost Explorerで「EC2-Other」に月$35の謎課金を発見。何の料金なのかわからず、調査することに。

対象読者

  • AWS Organizationsで複数アカウント管理している人
  • 身に覚えのないAWS課金で困っている人
  • AWS初心者

手順

Step 1: EC2-Otherの内訳を調査

何の課金かわからないので、使用タイプ別にコストを分析:

aws ce get-cost-and-usage \
  --time-period Start=2025-07-01,End=2025-08-01 \
  --granularity MONTHLY \
  --metrics "UnblendedCost" \
  --filter '{"Dimensions":{"Key":"SERVICE","Values":["EC2 - Other"]}}' \
  --group-by Type=DIMENSION,Key=USAGE_TYPE \
  | jq '.ResultsByTime[].Groups | sort_by(.Metrics.UnblendedCost.Amount | tonumber) | reverse | .[0]'

結果:APN1-NatGateway-Hours で$35課金

Step 2: NAT Gatewayを探す(しかし見つからない)

原因がNAT Gatewayとわかったので、該当リージョンを確認:

aws ec2 describe-nat-gateways --region ap-northeast-1

結果:空っぽ

Step 3: 【解決】アカウント別に調査

aws ce get-cost-and-usage \
  --time-period Start=2025-07-01,End=2025-08-01 \
  --granularity MONTHLY \
  --metrics "UnblendedCost" \
  --filter '{"Dimensions":{"Key":"USAGE_TYPE","Values":["APN1-NatGateway-Hours"]}}' \
  --group-by Type=DIMENSION,Key=LINKED_ACCOUNT

結果:アカウントID 111122223333 で課金発生

Step 4: 原因アカウントで削除

# 犯人アカウントで確認
aws ec2 describe-nat-gateways --region ap-northeast-1 --profile dev-account

# 削除
aws ec2 delete-nat-gateway --nat-gateway-id nat-0123456789abcdef0 --region ap-northeast-1 --profile dev-account

結果

翌日から課金停止。月$35のコスト削減完了。

まとめ

Organizations環境での謎課金調査は各アカウントで切り分けよう

統合請求で見えるコスト ≠ 管理アカウントのリソース、という罠にハマっていました。

Discussion