コスト最適化

AWS のクラウドコストを削減しながら、必要なパフォーマンスと可用性を維持する取り組み

AWS運用

コスト最適化とは

コスト最適化は、AWS のクラウドコストを削減しながら、必要なパフォーマンスと可用性を維持する取り組みである。AWS Well-Architected Framework の 5 本柱の 1 つ。詳細は「FinOps」を参照。

サーバーレスのコスト特性

Lambda: リクエスト数 × 実行時間 × メモリ
  トラフィック 0 → コスト 0
  トラフィック増加 → 比例して増加

EC2: 時間課金 (常時稼働)
  トラフィック 0 → コストは変わらない
  → 小〜中規模はサーバーレスが安い

コスト削減の手法

手法 対象 削減率
未使用リソースの削除 EBS, EIP, NAT GW 100%
適切なサイズ選択 Lambda メモリ, EC2 20〜50%
Savings Plans EC2, Lambda, Fargate 30〜72%
S3 ライフサイクル 古いデータ 50〜80%
DynamoDB オンデマンド 予測不能なトラフィック 変動

Lambda のコスト最適化

Lambda はメモリサイズを適切に設定し (過剰に大きくしない)、タイムアウトを短く設定する。esbuild でバンドルサイズを削減し、@aws-sdk/* を外部化するとコールドスタートも改善する。

S3 ライフサイクル

S3 ライフサイクルルールで、古いデータを Glacier に移行し、一定期間後に自動削除する。90 日で Glacier 移行、365 日で削除が一般的な設定だ。

DynamoDB のコスト

モード 適用
オンデマンド トラフィックが予測不能
プロビジョンド トラフィックが安定
プロビジョンド + Auto Scaling トラフィックにパターンがある

コスト監視

AWS Budgets で月額予算を設定し、閾値 (80% など) を超えたらメール通知を送る。Cost Explorer で未使用リソースを定期的に確認する。

コスト最適化のチェックリスト

定期的に以下を確認する。Cost Explorer で未使用リソース (アタッチされていない EBS ボリューム、未使用の Elastic IP、不要な NAT Gateway) がないか確認し、発見次第削除する。開発環境は夜間・休日にスケジュール停止する。CloudWatch Logs の保持期間 (TTL) を適切に設定し、不要なログが蓄積しないようにする。VPC 内の Lambda は NAT Gateway 経由で外部通信するため、NAT Gateway のコストが Lambda 自体より高くなることがある点に注意する。

コスト最適化の理解を深めるには関連書籍が参考になる。

関連用語