Fargate タスクネットワーキング - Amazon ECS

Fargate タスクネットワーキング

重要

Amazon EC2 インスタンスでホストされている Amazon ECS タスクを使用している場合、Amazon Elastic Container Service 開発者ガイドの「タスクのネットワーキング」を参照してください。

デフォルトでは、Fargate 上のすべての Amazon ECS タスクには、プライマリプライベート IP アドレスを備えた Elastic Network Interface (ENI) が提供されます。パブリックサブネットを使用する場合、オプションでタスクの ENI にパブリック IP アドレスを割り当てることができます。VPC がデュアルスタックモードに対応していて、IPv6 CIDR ブロックを備えたサブネットを使用する場合、タスクの ENI も IPv6 アドレスを受け取ります。タスクには、一度に 1 つの ENI しか関連付けられません。VPC およびサブネットの詳細については、Amazon VPC ユーザーガイドの「VPCs とサブネット」を参照してください。

Fargate のタスクがコンテナイメージをプルできるようにするには、タスクにインターネットへのルートが必要です。次に、タスクにインターネットへのルートがあることを確認する方法について説明します。

  • パブリックサブネットを使用する場合、タスク ENI にパブリック IP アドレスを割り当てることができます。

  • プライベートサブネットを使用する場合、サブネットに NAT ゲートウェイをアタッチできます。

  • Amazon ECR でホストされるコンテナイメージを使用する場合、インターフェイス VPC エンドポイントを使用するように Amazon ECR を設定でき、イメージのプルはタスクのプライベート IPv4 アドレス上で実行されます。詳細については、Amazon Elastic コンテナレジストリ ユーザーガイドAmazon ECR Interface VPC エンドポイント(AWS PrivateLink)を参照してください。

各タスクにはそれぞれ独自の ENI が提供されるため、VPC フローログなどのネットワーキング機能を活用して、タスクとの間で送受信されるトラフィックをモニタリングできるようになります。さらに、同じタスクに属するコンテナが、localhost インターフェイス経由で通信できるようになります。詳細については、「Amazon VPC User Guide」(Amazon VPC ユーザーガイド) の「VPC Flow Logs」(VPC フローログ) を参照してください。

各タスクが独自の ENI を取得するため、AWS PrivateLink を利用することもできます。VPC インターフェースエンドポイントを設定することで、プライベート IP アドレスを通じて Amazon ECS の API にアクセスができます。AWS PrivateLink は、VPC と Amazon ECS 間のすべてのネットワークトラフィックを Amazon ネットワークに制限します。インターネットゲートウェイ、NAT デバイス、または仮想プライベートゲートウェイは必要ありません。詳細については、「Amazon ECS ベストプラクティスガイド」の AWS PrivateLink を参照してください。

作成した ENI は、AWS Fargate によって完全に管理されます。また、Fargate へのアクセス許可を付与するために使用される IAM ポリシーが関連付けられます。Fargate プラットフォームバージョン 1.4.0 以降を使用するタスクの場合、タスクは単一の ENI (タスク ENI と呼ばれる) を受け取ります。すべてのネットワークトラフィックは、VPC 内でこの ENI を通過し、VPC フローログを通じて表示されます。Fargate プラットフォームバージョン 1.3.0 以前を使用するタスクの場合、タスクは、タスク ENI に加えて Fargate が所有する ENI も別に受け取ります。この ENI は、VPC フローログに表示されない一部のネットワークトラフィックに使用されます。ネットワークトラフィックの動作と、プラットフォームバージョンごとに必要な IAM ポリシーについて次に説明します。

[Action] (アクション)

Linux プラットフォームバージョン 1.3.0 以前でのトラフィックフロー

Linux プラットフォームバージョン 1.4.0 でのトラフィックフロー

Windows プラットフォームバージョン 1.0.0 でのトラフィックフロー

IAM アクセス許可

Amazon ECR ログイン認証情報の取得

Fargate が所有する ENI

タスク ENI

タスク ENI

タスク実行IAM ロール

イメージプル

タスク ENI

タスク ENI

タスク ENI

タスク実行IAM ロール

ログドライバーによるログの送信

タスク ENI

タスク ENI

タスク ENI

タスク実行IAM ロール

FireLens for Amazon ECS を介したログの送信

タスク ENI

タスク ENI

タスク ENI

タスク IAM ロール

Secrets Manager またはSystems Manager からシークレットの取得

Fargate が所有する ENI

タスク ENI

タスク ENI

タスク実行IAM ロール

Amazon EFS ファイルシステムトラフィック

利用不可

タスク ENI

タスク ENI

タスク IAM ロール

アプリケーションのトラフィック

タスク ENI

タスク ENI

タスク ENI

タスク IAM ロール

Fargate タスクネットワーキングに関する考慮事項

タスクネットワーキングを使用する場合の考慮事項を紹介します。

  • Amazon ECS のサービスにリンクされたロールは、ユーザーの代わりにその他の AWS サービスを呼び出すアクセス許可 を Amazon ECS に付与します。このロールは、クラスターを作成する際、または AWS Management Console でサービスを作成または更新すると、自動的に作成されます。詳細については、「Amazon ECS のサービスにリンクされたロール」を参照してください。サービスにリンクされたロールは、次の AWS CLI コマンドを使用して作成することもできます。

    aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com
  • enableDnsHostnamesenableDnsSupport オプションの両方が VPC で有効になっている場合、Amazon ECS は Amazon が提供する (内部) DNS ホスト名でタスクのホスト名を設定します。これらのオプションが有効になっていない場合、タスクの DNS ホスト名はランダムなホスト名になります。VPC の DNS 設定の詳細については、Amazon VPC ユーザーガイドの「VPC で DNS の使用」を参照してください。

  • awsvpcConfiguration で指定できるサブネットは 16 個まで、セキュリティグループは 5 個までに制限されています。詳細については、Amazon Elastic Container Service API リファレンス の「AwsVpcConfiguration」を参照してください。

  • Fargate によって作成およびアタッチされた ENI は、手動でデタッチしたり、アカウントによって変更したりできません。これは、実行中のタスクに関連付けられている ENI が誤って削除されないようにするためです。タスクの ENI を解放するには、タスクを停止します。

  • たとえば、使用する DHCP オプションセットを変更するために VPC が更新され、その変更を VPC を使用しているタスクに反映させる場合は、それらのタスクを停止して新しいタスクを開始する必要があります。

  • IPv6 CIDR ブロックを備えたサブネットで起動したタスクは、Linux の場合はプラットフォームバージョン 1.4.0 以降、または Windows の場合は 1.0.0 を使用している場合のみ、IPv6 アドレスを受け取ります。

  • Linux の場合はプラットフォームバージョン 1.4.0 以降、または Windows の場合は 1.0.0 を使用するタスクの場合に、タスク ENI はジャンボフレームをサポートします。ネットワークインターフェイスは、最大転送単位 (MTU) で設定されます。MTU は、1 つのフレームに収まるペイロードの最大サイズです。MTU が大きいほど、1 つのフレーム内に収まるアプリケーションのペイロードが増えるため、フレームあたりのオーバーヘッドが減少し、効率が向上します。ジャンボフレームをサポートすると、オーバーヘッドが減ります。タスクと転送先とのネットワークパスでジャンボフレームをサポートすると、VPC 内に残っているすべてのトラフィックなどのオーバーヘッドが軽減されます。

  • Fargate 起動タイプを使用するタスクのサービスは、Application Load Balancer と Network Load Balancer のみをサポートします。Classic Load Balancer はサポートされていません。また、ターゲットグループを作成する場合は、ターゲットタイプとして instance ではなく、ip を選択する必要があります。詳細については、「サービスの負荷分散」を参照してください。

デュアルスタックモードでの VPC の使用

デュアルスタックモードで VPC を使用する場合、タスクは IPv4 または IPv6、あるいはその両方を経由して通信できます。IPv4 アドレスと IPv6 アドレスは互いに独立しています。また VPC で IPv4 と IPv6 のルーティングとセキュリティを設定する必要があります。VPC をデュアルスタックモードに設定する方法の詳細については、Amazon VPC ユーザーガイドの「IPv6 への移行」を参照してください。

次の条件が満たされた場合、Fargate の Amazon ECS タスクには IPv6 アドレスが割り当てられます。

  • VPC とサブネットが IPv6 に対して有効になっています。VPC をデュアルスタックモードに設定する方法の詳細については、Amazon VPC ユーザーガイドの「IPv6 への移行」を参照してください。

  • タスクまたはサービスは、プラットフォームバージョン 1.4.0 以降を使用しています。

  • dualStackIPv6 アカウント設定が有効になります。詳細については、「アカウント設定」を参照してください。

IPv6 アドレスが割り当てられた Fargate の Amazon ECS タスクは、VPC がインターネットゲートウェイまたは出力専用インターネットゲートウェイを使用して設定されている限り、インターネットにアクセスできます。NAT ゲートウェイは必要ありません。詳細については、Amazon VPC ユーザーガイドの「インターネットゲートウェイ」および「Egress-only インターネットゲートウェイ」を参照してください。