AWS ECSコスト削減対策まとめ
📋 実施した3つのコスト削減対策(AWS公式ドキュメント基準)
1️⃣ Cross-Zone Load Balancing 無効化
AWS公式の説明:
「各ロードバランサーノードは、同じアベイラビリティゾーンの登録済みターゲットにのみトラフィックを分散します」
出典: Edit target group attributes for your Application Load Balancer
内容:
- ALBターゲットグループレベルで無効化
- ALBの各AZノードは、同じAZ内のタスクにのみトラフィックを送信
- 異なるAZ間のデータ転送を防止
メリット:
- ✅ Cross-AZデータ転送料金が大幅削減(
APN1-DataTransfer-Regional-Bytes
の課金削減) - ✅ レイテンシーの改善(同じAZ内の通信のみ)
- ✅ 障害ドメインの分離(AWS公式推奨: 不健全なゾーンが健全なゾーンに影響を与えない)
デメリット:
- ⚠️ 各AZに最低1つのタスクが必要(AWS公式: 空のAZは503エラーを引き起こす)
- ⚠️ Target Stickinessが使用不可
- ⚠️ Lambda関数をターゲットにできない
削減料金:
- 変更前: $30-50/月(Cross-AZ転送料金)
- 変更後: $5-10/月(最小限の転送のみ)
- 削減額: 約$25-40/月
2️⃣ Fargate Spot 導入
AWS公式の説明:
「Fargate Spotを使用すると、中断可能なECSタスクを通常のFargate料金と比較して割引料金で実行できます。AWSが容量を必要とする場合、タスクは2分前の警告とともに中断されます」
出典: AWS Fargate Spot compared to reserved instances
内容:
- FARGATE_SPOT を使用
- 通常のFargateより最大70%安い料金
- 2分前通知でタスクが中断される可能性あり
メリット:
- ✅ コスト大幅削減(最大70%)
- ✅ 開発・ステージング環境に最適
- ✅ 中断時はECSが自動的に新しいSpot容量をリクエスト
デメリット:
- ⚠️ 2分前通知でタスクが中断される可能性
- ⚠️ 本番環境には不向き(可用性重視の場合)
- ⚠️ 別のAZに再配置される可能性
削減料金:
- 変更前: $10.23/月(FARGATE)
- 変更後: $3.07/月(FARGATE_SPOT)
- 削減額: $7.16/月(70%削減)
3️⃣ Availability Zone Rebalancing 無効化
AWS公式の説明:
「Amazon ECSはタスク分散を継続的に監視し、アベイラビリティゾーン間で不均等なワークロードを再調整して高可用性を維持します」
出典: Balancing an Amazon ECS service across Availability Zones
内容:
- 2025年9月5日からデフォルトで有効
- タスクがAZ間で不均等な場合、自動的に再配置
- タスク数が少ない場合は無効化が推奨
メリット(無効化した場合):
- ✅ タスクが固定AZに配置される(Cross-Zone無効化と相性良い)
- ✅ 不要なタスク再起動を防止
- ✅ Cross-AZデータ転送を完全に0にできる
- ✅ コスト最適化
デメリット(無効化した場合):
- ⚠️ AZ障害時に手動でタスクを再配置する必要
- ⚠️ 高可用性が若干低下(開発環境では問題なし)
メリット(有効にした場合):
- ✅ 高可用性の維持
- ✅ AZ障害からの自動復旧
デメリット(有効にした場合):
- ⚠️ タスク数=1の場合、リバランスが不可能
- ⚠️ Cross-Zone無効化と併用すると503エラーのリスク
削減料金:
- 直接的な料金削減はなし
- 間接効果: Cross-Zone無効化の効果を最大化(タスクを固定AZに維持)
🎯 AWS公式推奨のベストプラクティス
開発環境(現在の設定):
- ✅ Cross-Zone無効化: コスト削減優先(実施済み)
- ✅ Fargate Spot: 中断許容可能なワークロードで使用(実施済み)
- ✅ AZリバランス無効化: タスク数が少ない場合(実施済み)
本番環境への移行時:
- ⚠️ Cross-Zone有効化: 高可用性のため
- ⚠️ Fargate通常: 安定性重視
- ⚠️ AZリバランス有効化: 自動復旧のため
📚 参考資料(AWS公式ドキュメント)
- Edit target group attributes for your Application Load Balancer
- AWS Fargate Spot compared to reserved instances
- Balancing an Amazon ECS service across Availability Zones
- Understanding data transfer charges
- Optimize costs for AWS Fargate tasks on Amazon ECS
🚀 今後のさらなるコスト削減案
-
AWS Compute Optimizerでタスクサイズ最適化
- CPU/メモリの使用率を分析
- 過剰なリソースを削減
- 削減見込み: 30-50%
-
ALBをNetwork Load Balancerに変更
- ALB: $15.62/月
- NLB: $9-10/月
- 削減額: $5-6/月