🌊
身に覚えのない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