aws ecs

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

サムネイル

前提

  • プロジェクトがECSにデプロイされている
    LaravelプロジェクトをECSにデプロイする方法についてはこちらをご覧ください。

手順

  1. NAT Gatewayを作成する
  2. プライベートルートテーブルを編集する

1. NAT Gatewayを作成する

AWSマネジメントコンソールのNAT Gateway一覧にアクセスします。
「Create NAT Gateway」をクリックしてください。

AWSマネジメントコンソールのNAT Gateway一覧画面

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

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エンドポイントを使用することを推奨します(コスト削減)。

関連記事