AWSの利用料金が月々増え続けているのに、どこにコストがかかっているのか把握できていない――多くの企業が抱えるこの課題を解決するのがAWS Cost Explorerです。
この記事では、Cost Explorerを使ったコストの可視化方法から、無駄なリソースの特定、リザーブドインスタンスやSavings Plansの活用、予算アラートの設定まで、AWS費用を実際に削減するための実践的な手法を解説します。
AWS Cost Explorerとは?コスト管理の第一歩
AWS Cost Explorerは、AWSの利用コストと使用状況をグラフやレポートで可視化するサービスです。過去13か月分のデータを分析でき、将来12か月分のコスト予測も可能です。
Cost Explorerの主な機能は以下の通りです。
- コストの時系列分析:日次・月次でのコスト推移をグラフ表示
- サービス別・アカウント別の内訳:どのサービスにいくらかかっているかを分類
- フィルタリングとグルーピング:タグ、リージョン、インスタンスタイプなどで絞り込み
- コスト予測:過去の傾向から将来のコストを予測
- リザーブドインスタンスのレコメンデーション:購入による節約額の試算
Cost Explorerの利用自体は無料です(Cost Explorer APIの呼び出しは有料)。まだ有効化していない場合は、AWSマネジメントコンソールの「請求ダッシュボード」からCost Explorerを有効化しましょう。
コスト配分タグの重要性
Cost Explorerの分析精度を高めるために、コスト配分タグの設定は必須です。タグを設定することで、プロジェクト別・環境別・チーム別のコスト分析が可能になります。
推奨するタグキーの例を示します。
| タグキー | 用途 | 値の例 |
|---|---|---|
| Environment | 環境の識別 | production, staging, development |
| Project | プロジェクトの識別 | web-app, api-service, batch |
| Team | チームの識別 | backend, frontend, infra |
| CostCenter | コストセンター | engineering, marketing |
タグはリソース作成時に必ず設定するルールを組織全体で徹底しましょう。IAMポリシーでタグなしのリソース作成を制限することも可能です。
Cost Explorerの実践的な使い方
Cost Explorerの画面構成と、実際の分析方法を解説します。
月次コストの推移を確認する
まず最初に確認すべきは、月次のコスト推移です。Cost Explorerを開き、以下の設定でレポートを表示します。
- 期間:過去6か月
- 粒度:月次(Monthly)
- グルーピング:サービス(Service)
このレポートから、以下の情報が読み取れます。
- コストが増加傾向にあるサービスはどれか
- 特定の月で急増しているサービスはないか
- 全体のコスト推移と予算との乖離
コスト急増の原因を特定する
月次で急増が見つかった場合、日次レベルでドリルダウンして原因を特定します。
- 急増したサービスでフィルタリング
- 粒度を日次(Daily)に変更
- グルーピングを「使用タイプ」に変更
例えば、EC2のコストが急増している場合、使用タイプでグルーピングすると「BoxUsage:m5.xlarge」のようにインスタンスタイプ別のコストが見えます。「いつ、どのインスタンスタイプが増えたか」を特定することで、原因究明が容易になります。
環境別のコスト分析
コスト配分タグを設定していれば、フィルターでEnvironmentタグを指定して環境別のコストを確認できます。
よくある発見例として、開発環境やステージング環境のコストが本番環境に匹敵するケースがあります。開発環境で本番と同じインスタンスサイズを使っていたり、夜間・休日も稼働させ続けている場合に起こります。
無駄なリソースを見つけて削減する
AWSのコスト削減で最も即効性があるのは、使われていないリソースの特定と削除です。
よくある無駄リソースとその見つけ方
| リソース | 無駄の内容 | 確認方法 |
|---|---|---|
| EBSボリューム | EC2を削除してもEBSが残る | 未アタッチのボリュームを検索 |
| Elastic IP | 未使用のEIPに課金が発生 | 未関連付けのEIPを確認 |
| EBSスナップショット | 古いスナップショットが蓄積 | 作成日が古いスナップショットを確認 |
| RDSスナップショット | 手動スナップショットの蓄積 | 手動スナップショットの一覧を確認 |
| NATゲートウェイ | 不要な環境のNATが稼働中 | VPC設計を見直し不要なものを削除 |
| ロードバランサー | バックエンドのないALB/NLB | ターゲットグループのヘルス状態を確認 |
AWS Trusted Advisorの活用
AWS Trusted Advisorは、コスト最適化の推奨事項を自動で提示してくれるサービスです。Business Support以上のサポートプランで全チェック項目が利用可能ですが、ベーシックプランでも以下のチェックは無料で利用できます。
- 使用率の低いEC2インスタンス:CPU使用率が常に低いインスタンスを検出
- 未使用のEBSボリューム:アタッチされていないボリュームを検出
- 未関連付けのElastic IP:使われていないEIPを検出
開発環境の自動停止でコスト削減
開発環境やステージング環境を夜間・休日に自動停止することで、最大70%のコスト削減が可能です。
AWS Instance Schedulerや、Lambda関数によるスケジュール停止を設定します。
# Lambda関数でEC2を夜間停止する例(Python)
import boto3
def lambda_handler(event, context):
ec2 = boto3.client('ec2', region_name='ap-northeast-1')
# Environmentタグがdevelopmentのインスタンスを取得
response = ec2.describe_instances(
Filters=[
{'Name': 'tag:Environment', 'Values': ['development']},
{'Name': 'instance-state-name', 'Values': ['running']}
]
)
instance_ids = []
for reservation in response['Reservations']:
for instance in reservation['Instances']:
instance_ids.append(instance['InstanceId'])
if instance_ids:
ec2.stop_instances(InstanceIds=instance_ids)
print(f"Stopped instances: {instance_ids}")
return {'statusCode': 200, 'body': f'Stopped {len(instance_ids)} instances'}
EventBridgeで平日19時に停止、翌朝9時に起動するスケジュールを設定します。
リザーブドインスタンスとSavings Plansの活用
継続利用が確実なリソースには、リザーブドインスタンス(RI)やSavings Plansを適用することで、大幅なコスト削減が可能です。
リザーブドインスタンスとは
リザーブドインスタンスは、1年または3年の利用を約束することで最大72%の割引を受けられる購入オプションです。
| 支払いオプション | 割引率の目安 | 初期費用 |
|---|---|---|
| 全額前払い(1年) | 約40% | あり |
| 一部前払い(1年) | 約35% | 一部 |
| 前払いなし(1年) | 約30% | なし |
| 全額前払い(3年) | 約60-72% | あり |
Savings Plansの柔軟性
Savings Plansは、RIより柔軟性が高い割引プランです。1時間あたりの一定額のコミットメントで割引を受けられます。
- Compute Savings Plans:EC2、Fargate、Lambdaに適用可能。インスタンスファミリーやリージョンの変更が自由
- EC2 Instance Savings Plans:特定のインスタンスファミリーとリージョンに限定。より高い割引率
初めてRI/Savings Plansを購入する場合は、Compute Savings Plansから始めることを推奨します。柔軟性が高いため、将来のリソース変更に対応しやすく、リスクが低いためです。
Cost Explorerのレコメンデーション機能
Cost Explorerには、過去の利用パターンを分析して最適なRI/Savings Plansを提案する機能があります。
- Cost Explorerの左メニューから「Savings Plans」→「Recommendations」を選択
- 期間(1年/3年)と支払いオプションを選択
- 推奨コミットメント額と予想節約額を確認
この機能を定期的に確認し、3か月以上安定して稼働しているリソースはRI/Savings Plansの適用を検討しましょう。
AWS Budgetsで予算管理とアラートを設定する
コストの可視化だけでなく、予算を設定して超過時に自動通知する仕組みも重要です。AWS Budgetsを使えば、コストが予算に近づいた時点でアラートを受け取れます。
予算アラートの設定手順
# AWS CLIでの予算作成例
aws budgets create-budget \
--account-id 123456789012 \
--budget '{
"BudgetName": "Monthly-Total-Budget",
"BudgetLimit": {
"Amount": "500000",
"Unit": "JPY"
},
"TimeUnit": "MONTHLY",
"BudgetType": "COST"
}' \
--notifications-with-subscribers '[
{
"Notification": {
"NotificationType": "ACTUAL",
"ComparisonOperator": "GREATER_THAN",
"Threshold": 80,
"ThresholdType": "PERCENTAGE"
},
"Subscribers": [
{
"SubscriptionType": "EMAIL",
"Address": "ops-team@example.com"
}
]
},
{
"Notification": {
"NotificationType": "FORECASTED",
"ComparisonOperator": "GREATER_THAN",
"Threshold": 100,
"ThresholdType": "PERCENTAGE"
},
"Subscribers": [
{
"SubscriptionType": "EMAIL",
"Address": "ops-team@example.com"
}
]
}
]'
この設定では、以下の2つのアラートが発動します。
- 実績が予算の80%に到達した時点でメール通知
- 予測値が予算の100%を超過しそうな場合にメール通知
予測ベースのアラートは特に有用で、月末を待たずにコスト超過の可能性を早期に検知できます。CloudWatchの監視設定と組み合わせることで、コスト異常を多角的に監視できます。
サービス別のコスト最適化チェックリスト
主要サービスごとの具体的なコスト最適化ポイントをまとめます。
EC2のコスト最適化
- インスタンスの適正サイズ化:CPU使用率が常に20%以下なら、1サイズ小さいインスタンスに変更
- スポットインスタンスの活用:中断許容のバッチ処理にはスポットで最大90%削減
- Graviton(ARM)インスタンスへの移行:同等性能で約20%のコスト削減
- 前世代インスタンスの移行:m4からm6iへの移行で性能向上とコスト削減を両立
S3のコスト最適化
- ストレージクラスの最適化:アクセス頻度に応じてS3 Intelligent-Tieringを活用
- ライフサイクルポリシー:古いオブジェクトをGlacierに自動移行
- 不完全なマルチパートアップロードの削除:放置すると無駄なストレージコストが発生
S3の実践ガイドでストレージクラスの詳細を確認してください。
データ転送コストの最適化
AWSのコストで見落としがちなのがデータ転送コストです。
- VPCエンドポイントの活用でNATゲートウェイ経由の転送コストを削減(VPC設計ガイド参照)
- CloudFrontの活用でオリジンからのデータ転送量を削減(CloudFront CDNガイド参照)
- リージョン間データ転送の最小化
コスト最適化を継続するための運用体制
コスト最適化は一度行って終わりではなく、継続的な取り組みが必要です。
月次コストレビューの実施
月に1回、以下の内容でコストレビューを実施することを推奨します。
- 前月比のコスト変動:10%以上増加したサービスの原因特定
- 無駄リソースの棚卸し:未使用リソースの確認と削除
- RI/Savings Plansのカバー率:利用率が低下していないかの確認
- コスト予測の確認:来月以降のコスト予測と予算の比較
- 新規最適化の検討:Trusted Advisorの推奨事項の確認
AWS Well-Architected Frameworkとの連携
コスト最適化はAWS Well-Architected Frameworkの5本柱の1つです。Well-Architected Frameworkの実践ガイドで、コスト最適化を含む包括的な設計原則を確認し、全体的なアーキテクチャ改善の一環としてコスト最適化に取り組みましょう。
また、クラウド全般のコスト管理についてはクラウドコスト削減の方法も参考になります。
まとめ:可視化から始めて着実にコストを削減する
AWS Cost Explorerを活用したコスト最適化の実践方法を解説しました。
- Cost Explorerでまずコストを可視化し、現状を正確に把握する
- コスト配分タグを設定して、プロジェクト・環境別の分析を可能にする
- 無駄リソースの特定と削除で即効性のある削減を実現する
- RI/Savings Plansで安定稼働リソースの割引を適用する
- AWS Budgetsで予算アラートを設定し、コスト超過を早期に検知する
- 月次レビューで継続的にコスト最適化を推進する
コスト最適化の第一歩は「知ること」です。まずはCost Explorerを開いて、自社のAWSコストの全体像を確認するところから始めてみてください。
関連記事
AWS CloudFrontでサイト高速化|CDN設定からキャッシュ戦略まで実践解説
AWS CloudWatchで監視・アラート設定|運用担当者のための実践ガイド
AWS CodePipelineでCI/CD構築|コード変更から本番デプロイまでの自動化
AWS ECS/Fargateでコンテナ運用|Docker→本番デプロイの実践ガイド
AWS IAMのベストプラクティス|最小権限の原則を実務で実装する方法
AWS RDSの実務ガイド|データベース構築・バックアップ・パフォーマンスチューニング
AWS S3の実務活用ガイド|バケット設計・アクセス制御・コスト最適化の実践
AWS VPCのネットワーク設計入門|サブネット・セキュリティグループの実践構成