AWSのコストを月額$10,000削減した話:NATゲートウェイからVPCエンドポイントへの切り替え
はじめに
以前、社内向けWebアプリの保守を担当していた際、AWSの請求額が高いので原因を調査するよう依頼されました。今回は、その原因調査から対策までの経験を共有します。
月額約$10,000と大幅なコスト削減に成功したので、同じような構成で運用している方の参考になればと思います。
原因の特定
調査の結果、主なコストの原因は NATゲートウェイ であることがわかりました。
原因となっていた部分のシステム構成は以下の通りです。
なぜコストがかかっていたかというと:
- ECSのタスクがプライベートサブネット内で定期実行されていた
- タスクがECRからDockerイメージを取得する際、NATゲートウェイを経由していた
- 複数のタスクが1分毎や5分毎など短いスパンで起動していたため、NATゲートウェイのデータ転送量が膨大に
結果として、NATゲートウェイ経由の通信料が月額約$5,000に達していました。
そして本番・開発環境の両方で同じ構成だったため、合計で月額約$10,000のコストが発生していたわけです。
対処法:VPCエンドポイントの導入
ECRからイメージを取得する際に NATゲートウェイを経由せず、VPCエンドポイントを経由するように変更しました。
変更後のシステム構成は以下の通りです。
具体的な設定方法は公式ドキュメントを参考にしてください。
AWS公式:VPCエンドポイントを使用したECRアクセス
VPCエンドポイントとは?
VPCエンドポイントは、VPC内からAWSサービスに直接プライベート接続できる機能です。
主な特徴は以下の通りです。
- インターネットを経由しない:プライベートIPでAWSサービスにアクセスできる
- NATゲートウェイ不要:データ転送コストが大幅に削減できる
- セキュリティ向上:インターがットに公開せずに通信可能
NATゲートウェイとのコスト比較
項目 | NATゲートウェイ | VPCエンドポイント |
---|---|---|
データ転送 | 高額(GB単位で課金) | 無料または低額 |
インターネット経由 | 必須 | 不要 |
セキュリティ | 公開IP経由で通信 | プライベート通信 |
頻繁にECRからイメージを取得するタスクがある場合、NATゲートウェイを経由するとコストが急増しますが、VPCエンドポイントを使えばほぼ定額に抑えられます。
変更後のコスト変化
もともとNATゲートウェイ経由のデータ通信料が月額約$5,000 かかっていましたが、
VPCエンドポイント導入後は月額$100以下になりました。
本番環境と開発環境それぞれ同じ構成にしたので、
トータルで月額約$10,000のコスト削減に成功しました。
まとめ
今回の経験から学んだことは以下です。
- NATゲートウェイ経由でECRからイメージを取得し、タスクを頻繁に起動している場合はコストが急増する
- VPCエンドポイントを利用することで、コストを削減可能
-
ドキュメント化や引継ぎの重要性を再認識
→ 開発メンバーが全員離任していた上に、仕様に関する資料があまり残っておらず原因調査が難航 -
開発だけでなく、運用視点の知識も重要
→ Cost Explorer や CloudWatch Logs の活用方法を知っていれば、より早く原因を特定できたのではないか?
AWSで運用コストを最適化する際、特にECRやS3を頻繁に利用するタスクではVPCエンドポイントの活用が非常に効果的です。
同じような課題を抱えている方は、ぜひVPCエンドポイント導入を検討してみてください。
Discussion