目次
3 章

コスト管理 — 決済アラート、Cost Explorer、無料利用枠

無料利用枠の限界、AWS Budgets と決済アラートのセットアップ、Cost Explorer で請求書を分解して見る方法、そしてコスト分析の前提となるタグ戦略まで。最初の請求書ショックを防ぐガードレールを整理します。

第2章 IAM で日常作業用のユーザーを作りながら、コンソールの中で何かを作る準備ができました。ところが作る前に必ずしておくべきことがもう一つあります。それがコストアラートです。

AWS を初めて使うときに最もよくある事故は次のようなものです。学習用に作った NAT Gateway が1ヶ月ずっと動いて請求書 $45、少しだけ立てた RDS 単一 AZ が1週間で $30、別のリージョンに立てた EC2 が請求書の最後まで見えず1ヶ月 $80、ログが1ヶ月降り注いで CloudWatch $120 — こうした事故は Budgets と決済アラートを先に入れていれば防げました。

本章は 第1章 で案内した最初のセットアップ3つのうちの2つ目です。登録直後に必ずオンにすべき設定と、運用段階のコスト分析ツールをまとめて整理します。

無料利用枠 (Free Tier) — 何がどこまで #

新規アカウントには1年 / 永続の無料限度があります。よく使うものだけ選ぶと次のとおりです。

サービス限度期間
EC2t2.micro / t3.micro 750 時間 / 月1年
RDSdb.t3.micro 750 時間 / 月、20 GB SSD1年
S35 GB 保存 + 20K GET + 2K PUT1年
Lambda100万呼び出し / 月永続
DynamoDB25 GB + 25 RCU / WCU永続
CloudFront1 TB 送信 + 10M リクエスト永続
CloudWatch10 メトリクス + 10 アラーム + 5 GB ログ永続
データ転送インターネットへ 100 GB / 月永続

核心のポイントは次のとおりです。

  • 750 時間 / 月 — 1ヶ月は720 ~ 744 時間なので、インスタンス1台を24時間動かせる量です。2台を同時に立てると1台が追加課金されます。
  • 無料利用枠は新規アカウントだけ — 登録後12ヶ月、または永続(サービスごと)です。
  • 無料利用枠にないサービスも多い — NAT Gateway、EKS、Aurora など高いサービスは最初から課金されます。

無料利用枠の限度アラートをオンにする #

コンソール → Billing → Free Tier → 「Free Tier usage alerts」にメールアドレスを登録します。

セットアップ
Billing Console → Billing preferences
[✓] Receive Free Tier Usage Alerts → メールアドレス入力
[✓] Receive Billing Alerts (CloudWatch アラーム用)
[✓] Receive PDF invoices via email

保存すると無料利用枠の85%使用でアラートが来ます。これが最初のガードレールです。

Budgets — 決済アラートの本拠地 #

CloudWatch Billing Alarm もありますが、AWS Budgets が決済アラートの標準ツールです。より柔軟で多次元に分解できます。

最初の予算 — $10 アラート #

学習 / 個人アカウントの標準です。

最初の予算を作る
コンソール → Billing → Budgets → Create budget
- Budget type: Cost budget
- Period: Monthly
- Amount: $10 (自分のリスク許容限度)
- Alert threshold: 50%, 80%, 100% の3段階
- Email: 自分のメールアドレス

3段階にしておくと、次のように作動します。

しきい値意味
50% (例: $5)「半分まで来たな — 何が動いているのか」
80% (例: $8)「本当に点検すべき」
100% (例: $10)「超過。即座にリソースを片付ける」

予算の他の種類 #

種類何か
Cost budget総コスト — 最もよくある
Usage budget「EC2 100時間」のような使用量
RI / SP coverage budget予約インスタンス / 節約プランの活用率
RI / SP utilization budget予約リソースの使用率 (遊んでいないか)

最初は Cost budget 1個 + 50/80/100 アラートで十分です。

予算を多次元に分解する #

運用段階で役立つツールです。

フィルターで絞る
- サービス別: Amazon EC2 / RDS / Lambda だけ
- タグ別: env=prod だけ
- リージョン別: ap-northeast-2 だけ
- アカウント別 (Organizations の上で): prod アカウントだけ

タグベースはタグが一貫していてこそ通用します。後のタグ戦略の節を併せて見ます。

CloudWatch Billing Alarm — 補助手段 #

Budgets 以前の古いツールですが、今も有効です。違いは次のとおりです。

BudgetsCloudWatch Alarm
場所決済コンソールCloudWatch(第7章 CloudWatch 入門)
アラートメール / SNS / LambdaSNS / Auto Scaling / EC2 アクション
評価1日 ~ 8時間遅延1日1回 (us-east-1 だけ)
多次元可能単純

運用では Budgets が標準です。CloudWatch Billing Alarm は自動アクション(例: アラート → Lambda → 一部リソースの終了)が必要なときだけ補助的に使います。

CloudWatch Billing メトリクスは us-east-1 にだけあります。他のリージョンで作ろうとすると見えません。

Cost Explorer — 請求書を分解して見る #

Cost Explorer はコストを時間 / サービス / タグ / リージョンなどで分解してグラフで見せてくれるツールです。運用段階で最もよく使うツールです。初回の有効化に24時間ほどかかります(履歴データの収集)。

基本の有効化
Billing Console → Cost Explorer → "Launch Cost Explorer"

有効化後には次のような質問に30秒で答えられます。

答え 1) 「今月どこで最も多く使ったか」 #

Group by → Service でサービス別の合計を見ます。

よくある運用の請求書の形
EC2-Other (NAT, EBS)   38%
EC2 インスタンス         22%
RDS                     15%
CloudFront              8%
S3                      6%
CloudWatch              4%
Other                   7%

意外な1位は EC2-Other です。しばしば EC2 本体より大きいです。中には NAT Gateway のトラフィック、EBS ボリューム、データ転送がすべて入っています。

答え 2) 「なぜ昨日から急にコストが増えたのか」 #

Group by → Service と日別の棒グラフで、どのサービスが増えたかがすぐ分かります。たいてい次のうちの一つです。

  • 新規リソース(デプロイ直後)
  • 眠った NAT Gateway のトラフィック
  • 誰かが作って忘れた RDS / EC2
  • 別のリージョンのリソース(リージョンフィルターで確認)

答え 3) 「この prod 環境のコストは1ヶ月いくらか」 #

Group by → Tag (env) で見ます。タグがあってこそ通用します。タグ戦略がコスト分析の前提である理由です。

答え 4) 「この傾向で行けば来月いくらか」 #

Cost Explorer → Forecast で AWS が傾向ベースの予測を見せてくれます。± 数 % の信頼区間を含みます。

タグ戦略 — コスト分析の前提 #

タグはすべてのリソースに付く Key=Value のラベルです。コスト分析 / ポリシー / 自動化すべてに影響を与えます。

標準タグ5個 #

この5個だけでも一貫して付けば、運用のコスト分析がきちんとできます。

キー値の例用途
envprod / staging / dev環境分離、コスト
serviceapi / worker / webサービス別コスト
teambackend / data / mobileチーム別コスト / 責任
ownercurtis@example.com誰が作ったリソースか
cost-centerR&D / Marketing会計 / 請求の按分

コスト配分タグの有効化 #

タグを単に付ければ終わりというわけではありません。コスト配分タグ(Cost Allocation Tag) として有効化してこそ、Cost Explorer と Budgets でフィルター / グループとして使えます。

有効化
Billing Console → Cost allocation tags
- 標準タグ5個をすべて Active に
- 有効化後24時間 ~ 数日経つとデータに反映

タグの強制 #

リソースを作るときに標準タグがなければ拒否する IAM ポリシーで強制できます(第2章 IAM の Condition パターンです)。

env / service タグがなければ EC2 作成を拒否
{
  "Effect": "Deny",
  "Action": "ec2:RunInstances",
  "Resource": "arn:aws:ec2:*:*:instance/*",
  "Condition": {
    "Null": {
      "aws:RequestTag/env": "true",
      "aws:RequestTag/service": "true"
    }
  }
}

これが敷かれれば、誰もタグなしでリソースを作れません。

よく高くつく項目 (チェックリスト) #

学習段階で落とし穴になるリソースです。いったん作ったら必ず意識します。

NAT Gateway — 時間あたり $0.045 #

  • 1ヶ月そのまま置くと約 $32 + トラフィックです。
  • VPC の private subnet がインターネットへ出るために必要です。
  • サイドプロジェクトには通常やや大げさです。VPC endpoint または public subnet で回避します。
  • 学習が終わったら必ず削除します。

Elastic IP — 時間あたり $0.005 (インスタンス未接続時) #

  • インスタンスに付いているときは無料です。
  • 外したまま忘れると1ヶ月 $3.6 です。
  • 使っていない EIP は即座に release します。

RDS #

  • 最も小さい db.t3.micro でも1ヶ月 $15 程度です(ストレージ / IOPS は別)。
  • Multi-AZ オプションは費用が2倍です。
  • 学習が終わったらスナップショット後に削除します。

EBS ボリューム #

  • EC2 を終了してもボリュームが残れば課金され続けます。
  • 「Delete on termination」のチェックを推奨します(学習用)。
  • 使っていないスナップショットも累積します。

EKS / OpenSearch / Aurora #

  • 時間あたり高いリソースなので、学習用に立てっぱなしにしません。
  • EKS はクラスターあたり $0.10/時間(1ヶ月 $72)で、ノード費用は別です。

CloudWatch Logs #

  • 収集は GB あたり ~$0.50、保存は GB-月 ~$0.03 です。
  • ログの暴走が最もよくある事故です。デバッグモードで1ヶ月置くと数十 GB になります。
  • ロググループごとに retention 設定が必須です(第7章 CloudWatch 入門)。

データ転送 (Egress) #

  • インターネットへ出ていくトラフィックは GB あたり ~$0.09 です(リージョン別の差)。
  • CloudFront を通せばより安いです。
  • リージョン間は GB あたり ~$0.02 です。

別のリージョンの眠っているリソース #

第1章 の落とし穴のようにすべてのリージョンを点検します。自動点検ツールを推奨します。

すべてのリージョンの EC2 / RDS をまとめて見る
for region in $(aws ec2 describe-regions --query 'Regions[].RegionName' --output text); do
  echo "=== $region ==="
  aws ec2 describe-instances --region $region --query 'Reservations[].Instances[].[InstanceId,State.Name]' --output text
done

請求書 / インボイスを受け取る #

毎月の請求書を PDF で受け取ります。

メールで受け取る
Billing Console → Billing preferences
[✓] Receive PDF invoices via email

CFO / 会計のメールアドレスは別オプションです(Account → Alternate Contacts → Billing)。

運用段階の追加ツール #

少し大きな運用で出会う項目です。

ツール何か
Cost Categoriesコストを任意のグループに束ねる (例: 「決済フローのコスト」)
Compute Optimizer過大 / 過小サイズの EC2 / Lambda を推奨
Trusted Advisor (Cost)コスト削減の点検 (Business / Enterprise サポート)
Savings Plans / RI1 ~ 3年の約定で 30 ~ 70% 割引
Spot InstanceEC2 価格 ~70% 割引 — 中断可能なワークロード
S3 Lifecycle / Intelligent-Tiering古いオブジェクトを自動的に安いクラスへ

小さな環境では Spot と Lifecycle だけ意識しても十分です。コスト最適化全般は 第27章 コスト最適化 で本格的に扱います。

よく出会う落とし穴 #

  • 登録直後に決済アラートをオンにしない — 最もよくある事故です。1ヶ月後に請求書を見て発見するともう遅いです。本章の最初の段階のとおり、登録直後に $10 / $20 / $50 のような単純なしきい値でも即座にオンにします。
  • NAT Gateway の眠ったコスト — 学習用 VPC に NAT Gateway を入れて1ヶ月置くと $32+ です。学習が終わったら VPC 自体を削除します(依存関係を整理)。
  • 別のリージョンに眠っているリソース — コンソールのリージョンセレクター一つだけ見ると、すべてのリージョンは見えません。定期点検とともに、別のリージョンでのリソース作成を IAM ポリシーで遮断します。
ap-northeast-2 以外のリージョンを遮断
{
  "Effect": "Deny",
  "Action": "*",
  "Resource": "*",
  "Condition": {
    "StringNotEquals": { "aws:RequestedRegion": "ap-northeast-2" }
  }
}
  • コスト配分タグを有効化しない — タグは一貫して付けたのに Cost Explorer でフィルターに引っかからないなら、99% はタグの有効化をしていないか、有効化後24時間が経っていない場合です。
  • 無料利用枠の満了を知らない — 登録12ヶ月後に急に請求書が増えます。無料利用枠の満了です。カレンダーに12ヶ月の印を付けておき、Budgets が捕まえてくれるようにします。
  • 「使った」ではなく「プロビジョニングされた」が課金 — EC2 を stop するだけだとコンピューティング費用は止まりますが EBS 費用は続きます。RDS も stop 後7日後に自動起動します。本当に使わないなら terminate するかスナップショット後に削除します。

練習問題 #

  1. §「無料利用枠」の表で、750 時間 / 月がインスタンス1台を24時間動かす量である理由を一文で説明し、t3.micro 2台を1ヶ月ずっと動かしたときにどちらの費用が追加で発生するかを書いてみましょう。
  2. §「最初の予算」に沿って 1つの Cost budget に 50/80/100% アラートをかける手順を見ずに書いてみましょう。このアラートが §「よく出会う落とし穴」のうち「別のリージョンに眠っているリソース」の事故をどう早期に捕まえてくれるかを一文で結びつけておきましょう。
  3. §「タグの強制」の Deny ポリシーと 第2章 IAM の Condition 節を比較し、aws:RequestTag/... がリソース作成の時点でどう作動するかを説明してみましょう。

一行まとめ: AWS のコスト事故はほぼすべて眠っているリソースから出るので、登録直後の Free Tier アラート · Billing アラート · 小さな Budget の3つでほとんど防げる。Budgets が決済アラートの標準で、Cost Explorer で請求書をサービス · タグ · リージョン別に分解する。タグ戦略はコスト分析の前提であり、NAT Gateway · RDS Multi-AZ · ログの暴走が最もよくある課金源。

次の章 #

コンソールだけで働くと、すぐに限界が来ます。次の 第4章 CLI と SDK では、ターミナルで同じ作業をより速く自動化可能にします。aws cli v2 のインストールと aws configure、プロファイル管理、boto3 のような SDK の使い方を整理し、第2章 IAM で作ったユーザーのアクセスキーがここで初めて登場します。

X