Fargate における Amazon ECS タスクのネットワークオプション
デフォルトでは、Fargate 上のすべての Amazon ECS タスクには、プライマリプライベート IP アドレスを備えた Elastic Network Interface (ENI) が提供されます。パブリックサブネットを使用する際には、オプションで、タスクの ENI にパブリック IP アドレスを割り当てることができます。VPC がデュアルスタックモード向けに設定されていて、IPv6 CIDR ブロックを備えたサブネットを使用する場合、タスクの ENI にも IPv6 アドレスが割り当てられます。タスクには、一度に 1 つの ENI しか関連付けられません。また、同じタスクに属するコンテナでも、localhost インターフェイス経由での通信が可能になります。VPC とサブネットの詳細については、「Amazon VPC ユーザーガイド」の「Amazon VPC の仕組み」を参照してください。
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 インターフェイス VPC エンドポイント (AWS PrivateLink)」を参照してください。
CloudFormation で NetworkConfiguration リソースを使用する方法の例については、「Amazon ECS の CloudFormation テンプレートの例」を参照してください。
作成した 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 マネジメントコンソール 内のサービスを作成または更新する際に自動的に作成されます。詳細については、「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 を使用する既存のタスクにこれらの変更を適用することはできません。新しい設定で新しいタスクを開始し、変更内容をテストしてロールバックの必要性がないことを確認した上で、古いタスクを停止しスムーズに移行を行います。
-
以下は、Linux の場合は Fargate プラットフォームバージョン
1.4.0以降、Windows の場合は1.0.0以降で実行されるタスクに適用されます。デュアルスタックサブネットで起動されたタスクは、IPv4 アドレスおよび IPv6 アドレスを受け取ります。IPv6-only サブネットで起動されたタスクは、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 で実行する Fargate の Amazon ECS タスクには、インターネットゲートウェイまたは NAT ゲートウェイへの IPv4 (0.0.0.0/0) ルートが必要です。詳細については、Amazon VPC ユーザーガイドの「インターネットゲートウェイ」を参照してください。
IPv6-only モードで VPC を使用する
IPv6-only 設定では、Amazon ECS タスクは IPv6 経由でのみ通信します。VPC およびサブネットを IPv6-only モードに設定するには、IPv6 CIDR ブロックを VPC に追加し、IPv6 CIDR ブロックのみを含むサブネットを作成してください。詳しくは「Amazon VPC ユーザーガイド」の「VPC の IPv6 サポートを追加する」および「サブネットを作成する」を参照してください。また、IPv6 ターゲットでルートテーブルを更新し、IPv6 ルールでセキュリティグループを設定する必要があります。詳しくは「Amazon VPC ユーザーガイド」の「ルートテーブルを設定する」および「セキュリティグループルールを設定する」を参照してください。
以下の考慮事項に注意してください。
-
Amazon ECS サービスを IPv6-only サブネットを使用する設定に直接更新するか、別の IPv6-only サービスを作成し、Amazon ECS ブルー/グリーンデプロイを用いて新サービスへのトラフィック移行を行うことで、IPv4-only 設定の更新および IPv6-only 設定のデュアルスタックを有効にすることが可能です。Amazon ECS におけるブルー/グリーンデプロイについて、詳しくは「Amazon ECS ブルー/グリーンデプロイ」を参照してください。
-
IPv6-only Amazon ECS サービスは、IPv6 ターゲットグループを保有するデュアルスタックロードバランサーを使用する必要があります。Application Load Balancer または Network Load Balancer の背後で稼働する既存の Amazon ECS サービスを移行する場合は、新しいデュアルスタックロードバランサーを作成して旧ロードバランサーからトラフィックを切り替えるか、既存のロードバランサーの IP アドレスタイプを更新します。
Network Load Balancer について、詳しくは「Network Load Balancer ユーザーガイド」の「Network Load Balancer を作成する」および「Network Load Balancer の IP アドレスタイプを更新する」を参照してください。Application Load Balancer について、詳しくは「Application Load Balancer ユーザーガイド」の「Application Load Balancer を作成する」および「Application Load Balancer の IP アドレスタイプを更新する」を参照してください。
-
IPv6-only 設定は Windows ではサポートされていません。
-
IPv4-only エンドポイントと交信する IPv6-only 設定の Amazon ECS タスクにおいては、IPv6 から IPv4 へのネットワークアドレス変換に DNS64 と NAT64 を設定できます。詳細については、Amazon VPC ユーザーガイドの DNS64 および NAT64 を参照してください。
-
IPv6-only 設定は、Fargate プラットフォームバージョン
1.4.0以降に対応しています。 -
IPv6-only 設定の Amazon ECS ワークロードでは、Amazon ECR からイメージを取得する際に Amazon ECR デュアルスタックイメージ URI エンドポイントを使用する必要があります。詳しくは「Amazon Elastic Container Registry ユーザーガイド」の「Getting started with making requests over IPv6」を参照してください。
注記
Amazon ECR は、IPv6-only 設定のタスクが使用するデュアルスタックインターフェイス VPC エンドポイントには対応していません。詳しくは「Amazon Elastic Container Registry ユーザーガイド」の「Getting started with making requests over IPv6」を参照してください。
-
Amazon ECS Exec は IPv6-only 設定には対応していません。
-
Amazon CloudWatch は、FIPS-140 準拠の IPv6-only 設定で動作する Amazon ECS タスクに対する監視用途で使用するデュアルスタック FIPS エンドポイントには対応していません。FIPS-140 について、詳しくは「AWS Fargate 連邦情報処理標準 (FIPS-140)」を参照してください。
Amazon ECS の IPv6-only モードをサポートしている AWS リージョン
IPv6-only 設定でのタスクは、Amazon ECS が利用可能な以下の AWS リージョンで実行できます。
米国東部(オハイオ)
米国東部 (バージニア北部)
米国西部 (北カリフォルニア)
米国西部 (オレゴン)
アフリカ (ケープタウン)
アジアパシフィック (香港)
アジアパシフィック (ハイデラバード)
アジアパシフィック (ジャカルタ)
アジアパシフィック (メルボルン)
アジアパシフィック (ムンバイ)
アジアパシフィック (大阪)
アジアパシフィック (ソウル)
アジアパシフィック (シンガポール)
アジアパシフィック (シドニー)
アジアパシフィック (東京)
カナダ (中部)
カナダ西部 (カルガリー)
中国 (北京)
中国 (寧夏)
欧州 (フランクフルト)
欧州 (ロンドン)
欧州 (ミラノ)
欧州 (パリ)
欧州 (スペイン)
イスラエル (テルアビブ)
中東 (バーレーン)
中東 (アラブ首長国連邦)
南米 (サンパウロ)
AWS GovCloud (米国東部)
AWS GovCloud (米国西部)