2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSのコスト、「気づいたら思ったより高かった」を防ぐための監視設定

2
Posted at

はじめに

「今月のAWSの請求、なんか多くない?」

個人のAWSアカウントで学習していたとき、月末に請求を見て冷や汗をかいた経験があります。EC2を停止したつもりで終了していなかった、Elastic IPをインスタンスに紐付けないまま放置していた、NAT Gatewayを消し忘れていた——原因を調べると、いくつかのリソースが無駄に動き続けていました。

これは個人の話だけではありません。現場でも「先月のコストが予算を超えた。原因を調べてください」というケースを経験しました。

この記事では、「気づいたら高かった」を防ぐためのコスト監視の設定方法を整理します。

この記事を読むと、以下のことができるようになります。

  • AWSのコストを可視化するCost Explorerの使い方が分かる
  • 予算アラートをAWS Budgetsで設定できるようになる
  • コストが上がりやすいサービス・設定のパターンが分かる

コストが「気づいたら高い」になる理由

AWSのコストが予想外に増える主な原因を整理します。

①停止・削除し忘れのリソース

学習・検証で使ったリソースを消し忘れることが多いです。

リソース 課金の条件 注意点
EC2インスタンス 起動中に課金 停止(Stop)しても一部は課金される。削除(Terminate)が必要
Elastic IP インスタンスと未紐付けの場合に課金 インスタンス停止中に紐付けたままは課金される
NAT Gateway 稼働時間+データ転送量 使わなくなっても削除しないと課金され続ける
RDSインスタンス 起動中に課金 EC2より高い。停止は7日後に自動再起動する仕様あり
EBSボリューム 存在するだけで課金 EC2を削除してもEBSを削除しないと残る

②データ転送料金の見落とし

AWSでは、特定のデータ転送に料金がかかります。

  • インターネットへのデータ転送(アウトバウンド):課金あり
  • AZ間のデータ転送:課金あり
  • リージョン間のデータ転送:課金あり
  • 同一AZ内・CloudFront経由:無料または安い

「転送量は少ないはず」と思っていても、ログが大量に生成されてCloudWatch Logsに送り続けている、というケースで意外とコストがかかることがあります。

③サービスのスペックが過剰

「念のため大きめに」という判断で設定したインスタンスタイプやストレージが、実際の使用量に対して過剰になっているケースです。


Cost Explorerでコストを可視化する

まず「今、何にいくらかかっているか」を把握することが第一歩です。

AWSコンソール → Billing and Cost Management → Cost Explorer

Cost Explorerでできること:

  • 日・月・年単位のコスト推移グラフ
  • サービス別のコスト内訳(EC2が高い、S3が高いなど)
  • リージョン別・アカウント別のコスト
  • 前月比較
# CLIでコストを確認する(直近1ヶ月)
aws ce get-cost-and-usage \
  --time-period Start=$(date -d '1 month ago' +%Y-%m-01),End=$(date +%Y-%m-01) \
  --granularity MONTHLY \
  --metrics "UnblendedCost" \
  --group-by Type=DIMENSION,Key=SERVICE \
  --query 'ResultsByTime[*].Groups[*].[Keys[0],Metrics.UnblendedCost.Amount]' \
  --output table

Cost Explorerを月1回確認するだけでも、「先月と比べてどのサービスのコストが上がったか」が分かります。


AWS Budgetsで予算アラートを設定する

Cost Explorerは確認するツールですが、「超えたら通知する」仕組みにはAWS Budgetsを使います。

コンソールでの設定手順

  1. Billing and Cost Management → Budgets → 「予算を作成」
  2. 予算タイプ:コスト予算
  3. 予算名:任意(例:monthly-budget)
  4. 予算額:設定したい上限金額(例:$50)
  5. アラートのしきい値:予算の80%に達したら通知、など
  6. 通知先メールアドレスを設定

CLIでの設定

aws budgets create-budget \
  --account-id 123456789012 \
  --budget '{
    "BudgetName": "monthly-cost-budget",
    "BudgetLimit": {
      "Amount": "50",
      "Unit": "USD"
    },
    "TimeUnit": "MONTHLY",
    "BudgetType": "COST"
  }' \
  --notifications-with-subscribers '[
    {
      "Notification": {
        "NotificationType": "ACTUAL",
        "ComparisonOperator": "GREATER_THAN",
        "Threshold": 80,
        "ThresholdType": "PERCENTAGE"
      },
      "Subscribers": [
        {
          "SubscriptionType": "EMAIL",
          "Address": "your-email@example.com"
        }
      ]
    }
  ]'

「月$50を超えたら通知」という設定だけで、請求の意外な増加に気づける可能性が大きく上がります。


コスト削減のための実践的なチェック

定期的に行うとコスト削減に効果的なチェックリストです。

使っていないリソースの確認

# 停止中のEC2インスタンスを確認
aws ec2 describe-instances \
  --filters "Name=instance-state-name,Values=stopped" \
  --query 'Reservations[*].Instances[*].[InstanceId,Tags[?Key==`Name`].Value|[0],LaunchTime]' \
  --output table

# 未使用のEBSボリュームを確認(アタッチされていない)
aws ec2 describe-volumes \
  --filters "Name=status,Values=available" \
  --query 'Volumes[*].[VolumeId,Size,CreateTime]' \
  --output table

# 未使用のElastic IPを確認
aws ec2 describe-addresses \
  --query 'Addresses[?AssociationId==null].[PublicIp,AllocationId]' \
  --output table

Savings Plansとリザーブドインスタンス

常時稼働するEC2・RDSは、Savings Plansリザーブドインスタンスを使うとコストを削減できます。

購入方法 割引率 コミット
オンデマンド(通常) 基準 なし
リザーブドインスタンス(1年) 最大40%削減 1年間の使用
リザーブドインスタンス(3年) 最大60%削減 3年間の使用
Savings Plans 最大66%削減 1〜3年の使用量コミット

「どのみち使い続けるリソース」は購入方法を見直すだけでコストが大きく変わります。


Cost Anomaly Detection(コスト異常検知)

AWS Budgetsと合わせて使いたいのがCost Anomaly Detectionです。

機械学習で「通常とは違うコストの増加パターン」を検知して通知します。予算の絶対値ではなく「急に増えた」という変化を検知するため、予期しないコスト増加に気づきやすいです。

設定はコンソールの Billing → Cost Anomaly Detection から数クリックで完了します。


まとめ

この記事では以下のことを解説しました。

  • コストが「気づいたら高い」になる主な原因は「リソースの消し忘れ」「データ転送料の見落とし」「スペックの過剰設定」の3つ
  • Cost Explorerでサービス別・月別のコスト推移を可視化する
  • AWS Budgetsで予算上限のアラートを設定して、超過前に通知を受ける
  • CLIで停止中EC2・未アタッチEBS・未使用Elastic IPを定期的に棚卸しする
  • 常時稼働リソースはSavings PlansやリザーブドインスタンスでコストTo削減できる

「コストは月末に請求を見て分かる」から「増え始めた段階で気づける」に変えるだけで、クラウドの使い方は大きく変わります。まずAWS Budgetsのアラート設定だけでも、今日やっておきましょう。



ハンズオンラボでは、未経験からでも「作って覚える」をモットーにしたITハンズオンイベントを定期開催しています。

👉 イベント一覧はこちら

運営メンバーのXはこちら
えむ / わたる


面白かったら
「👇いいね」で応援

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?