awsvpc ネットワークモード - Amazon Elastic Container Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

awsvpc ネットワークモード

awsvpc ネットワークモードで利用できるタスクネットワーキング機能により、Amazon EC2 インスタンスと同じネットワーキングプロパティが Amazon ECS タスクに提供されます。awsvpc ネットワークモードを使用すると、アプリケーションが VPCs 内の相互通信や の他のサービスと通信する方法をより細かく制御できるため、コンテナネットワークが簡素化されます。awsvpc ネットワークモードは、タスク内でセキュリティグループとネットワークモニタリングツールをより詳細なレベルで使用できるようにすることで、コンテナのセキュリティを強化します。VPC フローログなどの他の Amazon EC2 ネットワーク機能を使用して、タスクとの間のトラフィックをモニタリングすることもできます。さらに、同じタスクに属するコンテナが、localhost インターフェイス経由で通信できるようになります。

タスク Elastic Network Interface (ENI) は、Amazon ECS のフルマネージド機能です。Amazon ECS により ENI が作成され、指定されたセキュリティグループが関連付けられているホスト Amazon EC2 インスタンスにアタッチされます。タスクは、Amazon EC2 インスタンスがプライマリネットワークインターフェイスで実行する場合と同じ方法で、ENI を介してネットワークトラフィックを送受信します。各タスクの ENI には、デフォルトでプライベート IPv4 アドレスが割り当てられます。VPC がデュアルスタックモードに対応していて、IPv6 CIDR ブロックを備えたサブネットを使用する場合、タスクの ENI も IPv6 アドレスを受け取ります。各タスクは、ENI を 1 つだけ持つことができます。

これらの ENIsは、アカウントの Amazon EC2 コンソールに表示されます。アカウントは ENIsをデタッチまたは変更できません。これは、実行中のタスクに関連付けられている ENI が誤って削除されないようにするためです。タスクの ENI アタッチメント情報は、Amazon ECS コンソールまたは DescribeTasks API オペレーションで表示できます。タスクが停止した場合やサービスがスケールダウンした場合は、ENI がデタッチされて削除されます。

ENI 密度を上げる必要がある場合は、 awsvpcTrunkingアカウント設定を使用します。Amazon ECS は、コンテナインスタンスの「トランク」ネットワークインターフェイスも作成してアタッチします。トランクネットワークは Amazon ECS によって完全に管理されます。コンテナインスタンスを Amazon ECS クラスターから削除または登録解除するときに、トランク ENI は削除されます。awsvpcTrunking アカウント設定の詳細については、「」を参照してください前提条件

タスク定義の networkModeパラメータawsvpcで を指定します。詳細については、「ネットワークモード」を参照してください。

次に、タスクの実行時またはサービスの作成時に、1 つ以上のサブネットを含む networkConfigurationパラメータを使用して、タスクを ENI にアタッチする 1 つ以上のセキュリティグループに配置します。詳細については、「ネットワーク構成」を参照してください。タスクは、これらのサブネットとして、同じアベイラビリティーゾーン内の適切な Amazon EC2 インスタンスに配置されます。また、指定されたセキュリティグループが、タスク用にプロビジョニングされた ENI に関連付けられます。

Linux に関する考慮事項

Linux オペレーティングシステムを使用する場合は、以下の点を考慮してください。

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

    aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com
  • Amazon EC2 Linux インスタンスでは、awsvpc ネットワークモードを使用するタスクを実行するには、コンテナエージェントのバージョン 1.15.0 以降が必要です。Amazon ECS 最適化 AMI を使用している場合、インスタンスには、少なくとも ecs-init パッケージの 1.15.0-4 バージョン以降も必要です。

  • enableDnsHostnamesenableDnsSupport オプションの両方が VPC で有効になっている場合、Amazon ECS は Amazon が提供する (内部) DNS ホスト名でタスクのホスト名を設定します。これらのオプションが有効でない場合、タスクの DNS ホスト名にはランダムな名前が付けられます。VPC の DNS 設定の詳細については、「Amazon VPC ユーザーガイド」の「VPC の DNS 属性を変更する」を参照してください。

  • awsvpc ネットワークモードを使用する Amazon ECS タスクには、それぞれ独自の Elastic Network Interface (ENI) が提供されます。この ENI は、ENI をホストする Amazon EC2 インスタンスにアタッチされています。Amazon EC2 Linux インスタンスにアタッチできるネットワークインターフェイスの数には、デフォルトのクォータが設定されます。そのクォータに対して、プライマリネットワークインターフェイスは 1 個としてカウントされます。例えば、c5.large インスタンスのデフォルトでは、アタッチ可能な ENI の数は最大 3 個までです。このインスタンスのプライマリネットワークインターフェイスも、1 個としてカウントされます。さらに 2 つの ENI をインスタンスにアタッチできます。awsvpc ネットワークモードを使用する各タスクには ENI が必要なため、通常このインスタンスタイプでは、このようなタスクを 2 つのみ実行できます。各インスタンスタイプのデフォルトでの ENI の制限については、「Amazon EC2 Linux インスタンス用ユーザーガイド」の、「各インスタンスタイプのネットワークインターフェイスあたりの IP アドレス数」を参照してください。

  • Amazon ECS では、高い ENI 密度がサポートされているインスタンスタイプを使用して、Amazon EC2 Linux インスタンスを起動します。awsvpcTrunking アカウント設定にオプトインし、これらのインスタンスタイプを使用して Amazon EC2 Linux インスタンスをクラスターに登録すると、対象のインスタンスで ENI のクオータが引き上げられます。これらの、クォータが引き上げられたインスタンスを使用することで、各 Amazon EC2 Linux インスタンスにさらに多くのタスクを配置できます。高い ENI 密度をトランキング機能で使用するには、Amazon EC2 インスタンスにコンテナエージェントのバージョン 1.28.1 以降が必要です。Amazon ECS 最適化 Linux AMI を使用している場合には、インスタンスに ecs-init パッケージの 1.28.1-2 バージョン以降も必要です。awsvpcTrunking アカウント設定のオプトインの詳細については、「アカウント設定による Amazon ECS 機能へのアクセス」を参照してください。ENI トランキングの詳細については、「Elastic Network Interface のトランキング」を参照してください。

  • Amazon EC2 Linux インスタンスで awsvpc ネットワークモードを使用するタスクをホストする場合、タスク ENI にはパブリック IP アドレスが付与されません。インターネットにアクセスするには、NAT ゲートウェイを使用するよう設定されたプライベートサブネットでタスクを起動する必要があります。詳細については、「Amazon VPC ユーザーガイド」の「NAT ゲートウェイ」を参照してください。インバウンドのネットワークアクセスは、プライベート IP アドレスを使用する VPC 内からのものか、その VPC からロードバランサーを経由させルーティングされたものである必要があります。パブリックサブネット内で起動されたタスクは、インターネットにアクセスできません。

  • Amazon ECS は、ユーザーの Amazon EC2 Linux インスタンスにアタッチする ENI のみを認識します。ENI をインスタンスに手動でアタッチした場合は、十分なネットワークアダプタを持たないインスタンスに対しても、Amazon ECS がタスクの追加を試みる可能性があります。これはタスクでのタイムアウトを引き起こし、ステータスがプロビジョニング解除へ、さらに停止状態へと移行する可能性があります。インスタンスに対する ENI の手動によるアタッチは推奨されません。

  • Amazon EC2 インスタンスは、awsvpc ネットワークモードでのタスク配置を検討する ecs.capability.task-eni 機能に登録する必要があります。ecs-init1.15.0-4 バージョン以降を実行するインスタンスは、自動的にこの属性に登録されます。

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

  • タスクを実行するときや、awsvpc ネットワークモードを使用するサービスを作成するときは、awsVpcConfiguration に指定できるサブネットには 16 個、セキュリティグループには 5 個という制限があります。詳細については、「Amazon Elastic Container Service API リファレンスAwsVpcConfiguration」の「」を参照してください。

  • awsvpc ネットワークモードを使用してタスクが開始されると、タスク定義内のコンテナが開始される前に、各タスクに Amazon ECS コンテナエージェントによって追加の pause コンテナが作成されます。次に、amazon-ecs-cni-plugins CNI プラグインを実行してpauseコンテナのネットワーク名前空間を設定します。その後、エージェントによってタスク内の残りのコンテナが開始されます。こうすることで pause コンテナのネットワークスタックが共有されます。つまり、タスク内のすべてのコンテナは ENI の IP アドレスによってアドレス可能であり、localhost インターフェイス経由で相互に通信できます。

  • サービスに含まれるタスクに、awsvpc ネットワークモードを使用するものがある場合は、Application Load Balancer と Network Load Balancer のみがサポートされます。このようなサービス用にターゲットグループを作成する場合は、ターゲットタイプとして ip を選択する必要があります。instance を使用しません。これは、awsvpc ネットワークモードを使用するタスクは、Amazon EC2 Linux インスタンスではなく、ENI に関連付けられているためです。詳細については、「負荷分散を使用して Amazon ECS サービストラフィックを分散する」を参照してください。

  • 使用中の DHCP オプション設定を変更するように VPC が更新された場合も、既存のタスクにこれらの変更を適用することはできません。これらのネットワーク設定を安全に変更するためには、変更内容を適用して新しいタスクを開始し、それらの動作が正常なことを確認した上で、既存のタスクを停止します。

Windows に関する考慮事項

Windows オペレーティングシステムを使用するときは、考慮事項を次に示します:

  • Amazon ECS 最適化 Windows Server 2016 AMI を使用するコンテナインスタンスは、awsvpc ネットワークモードを使用するタスクをホストしません。Amazon ECS 最適化 Windows Server 2016 AMI、および awsvpc ネットワークネットワークモ ードをサポートする Windows AMI を含むクラスターを使用する場合、awsvpc ネットワークモードを使用するタスクは Windows 2016 Server インスタンスでは起動されません。代わりに、awsvpc ネットワークモードがサポートされるインスタンスで起動されます。

  • Amazon EC2 Windows インスタンスでは、 awsvpcネットワークモードを使用する Windows コンテナの CloudWatch メトリクスを使用するには、 コンテナエージェントのバージョン 1.57.1以降が必要です。

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

    aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com
  • Amazon EC2 Windows インスタンスでは、awsvpc ネットワークモードを使用するタスクを実行するには、コンテナエージェントのバージョン 1.54.0 以降が必要です。インスタンスをブートストラップするときは、awsvpc ネットワークモードに必要なオプションを設定する必要があります。詳しくは、「Amazon EC2 ユーザーデータを使用して Windows コンテナインスタンスをブートストラップする」を参照してください。

  • VPC で enableDnsHostnamesenableDnsSupport オプションの両方が有効になっている場合、Amazon ECS は、Amazon が提供する (内部) DNS ホスト名を使用してタスクのホスト名を設定します。これらのオプションが有効になっていない場合は、タスクの DNS ホスト名はランダムな名前に設定されます。VPC の DNS 設定の詳細については、「Amazon VPC ユーザーガイド」の「VPC の DNS 属性を変更する」を参照してください。

  • awsvpc モードを使用する Amazon ECS タスクには、それぞれ独自の Elastic Network Interface (ENI) が提供されます。この ENI は、ENI をホストする Amazon EC2 Windows インスタンスにアタッチされています。Amazon EC2 Windows インスタンスへのアタッチが可能な、ネットワークインターフェイスの数には、デフォルトでクォータが設定されます。このクォータに対して、プライマリネットワークインターフェイスは 1 個としてカウントされます。例えば、 c5.large インスタンスのデフォルトでは、最大 3 個までの ENI がアタッチできます。このインスタンスのプライマリネットワークインターフェイスも、それら ENI の内の 1 個としてカウントされます。さらに 2 つの ENI をインスタンスにアタッチできます。awsvpc ネットワークモードを使用する各タスクには ENI が必要なため、通常、このインスタンスタイプでは、このようなタスクを 2 つのみ実行できます。各インスタンスタイプの ENI 数に関する、デフォルトの制限については、「Amazon EC2 Windows インスタンス用ユーザーガイド」の「各インスタンスタイプのネットワークインターフェイスあたりの IP アドレス数」を参照してください。

  • Amazon EC2 Windows インスタンスで awsvpc ネットワークモードを使用するタスクをホストする場合、タスク ENI にはパブリック IP アドレスが付与されません。インターネットにアクセスするには、NAT ゲートウェイを使用するよう設定されたプライベートサブネットで、タスクを起動します。詳細については、「Amazon VPC ユーザーガイド」の「NAT ゲートウェイ」を参照してください。インバウンドのネットワークアクセスは、プライベート IP アドレスを使用する VPC 内からのものか、VPC 内のロードバランサーを経由してルーティングされたものである必要があります。パブリックサブネット内で起動されたタスクは、インターネットにアクセスできません。

  • Amazon ECS は、Amazon EC2 Windows インスタンスにアタッチした ENI だけを認識します。ENI をインスタンスに手動でアタッチした場合は、十分なネットワークアダプタを持たないインスタンスに対しても、Amazon ECS がタスクの追加を試みる可能性があります。これはタスクでのタイムアウトを引き起こし、ステータスがプロビジョニング解除へ、さらに停止状態へと移行する可能性があります。インスタンスに対する ENI の手動によるアタッチは推奨されません。

  • Amazon EC2 Windows インスタンスは、awsvpc ネットワークモードでのタスク配置を検討する ecs.capability.task-eni 機能に登録する必要があります。

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

  • awsvpc ネットワークモードを使用するタスクの実行時、もしくはサービスの作成時は、最大 16 個までのサブネットと 5 個までのセキュリティグループを awsVpcConfiguration 内で指定できます。詳細については、「Amazon Elastic Container Service API リファレンスAwsVpcConfiguration」の「」を参照してください。

  • awsvpc ネットワークモードを使用してタスクが開始されると、タスク定義内のコンテナが開始される前に、各タスクに Amazon ECS コンテナエージェントによって追加の pause コンテナが作成されます。次に、amazon-ecs-cni-plugins CNI プラグインを実行してpauseコンテナのネットワーク名前空間を設定します。その後、エージェントによってタスク内の残りのコンテナが開始されます。こうすることで pause コンテナのネットワークスタックが共有されます。つまり、タスク内のすべてのコンテナは ENI の IP アドレスによってアドレス可能であり、localhost インターフェイス経由で相互に通信できます。

  • サービスに含まれるタスクに、awsvpc ネットワークモードを使用するものがある場合は、Application Load Balancer と Network Load Balancer のみがサポートされます。このようなサービス用にターゲットグループを作成する場合は、ターゲットタイプとして instance ではなく、ip を選択する必要があります。これは、awsvpc ネットワークモードを使用するタスクは、Amazon EC2 Windows インスタンスではなく、ENI に関連付けられているためです。詳細については、「負荷分散を使用して Amazon ECS サービストラフィックを分散する」を参照してください。

  • 使用中の DHCP オプション設定を変更するように VPC が更新された場合も、既存のタスクにこれらの変更を適用することはできません。これらのネットワーク設定を安全に変更するためには、変更内容を適用して新しいタスクを開始し、それらの動作が正常なことを確認した上で、既存のタスクを停止します。

  • EC2 Windows 構成で awsvpc ネットワークモードを使用する場合、以下はサポートされません。

    • デュアルスタック設定

    • IPv6

    • ENI トランキング

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

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

VPC でインターネットゲートウェイまたは送信専用インターネットゲートウェイを設定した場合は、その VPC をデュアルスタックモードで使用できます。この設定により、IPv6 アドレスが割り当てられたタスクは、インターネットゲートウェイまたは送信専用インターネットゲートウェイを介して、インターネットへのアクセスが可能になります。NAT ゲートウェイはオプションです。詳細については、Amazon VPC ユーザーガイドの「インターネットゲートウェイ」および「Egress-only インターネットゲートウェイ」を参照してください。

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

  • タスクをホストしている Amazon EC2 インスタンスは、バージョン 1.45.0 以降のコンテナエージェントを使用しています。インスタンスが使用しているエージェントのバージョンを確認し、必要に応じて更新する方法については、「Amazon ECS コンテナエージェントをアップデートする」を参照してください。

  • dualStackIPv6 アカウント設定が有効になります。詳細については、「アカウント設定による Amazon ECS 機能へのアクセス」を参照してください。

  • タスクは awsvpc ネットワークモードを使用しています。

  • VPC とサブネットは、IPv6 に対して有効になっています。この設定には、指定されたサブネットで作成されたネットワークインターフェイスが含まれます。VPC をデュアルスタックモードに設定する方法の詳細については、「Amazon VPC ユーザーガイド」 の「既存の VPC を IPv4 から IPv6 に移行する」および「Modify the IPv6 addressing attribute for your subnet」(サブネットの IPv6 アドレス属性を変更する) を参照してください。