プライベートサブネットの AWS Fargate で Amazon Elastic Container Service (Amazon ECS) タスクを実行したいと考えています。
簡単な説明
Fargate タスクは、プライベートサブネットで実行できます。ただし、ユースケースによっては、特定の操作のためにインターネットアクセスが必要になる場合があります。例えば、パブリックリポジトリからイメージをプルしたい場合があります。あるいは、タスクのためにインターネットアクセスを防止したい場合もあります。
インターネットにアクセスできないプライベートサブネットで Fargate タスクを実行するには、仮想プライベートクラウド (VPC) エンドポイントを使用します。VPC エンドポイントを使用すると、タスクにインターネットへのアクセスを付与することなく Fargate タスクを実行できます。必要なエンドポイントには、プライベート IP アドレス経由でアクセスします。
タスクでプライベートサブネットからインターネットにアクセスする必要がある場合は、NAT ゲートウェイを使用してインターネットアクセスを付与します。必要なエンドポイントには、NAT ゲートウェイのパブリック IP アドレス経由でアクセスします。
解決策
VPC を作成する
パブリックサブネットまたはプライベートサブネットを使用して Amazon Virtual Private Cloud (Amazon VPC) を作成します。次に、ユースケースに応じて、「インターネットにアクセスできないプライベートサブネットを使用する (VPC エンドポイント方式)」の手順を実行します。あるいは、「インターネットにアクセスできるプライベートサブネットを使用する」の手順を実行します。
インターネットにアクセスできないプライベートサブネットを使用する (VPC エンドポイント方式)
インターフェイスエンドポイントと Amazon Simple Storage Solution (Amazon S3) ゲートウェイエンドポイントを作成するには、次の手順を実行します。
- Amazon S3 ゲートウェイエンドポイントを作成します。
- Amazon Elastic Container Registry (Amazon ECR) インターフェイスエンドポイントを作成します。
- AWS Secrets Manager を使用してタスクと Amazon CloudWatch Logs にシークレットを挿入するタスクの場合は、両方のサービスのインターフェイスエンドポイントを作成します。
注: これらの VPC エンドポイントのセキュリティグループは、Fargate タスクセキュリティグループまたは Fargate タスク VPC CIDR 範囲からの TCP ポート 443 でのインバウンドトラフィックを許可します。
- この記事の「Amazon ECS クラスターとサービスを作成する」セクションの手順を実行します。
インターネットにアクセスできるプライベートサブネットを使用する
NAT ゲートウェイを作成します。NAT ゲートウェイを作成する場合は、次のタスクを実行します。
- NAT ゲートウェイをパブリックサブネット内に配置します。
- プライベートサブネットのルートテーブルを更新します。
[送信先] に 0.0.0.0/0 と入力します。
[ターゲット] で、NAT ゲートウェイの ID を選択します。
次に、この記事の「Amazon ECS クラスターとサービスを作成する」セクションの手順を実行します。
Amazon ECS クラスターとサービスを作成する
- Amazon ECS クラスターを作成します。[インフラストラクチャ] で、[AWS Fargate (サーバーレス)] を選択します。
- Amazon ECS サービスを作成します。
Fargate サービス用のネットワークを設定する場合は、次のタスクを実行します。
- 前に選択した方式に基づいて、VPC エンドポイント用に設定したプライベートサブネットを選択します。あるいは、NAT ゲートウェイ用に設定したサブネットを選択します。
- セキュリティグループに対して、Amazon ECS エンドポイントにアクセスするためのポート 443 でのアウトバウンドトラフィックを許可します。