Fargate 起動タイプの Amazon ECS タスクのネットワークオプション
デフォルトでは、Fargate 上のすべての Amazon ECS タスクには、プライマリプライベート IP アドレスを備えた Elastic Network Interface (ENI) が提供されます。パブリックサブネットを使用する際には、オプションで、タスクの ENI にパブリック IP アドレスを割り当てることができます。VPC がデュアルスタックモード向けに設定されていて、IPv6 CIDR ブロックを備えたサブネットを使用する場合、タスクの ENI にも IPv6 アドレスが割り当てられます。タスクには、一度に 1 つの ENI しか関連付けられません。また、同じタスクに属するコンテナでも、localhost
インターフェイス経由での通信が可能になります。VPC およびサブネットの詳細については、Amazon VPC ユーザーガイドの「VPCs とサブネット」を参照してください。
Fargate のタスクがコンテナイメージをプルできるようにするには、そのタスクにインターネットへのルートが必要です。次に、タスクにインターネットへのルートがあるか検証する方法について説明します。
-
パブリックサブネットを使用する場合、タスク ENI にパブリック IP アドレスを割り当てることができます。
-
プライベートサブネットを使用する場合、サブネットに NAT ゲートウェイをアタッチできます。
-
Amazon ECR でホストされるコンテナイメージを使用する場合、インターフェイスの VPC エンドポイントを使用するように Amazon ECR を設定でき、イメージのプルはタスクのプライベート IPv4 アドレス上で実行されます。詳細については、Amazon Elastic コンテナレジストリ ユーザーガイドの Amazon ECR Interface VPC エンドポイント(AWS PrivateLink)を参照してください。
各タスクにはそれぞれ独自の ENI が提供されるため、VPC フローログなどのネットワーキング機能を使用して、タスクとの間で送受信されるトラフィックをモニタリングできるようになります。詳細については、Amazon VPC ユーザーガイドのVPC フローログを参照してください。
AWS PrivateLink を活用することもできます。VPC インターフェースエンドポイントを設定することで、プライベート IP アドレスを通じて Amazon ECS の API にアクセスができます。AWS PrivateLink は、VPC と Amazon ECS 間のすべてのネットワークトラフィックを Amazon ネットワークに制限します。インターネットゲートウェイ、NAT デバイス、または仮想プライベートゲートウェイは必要ありません。詳細については、「Amazon ECS ベストプラクティスガイド」の AWS PrivateLink を参照してください。
AWS CloudFormation で NetworkConfiguration
リソースを使用する方法の例については、「別のスタックを使用して Amazon ECS リソースを作成する」を参照してください。
作成した ENI は、AWS Fargate によって完全に管理されます。加えて、Fargate へのアクセス許可を付与するために使用される IAM ポリシーが関連付けられます。Fargate プラットフォームバージョン 1.4.0
以降を使用するタスクは、単一の ENI (タスク ENI と呼ばれる) を受け取ります。すべてのネットワークトラフィックは、VPC 内でこの ENI を通過します。このトラフィックは VPC フローログに記録されます。Fargate プラットフォームバージョン 1.3.0
以前を使用するタスクには、タスク ENI に加えて Fargate が所有する ENI も別に割り当てられます。この ENI は、VPC フローログに表示されない一部のネットワークトラフィックに使用されます。次の表で、ネットワークトラフィックの動作と、プラットフォームバージョンごとに必要な IAM ポリシーについて説明します。
アクション | 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 ロール |
考慮事項
タスクネットワーキングを使用する際は、以下の点を考慮してください。
-
Amazon ECS のサービスにリンクされたロールは、ユーザーの代わりにその他の AWS サービスを呼び出すアクセス許可 を Amazon ECS に付与します。このロールは、クラスターを作成する際、または AWS Management Console 内のサービスを作成または更新する際に自動的に作成されます。詳細については、「Amazon ECS のサービスリンクロールの使用」を参照してください。サービスにリンクされたロールは、次の AWS CLI コマンドを使用して作成することもできます。
aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com
-
VPC で
enableDnsHostnames
とenableDnsSupport
オプションの両方が有効になっている場合、Amazon ECS は、Amazon が提供する (内部) DNS ホスト名を使用してタスクのホスト名を設定します。これらのオプションが有効でない場合、タスクの DNS ホスト名にはランダムな名前が付けられます。VPC の DNS 設定の詳細については、「Amazon VPC ユーザーガイド」の「VPC の DNS 属性を変更する」を参照してください。 -
awsVpcConfiguration
には、最大 16 個のサブネットまでと、5 個のセキュリティグループまでが指定可能です。詳細については、Amazon Elastic Container Service API リファレンス の「AwsVpcConfiguration」を参照してください。 -
Fargate によって作成およびアタッチされた ENI は、手動でデタッチしたり変更したりできません。これは、実行中のタスクに関連付けられている ENI が誤って削除されないようにするためです。タスクの ENI を解放するには、タスクを停止します。
-
VPC サブネットが更新され、使用する DHCP オプションセットが変更された場合でも、VPC を使用する既存のタスクにこれらの変更を適用することはできません。新しい設定で新しいタスクを開始し、変更内容をテストしてロールバックの必要性がないことを確認した上で、古いタスクを停止しスムーズに移行を行います。
-
IPv6 CIDR ブロックを備えたサブネットで起動したタスクで、Fargate プラットフォームバージョン
1.4.0
以降 (Linux の場合) またはバージョン1.0.0
(Windows の場合) を使用している場合、このタスクには IPv6 アドレスのみが割り当てられます。 -
プラットフォームバージョン
1.4.0
以降 (Linux の場合)、またはバージョン1.0.0
(Windows の場合) を使用するタスクの場合、タスク ENI はジャンボフレームをサポートします。ネットワークインターフェイスは、最大転送単位 (MTU) で設定されます。MTU は、1 つのフレームに収まるペイロードの最大サイズです。MTU が大きいほど、1 つのフレーム内に収まるアプリケーションのペイロードが増えるため、フレームあたりのオーバーヘッドが減少し、効率が向上します。ジャンボフレームをサポートし、タスクと転送先とのネットワークパスでジャンボフレームをサポートすると、オーバーヘッドを削減できます。 -
Fargate 起動タイプを使用するタスクのサービスは、Application Load Balancer と Network Load Balancer のみをサポートします。Classic Load Balancer はサポートされていません。ターゲットグループを作成する場合は、ターゲットタイプとして
instance
ではなく、ip
を選択する必要があります。詳細については、「ロードバランサーを使用して Amazon ECS サービストラフィックを分散する」を参照してください。
デュアルスタックモードでの VPC の使用
デュアルスタックモードで VPC を使用する場合、タスクは IPv4 または IPv6、あるいはその両方を経由して通信できます。IPv4 アドレスと IPv6 アドレスは互いに独立しています。また VPC で IPv4 と IPv6 のルーティングとセキュリティを設定する必要があります。VPC をデュアルスタックモードに設定する方法の詳細については、Amazon VPC ユーザーガイドの「IPv6 への移行」を参照してください。
以下の条件が満たされた場合、Fargate の Amazon ECS タスクには IPv6 アドレスが割り当てられます。
-
タスクを起動するリージョンで、タスクを起動する IAM プリンシパルの Amazon ECS
dualStackIPv6
アカウント設定がオン (enabled
) になっていること。この設定は、API もしくは AWS CLI を使用してのみ変更できます。アカウントの特定の IAM プリンシパルに対してのみこの設定を有効にしてもよいし、あるいはアカウントのデフォルト設定を変更してアカウント全体に対して有効にすることもできます。詳細については、「アカウント設定による Amazon ECS 機能へのアクセス」を参照してください。 -
VPC とサブネットが IPv6 に対して有効になっています。VPC をデュアルスタックモード用に設定する方法については、「Amazon VPC ユーザーガイド」の「既存の VPC を IPv4 から IPv6 に移行する」を参照してください。
-
サブネットが、IPv6 アドレスの自動割り当てに有効になっています。サブネットの設定方法の詳細については、Amazon VPC ユーザーガイドの「サブネットの IPv6 アドレス属性を変更する」を参照してください。
-
タスクまたはサービスは、Linux 用の Fargate プラットフォームバージョン
1.4.0
以降を使用します。
VPC が、インターネットゲートウェイまたは出力専用インターネットゲートウェイを使用して設定されている場合には、IPv6 アドレスが割り当てられた Fargate の Amazon ECS タスクから、インターネットへのアクセスが可能になります。NAT ゲートウェイは必要ありません。詳細については、Amazon VPC ユーザーガイドの「インターネットゲートウェイ」および「Egress-only インターネットゲートウェイ」を参照してください。