プライベートECS Fargateコンテナから外部にアクセスする方法【NAT Gateway】
プライベートなECS FargateコンテナからNAT Gatewayを経由して外部サービスにアクセスする方法をまとめました。

前提
- プロジェクトがECSにデプロイされている
LaravelプロジェクトをECSにデプロイする方法についてはこちらをご覧ください。
手順
1. NAT Gatewayを作成する
AWSマネジメントコンソールのNAT Gateway一覧にアクセスします。
「Create NAT Gateway」をクリックしてください。

任意の名前を入力し、VPCを選択します。
「Availability mode」はデフォルトで「Regional」(自動設定)に設定されているはずです。特定のアベイラビリティゾーン用に設定したい場合は「Zonal」を選択して設定を行ってください。
また、「Method of Elastic IP (EIP) allocation」はデフォルトで「Automatic」(自動設定)に設定されていると思います。事前に作成したElastic IPアドレスを使用したい場合は「Manual」を選択してください。
「Connectivity type」が「Public」になっていることを確認し、「Create NAT Gateway」をクリックしてください。

2. プライベートルートテーブルを編集する
AWSマネジメントコンソールのルートテーブル一覧にアクセスします。
プライベートルートテーブルを選択し、「Edit routes」をクリックしてください。

以下のルートを追加し、「Save changes」をクリックします。
これによりすべてのアウトバウンド通信がNAT Gatewayを経由してインターネットに送信されるようになります。
| Destination | Target |
|---|---|
| 0.0.0.0/0 | NAT Gateway (上で作成したもの) |

これでプライベートなECSコンテナから外部APIやAmazon S3などのAWSサービスにアクセスできるようになります。
※Amazon S3などのAWSサービスについてはNAT Gatewayの代わりにVPCエンドポイントを使用することを推奨します(コスト削減)。