AWS運用コスト大幅削減した全手法【大手企業DX責任者の実例】
大手企業でDX推進責任者として、AWS運用コストを大幅削減した全手法を公開します。

この記事で得られること

✅ AWS月額コストを大幅削減する具体的な手法
✅ すぐに実践できる10の施策(難易度・効果付き)
✅ 社内稟議を通すための説得資料の作り方
✅ コスト可視化ツールの選定と設定方法
✅ 削減後の運用体制とモニタリング方法
対象読者: インフラエンジニア、SRE、CTO、コスト削減を任されたマネージャー
導入:月間300万円のAWSコストに悩んでいた

削減前の状況
2年前、私が着任した時のAWS環境は正直「カオス」でした。
課題1: コストの全体像が不明
- 各部門が独自にリソースを作成
- タグ付けルールがバラバラ
- どこで何にお金がかかっているか誰も把握していない
課題2: 無駄なリソースの放置
- 開発環境が24時間稼働
- 検証用インスタンスが削除されずに残っている
- 古いスナップショットが大量に保存されている
課題3: 最適化されていない構成
- オンデマンドインスタンスのみ使用
- RDSのインスタンスサイズが過剰
- S3のストレージクラスが最適化されていない
月間コスト: 約300万円(年間3,600万円)
経営層からの指令: 「20%削減できないか?」
最終的に 大幅削減(月額180-210万円) を達成しました。

AWS運用コスト削減TOP10施策

| # | 施策 | 削減効果 | 難易度 | 所要時間 |
|---|---|---|---|---|
| 1 | RDSのRightSizing | 15-20% | 中 | 2-3週間 |
| 2 | Reserved Instance導入 | 10-15% | 低 | 1週間 |
| 3 | ECSへのコンテナ化 | 8-低い割合 | 高 | 2-数ヶ月 |
| 4 | S3ライフサイクル設定 | 5-8% | 低 | 1-2日 |
| 5 | 開発環境の自動停止 | 3-5% | 低 | 1週間 |
| 6 | EBSボリュームの最適化 | 2-4% | 中 | 2週間 |
| 7 | CloudFront導入 | 3-5% | 中 | 1週間 |
| 8 | Lambda化(サーバーレス) | 2-3% | 中 | 1-2ヶ月 |
| 9 | Spot Instance活用 | 2-4% | 中 | 2週間 |
| 10 | 不要リソースの削除 | 5-10% | 低 | 継続 |
合計削減効果: 55-86%(重複を考慮すると大幅)
施策1: RDSのRightSizing(削減効果15-20%)
実施前の状況
- RDS: db.m5.2xlarge(8 vCPU、32GB RAM)
- 月額コスト: 約50万円(Multi-AZ、本番環境5台)
- CPU使用率: 平均10-15%(過剰スペック)
実施内容
ステップ1: パフォーマンスメトリクスの収集(2週間)
CloudWatch メトリクス:
- CPUUtilization: 平均低い割合、最大30%
- DatabaseConnections: 平均50、最大120
- ReadLatency: 平均5ms
- WriteLatency: 平均8ms
結論: スペックが2-3倍過剰
ステップ2: ダウンサイジングプランの作成
変更前: db.m5.2xlarge(8 vCPU、32GB)
変更後: db.m5.xlarge(4 vCPU、16GB)
削減率: 50%
ステップ3: 段階的な移行
- Week 1: ステージング環境で検証
- Week 2: 本番環境1台で検証(深夜メンテナンス時間)
- Week 3-4: 残り4台を順次移行
結果
- 削減額: 月25万円削減(年間300万円)
- パフォーマンス: 影響なし(CPU使用率20-30%で安定)
- 削減率: 50%
注意点
⚠️ 必ずパフォーマンステストを実施
- 負荷試験ツール(JMeter、Gatling)で事前検証
- ピーク時のメトリクスを2週間以上収集
- バッファは2倍を確保(使用率50%以下を目安)
⚠️ Blue/Green デプロイメントを活用
# RDS Blue/Green Deploymentを使えばダウンタイムゼロで移行可能
aws rds create-blue-green-deployment \
--blue-green-deployment-name "rds-rightsizing" \
--source-arn arn:aws:rds:region:account:db:source-db \
--target-db-instance-class db.m5.xlarge
施策2: Reserved Instance導入(削減効果10-15%)
実施前の状況
- EC2: すべてオンデマンド(約30台)
- 月額コスト: 約80万円
- 使用パターン: 24時間365日稼働
実施内容
ステップ1: 使用パターンの分析(AWS Cost Explorer使用)
稼働パターン分類:
- 常時稼働(本番環境): 20台 → RI対象
- 平日のみ稼働(開発環境): 10台 → オンデマンド継続
ステップ2: RI購入プランの作成
【1年間 All Upfront】
- 対象: t3.medium x 10台
- 削減率: 40%
- 初期費用: 約100万円
- 回収期間: 8ヶ月
【3年間 All Upfront】
- 対象: m5.large x 10台
- 削減率: 60%
- 初期費用: 約250万円
- 回収期間: 12ヶ月

ステップ3: 社内稟議を通す
説得ポイント:
ROI計算書を作成
- 1年間の削減額: 120万円
- 3年間の削減額: 数百万円
- IRR(内部収益率): 45%
リスク分析を提示
- ビジネスが縮小した場合のリスク
- → マーケットプレイスで売却可能(流動性あり)
段階的導入を提案
- まず1年RIで10台導入
- 効果を検証してから3年RIを拡大
結果
- 削減額: 月12万円削減(年間144万円)
- 削減率: 15%
- ROI: 8ヶ月で投資回収
2025年版のおすすめ
Savings Plansの方が柔軟でおすすめ!
Reserved Instance(旧):
- インスタンスタイプ固定
- リージョン固定
- 柔軟性が低い
Savings Plans(新):
- インスタンスファミリー内で変更可能
- Compute Savings Plans: EC2、Fargate、Lambda全対応
- 柔軟性が高い
私の推奨:
- Compute Savings Plans(1年間): 40%削減
- 対象サービス: EC2、Fargate、Lambda
- コミットメント: 月額使用量の70%
施策3: ECSへのコンテナ化(削減効果8-低い割合)
実施前の状況
- EC2: m5.xlarge x 15台(Webアプリケーション)
- 月額コスト: 約60万円
- CPU使用率: 平均20%(リソースの無駄)
実施内容
ステップ1: コンテナ化の準備(1ヶ月)
# 既存のアプリケーションをDockerコンテナ化
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
ステップ2: ECS Fargate構成の設計
# ECS Task Definition
CPU: 512 (.5 vCPU)
Memory: 1024 MB
Tasks: 30個(m5.xlarge 15台分の処理を30タスクで実行)
コスト比較:
EC2: m5.xlarge x 15台 = 60万円/月
Fargate: 512 CPU x 30タスク = 48万円/月
削減額: 12万円/月(20%削減)
ステップ3: ALB + Auto Scalingの設定
# ECS Service with Auto Scaling
aws ecs create-service \
--cluster my-cluster \
--service-name my-service \
--task-definition my-task:1 \
--desired-count 10 \
--launch-type FARGATE \
--load-balancers targetGroupArn=arn:aws:...
Auto Scaling設定:
最小タスク数: 10
最大タスク数: 30
スケールアウト条件: CPU使用率 > 70%
スケールイン条件: CPU使用率 < 30%
結果
- 削減額: 月12万円削減(年間144万円)
- 削減率: 20%
- 副次効果:
- デプロイ時間: 10分 → 2分(80%短縮)
- スケーラビリティ向上
- 障害時の自動復旧
注意点
⚠️ Fargate vs EC2の使い分け
Fargateが向いている:
- トラフィックに波がある
- 運用工数を削減したい
- コンテナ数が少ない(100個以下)
EC2(ECS on EC2)が向いている:
- 常時高負荷
- コンテナ数が多い(100個以上)
- コスト最優先
施策4: S3ライフサイクル設定(削減効果5-8%)
実施前の状況
- S3ストレージ: 50TB(すべてStandard)
- 月額コスト: 約120万円
- アクセスパターン: 90%は30日以上アクセスなし
実施内容
S3ストレージクラスの理解
Standard: $0.023/GB → 頻繁にアクセス
Standard-IA: $0.0125/GB → 月1回以下のアクセス(削減率45%)
Glacier Instant Retrieval: $0.004/GB → 四半期1回(削減率83%)
Glacier Flexible Retrieval: $0.0036/GB → 年1回(削減率84%)
Glacier Deep Archive: $0.00099/GB → ほぼアクセスなし(削減率96%)
ライフサイクルポリシーの設定
{
"Rules": [
{
"Id": "Archive-old-logs",
"Status": "Enabled",
"Filter": {
"Prefix": "logs/"
},
"Transitions": [
{
"Days": 30,
"StorageClass": "STANDARD_IA"
},
{
"Days": 90,
"StorageClass": "GLACIER_IR"
},
{
"Days": 365,
"StorageClass": "DEEP_ARCHIVE"
}
],
"Expiration": {
"Days": 2555
}
}
]
}
適用対象:
- ログファイル(30TB) → IA → Glacier
- バックアップ(15TB) → Glacier Instant Retrieval
- アーカイブ(5TB) → Deep Archive
結果
- 削減額: 月10万円削減(年間120万円)
- 削減率: 8%
- 所要時間: 2日(ポリシー設定のみ)
S3 Intelligent-Tieringの活用
2024年のおすすめ:
S3 Intelligent-Tiering:
- 自動でアクセスパターンを分析
- 最適なストレージクラスに自動移行
- モニタリング料金: $0.0025/1000オブジェクト(格安)
設定方法:
aws s3api put-bucket-intelligent-tiering-configuration \
--bucket my-bucket \
--id intelligent-tiering-rule \
--intelligent-tiering-configuration \
"Status=Enabled,Tierings=[{Days=30,AccessTier=ARCHIVE_ACCESS},{Days=90,AccessTier=DEEP_ARCHIVE_ACCESS}]"
施策5: 開発環境の自動停止(削減効果3-5%)
実施前の状況
- 開発環境: EC2 x 20台、RDS x 5台(24時間稼働)
- 使用時間: 平日9:00-21:00のみ(週60時間 / 168時間)
- 稼働率: 35%
- 月額コスト: 約40万円
実施内容
Lambda関数で自動停止/起動
import boto3
ec2 = boto3.client('ec2')
rds = boto3.client('rds')
def lambda_handler(event, context):
# 開発環境タグがついているインスタンスを取得
instances = ec2.describe_instances(
Filters=[
{'Name': 'tag:Environment', 'Values': ['development']},
{'Name': 'instance-state-name', 'Values': ['running']}
]
)
instance_ids = [
i['InstanceId']
for r in instances['Reservations']
for i in r['Instances']
]
if instance_ids:
ec2.stop_instances(InstanceIds=instance_ids)
print(f'Stopped instances: {instance_ids}')
# RDSも同様に停止
db_instances = rds.describe_db_instances()['DBInstances']
for db in db_instances:
if 'Environment' in db.get('TagList', []):
if db['Tag']['Value'] == 'development':
rds.stop_db_instance(DBInstanceIdentifier=db['DBInstanceIdentifier'])
return {
'statusCode': 200,
'body': f'Stopped {len(instance_ids)} instances'
}
EventBridge(CloudWatch Events)でスケジュール実行
# 平日21:00に停止
aws events put-rule \
--name stop-dev-instances \
--schedule-expression "cron(0 12 ? * MON-FRI *)" \
--state ENABLED
# 平日9:00に起動
aws events put-rule \
--name start-dev-instances \
--schedule-expression "cron(0 0 ? * MON-FRI *)" \
--state ENABLED
結果
- 削減額: 月26万円削減(65%削減)
- 年間削減: 312万円
- 所要時間: 1週間(Lambda開発+テスト)
応用: Instance Schedulerの活用
AWS公式ツール: Instance Scheduler
# CloudFormationでデプロイ
aws cloudformation create-stack \
--stack-name instance-scheduler \
--template-url https://s3.amazonaws.com/.../instance-scheduler.template \
--parameters \
ParameterKey=Schedule,ParameterValue="weekdays-9to21"
スケジュール例:
weekdays-9to21:
起動: 月-金 9:00
停止: 月-金 21:00
office-hours:
起動: 月-金 8:00
停止: 月-金 20:00
タイムゾーン: Asia/Tokyo
コスト可視化ツールの選定と設定
ツール比較
| ツール | コスト | 特徴 | おすすめ度 |
|---|---|---|---|
| AWS Cost Explorer | 無料 | AWS公式、基本機能 | ⭐⭐⭐ |
| AWS Cost and Usage Report | 無料 | 詳細レポート、S3出力 | ⭐⭐⭐⭐ |
| CloudHealth | $$$$ | 高機能、マルチクラウド | ⭐⭐⭐⭐ |
| Datadog Cloud Cost | $$$ | インフラ監視と統合 | ⭐⭐⭐ |
| Kubecost | $$ | Kubernetes特化 | ⭐⭐⭐ |
私の推奨構成
1. AWS Cost and Usage Reportをベースに
# S3バケットにレポート出力
aws cur put-report-definition \
--report-definition \
ReportName=monthly-cost-report,\
TimeUnit=HOURLY,\
Format=Parquet,\
Compression=Parquet,\
S3Bucket=my-cost-reports,\
S3Region=us-east-1,\
S3Prefix=cur/
2. AthenaでSQLクエリ
-- 部門別コスト集計
SELECT
line_item_usage_account_id,
resource_tags_user_department AS department,
SUM(line_item_blended_cost) AS cost
FROM cost_and_usage_report
WHERE year = '2024' AND month = '01'
GROUP BY 1, 2
ORDER BY cost DESC;
3. QuickSightでダッシュボード化
ダッシュボード構成:
- 月次コスト推移(折れ線グラフ)
- サービス別コスト(円グラフ)
- 部門別コスト(棒グラフ)
- 前月比増減(テーブル)
社内稟議を通すための説得資料
資料構成(10スライド)
スライド1: サマリー
タイトル: AWS運用コスト30%削減提案
現状: 月額300万円(年間3,600万円)
目標: 月額210万円(年間2,520万円)
削減額: 年間数百万円
投資: 数百万円(RI購入、移行費用)
回収期間: 5.5ヶ月
スライド2: 課題の可視化
【現状の3大課題】
1. コスト構造の不透明さ
→ どこで何にいくら使っているか不明
2. 無駄なリソースの放置
→ 使われていないインスタンス・スナップショットが大量
3. 最適化の欠如
→ オンデマンドのみ、スペック過剰
スライド3: 削減施策TOP5
1. RDS Rightsizing: 15-20%削減
2. Reserved Instance: 10-15%削減
3. ECS化: 8-低い割合削減
4. S3ライフサイクル: 5-8%削減
5. 開発環境停止: 3-5%削減
スライド4: ROI計算
初期投資: 数百万円
年間削減: 1,080万円
3年間削減: 3,240万円
ROI: 216%(3年間)
IRR: 52%
回収期間: 5.5ヶ月
スライド5: リスク分析
【リスク】
1. パフォーマンス劣化
→ 2週間の検証期間で事前確認
2. RI購入後の使用量減少
→ マーケットプレイスで売却可能
3. 移行時の障害
→ Blue/Greenデプロイで無停止移行
スライド6: 実施スケジュール
Month 1: S3ライフサイクル、開発環境停止(クイックwin)
Month 2: RDS Rightsizing(パフォーマンス検証)
Month 3: RI購入、ECS化開始
Month 4-6: ECS化完了、効果測定
経営層を説得するコツ
財務指標で語る
- ROI、IRR、NPV(正味現在価値)を計算
- 「削減額」ではなく「利益貢献」として表現
クイックwinを見せる
- まず簡単な施策(S3、開発環境停止)で10%削減
- 「できる」実績を作ってから大きな投資を提案
競合比較
- 同業他社のクラウドコスト効率を調査
- 「業界平均より20%高い」などのデータを提示
削減後の運用体制とモニタリング
1. コスト管理の組織体制
【体制図】
CTO(最終責任者)
↓
DX推進責任者(私)
↓
├ インフラチーム(実行)
├ 開発チーム(協力)
└ 財務チーム(予算管理)
2. 月次レビュー会議
開催頻度: 毎月第1営業日
参加者: CTO、DX推進責任者、インフラリーダー、財務担当
アジェンダ:
- 前月コスト実績(予算比)
- サービス別・部門別の増減分析
- 異常コストのアラート確認
- 今月の削減施策進捗
- 来月の予算見通し
3. アラート設定
AWS Budgetsで予算管理
aws budgets create-budget \
--account-id 123456789012 \
--budget \
BudgetName=monthly-aws-budget,\
BudgetLimit={Amount=2100000,Unit=JPY},\
TimeUnit=MONTHLY,\
BudgetType=COST
CloudWatchアラートで異常検知
# 日次コストが前日比+20%の場合にアラート
Metric: EstimatedCharges
Statistic: Maximum
Period: 86400 # 1日
Threshold: 前日比+20%
Actions: SNS通知 → Slack連携
4. タグ付けルールの徹底
必須タグ:
Environment: production / staging / development
Department: engineering / marketing / sales
CostCenter: CC-001 / CC-002 / CC-003
Owner: email@example.com
Project: project-name
タグ付けの強制:
# Service Control Policy(SCP)でタグなしリソースの作成を禁止
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"ec2:RunInstances",
"rds:CreateDBInstance",
"s3:CreateBucket"
],
"Resource": "*",
"Condition": {
"Null": {
"aws:RequestTag/Environment": "true"
}
}
}
]
}
まとめ:AWS削減の3つのポイント
1. 可視化なくして削減なし
- まずコスト構造を徹底的に可視化
- Cost and Usage Report + Athena + QuickSightで自動化
- タグ付けルールの徹底
2. クイックwinで信頼を得る
- 難易度の低い施策から着手(S3、開発環境停止)
- 1ヶ月で10%削減を実現
- 信頼を得てから大きな投資(RI、ECS化)を提案
3. 継続的な改善サイクル
- 月次レビュー会議で進捗確認
- 新サービス・新機能のキャッチアップ
- FinOpsの文化を組織に根付かせる
すぐに実践できる3ステップ
ステップ1: 現状把握(今日から)
- AWS Cost Explorerで月次コスト推移を確認
- サービス別・リージョン別のコスト内訳を分析
- 上位10リソースを特定
ステップ2: クイックwin(今週中)
- S3ライフサイクルポリシーを設定
- 開発環境の自動停止をLambdaで実装
- 不要なスナップショット・AMIを削除
ステップ3: 中長期施策(来月から)
- RDS Rightsizingの検証開始
- Reserved Instance / Savings Plansの購入計画
- コンテナ化(ECS/EKS)の検討
著者について
DX・AI推進コンサルタント
大手企業グループのDX推進責任者・顧問CTO | 長年のIT・DXキャリア | AWS・GA4・生成AI活用を専門に実践ノウハウを発信中
#AWS #コスト削減 #インフラ #DX推進 #クラウド最適化
最終更新: 2025年11月9日
この記事を書いた人
nexion-lab
DX推進責任者・顧問CTO | IT業界15年以上
大手企業グループでDX推進責任者、顧問CTOとして活動。AI・生成AI活用、クラウドインフラ最適化、データドリブン経営の領域で専門性を発揮。 実務で培った知識と経験を、ブログ記事として発信しています。