AWSのコスト削減というと真っ先にSavings Plans/Reserved Instancesの話になりがちですが、Cost Explorerの月次サマリーだけを眺めていても気づきにくい「地味に効いている」コスト項目があります。この記事では、実際に請求明細を読み解く中でよく見つかる5つの隠れコストを紹介します。

1. NAT Gatewayのデータ処理料金

NAT Gatewayは時間課金に加えて、通過データ量に応じた処理料金がかかります。プライベートサブネットからのアウトバウンド通信量が多い構成(外部API呼び出しが頻繁なマイクロサービス等)では、この処理料金がNAT Gateway費用全体の大半を占めることがあります。

対策: VPCエンドポイント(S3、DynamoDB等)を使える通信はNAT Gatewayを経由させない設計に変更する。

2. クロスAZ・クロスリージョンのデータ転送料

同一リージョン内でもAZをまたぐ通信には転送料がかかります。マルチAZ構成のRDSとEC2が異なるAZに配置されている場合や、リージョン間でのバックアップレプリケーションが常時走っている場合、積み重なると無視できない金額になります。

対策: Cost Explorerの使用タイプ別フィルタで「DataTransfer-Regional-Bytes」「DataTransfer-Out-Bytes」を確認し、AZ配置を見直す。

3. EBSスナップショットの世代管理漏れ

AMI作成やバックアップのたびに増えるEBSスナップショットは、古い世代を削除するライフサイクルポリシーが設定されていないと際限なく積み上がります。特に頻繁にAMIを更新するCI/CD環境では見落とされがちです。

対策: Data Lifecycle Manager(DLM)で保持世代数を設定し、定期的に棚卸しする。

4. CloudWatch Logsの無制限保持

デフォルトではCloudWatch Logsのロググループは「失効しない」設定になっており、保持期間を明示的に設定しない限りログが永久に蓄積されます。開発環境のデバッグログをそのまま放置しているケースが多く見られます。

対策: 全ロググループに保持期間(例: 30日〜90日)を設定し、長期保管が必要なものだけS3にエクスポートする運用に切り替える。

5. 未アタッチのElastic IPアドレス

EC2インスタンスにアタッチされていないElastic IPアドレスには時間課金が発生します。インスタンスの再作成やAuto Scalingのスケールイン時に解放し忘れたEIPが、気づかれないまま課金され続けることがあります。

対策: 月次でEC2コンソールの「Elastic IP」一覧を確認し、未アタッチのものを解放する。

まとめ

いずれも単体の金額は大きくありませんが、複数のアカウント・リージョンにまたがって放置されると合算で無視できない規模になります。Cost Explorerの月次サマリーだけでなく、使用タイプ(Usage Type)単位でのドリルダウンを四半期に一度は行うことをおすすめします。