Amazon Elastic Container Service
開発者ガイド (API バージョン 2014-11-13)

Elastic Network Interface のトランキング

awsvpc ネットワークモードを使用する Amazon ECS タスクには、それぞれ独自の Elastic Network Interface (ENI) が提供されます。この ENI は、ENI をホストするコンテナインスタンスにアタッチされています。Amazon EC2 インスタンスにアタッチできるネットワークインターフェイスの数にはデフォルトの制限があり、プライマリネットワークインターフェイスも 1 つとしてカウントされます。たとえば、デフォルトでは c5.large インスタンスには最大 3 つの ENI がアタッチされています。このインスタンスのプライマリネットワークインターフェイスも 1 つとしてカウントされるため、このインスタンスに追加でアタッチできる ENI は 2 つです。awsvpc ネットワークモードを使用する各タスクには ENI が必要なため、通常、このインスタンスタイプでは、このようなタスクを 2 つのみ実行できます。

Amazon ECS は、サポートされている Amazon EC2 インスタンスタイプを使用して、ENI 密度が高いコンテナインスタンスの起動をサポートします。これらのインスタンスタイプを使用し、awsvpcTrunking アカウント設定にオプトインすると、新しく起動されたコンテナインスタンスで追加の EMI を利用できます。この設定により、各コンテナインスタンスの awsvpc ネットワークモードを使用して、より多くのタスクを配置できます。この機能を使用すると、awsvpcTrunking が有効になっている c5.large インスタンスでは、ENI 制限が 12 に引き上げられます。コンテナインスタンスはプライマリネットワークインターフェイスを持ち、Amazon ECS はコンテナインスタンスの「トランク」ネットワークインターフェイスを作成およびアタッチします。したがって、この設定では、現在の 2 個ではなく 10 個のタスクをコンテナインスタンスで起動できます。

トランクネットワークインターフェイスは Amazon ECS によって完全に管理され、コンテナインスタンスを削除またはクラスターから登録解除するときに削除されます。詳細については、「タスクネットワーキングと awsvpc ネットワークモード」を参照してください。

ENI トランキングに関する考慮事項

ENI トランキング機能を使用する場合にいくつかの考慮事項があります。

  • ENI の制限引き上げに対応しているのは、Amazon ECS に最適化された AMI の Linux バリアント、バージョン 1.28.1 以降のコンテナエージェントを持つ Amazon Linux の他のバリアント、バージョン 1.28.1-2 以降の ecs-init パッケージのみです。Amazon ECS に最適化された AMI の最新の Linux バリアントを使用する場合、これらの要件が満たされます。現時点では、Windows コンテナはサポートされていません。

  • awsvpcTrunking のオプトイン後に起動された新しい Amazon EC2 インスタンスのみが、引き上げられた ENI 制限とトランクネットワークインターフェイスを受け取ります。以前に起動されたインスタンスは、実行されたアクションに関係なく、これらの機能を受け取りません。

  • Amazon ECS タスクは、awsvpc ネットワークモードと EC2 起動タイプを使用する必要があります。Fargate 起動タイプを使用するタスクは、起動数に関係なく、常に専用の ENI を受け取るため、この機能は必要ありません。

  • 新しいコンテナインスタンスを起動するときに、インスタンスは REGISTERING 状態に移行し、トランク Elastic Network Interface がインスタンスに対してプロビジョニングされます。登録に失敗した場合、インスタンスは REGISTRATION_FAILED 状態に移行します。コンテナインスタンスの内容を表示し、statusReason パラメータで失敗理由を確認できます。

  • コンテナインスタンスが削除されると、インスタンスは DEREGISTERING 状態に移行し、トランク Elastic Network Interface が解放されます。次に、インスタンスは INACTIVE 状態に移行します。

  • ENI 制限が引き上げられたパブリックサブネットのコンテナインスタンスが停止し、再起動されると、インスタンスはパブリック IP アドレスを失い、コンテナエージェントは接続を失います。

ENI 制限が引き上げられたコンテナインスタンスの操作

ENI 制限が引き上げられたコンテナインスタンスを起動する前に、次の前提条件を満たす必要があります。

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

    aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com
  • お客様のアカウントまたはコンテナインスタンスの IAM ロールは、awsvpcTrunking アカウント設定にオプトインする必要があります。これは以下の方法で行うことができます。

    • すべてのユーザーは PutAccountSettingDefault API を使用して、アカウントのすべての IAM ユーザーとロールをオプトインできる

    • ルートユーザーは PutAccountSetting API を使用して、インスタンスをクラスターに登録する IAM ユーザーまたはコンテナインスタンスのロールをオプトインできる

    • PutAccountSetting API がクラスターに登録される前にインスタンスで実行される場合、コンテナインスタンスのロールが自動的に選択される可能性がある

    詳細については、「アカウント設定」を参照してください。

前提条件が満たされた後は、サポートされているいずれかの Amazon EC2 インスタンスタイプを使用して新しいコンテナインスタンスを起動でき、インスタンスの ENI 制限は引き上げられます。サポートされているインスタンスタイプについては、「サポートされる Amazon EC2 インスタンスタイプ」を参照してください。コンテナインスタンスで、バージョン 1.28.1 以降のコンテナエージェントと、バージョン 1.28.1-2 以降の ecs-init パッケージが必要です。Amazon ECS に最適化された AMI の最新の Linux バリアントを使用する場合、これらの要件が満たされます。詳細については、「Amazon ECS コンテナインスタンスの起動」を参照してください。

コンソールを使用して、引き上げられた ENI 制限にアカウントのすべての IAM ユーザーまたはロールをオプトインするには

  1. アカウントのルートユーザーとして、Amazon ECS コンソール (https://console.aws.amazon.com/ecs/) を開きます。

  2. 画面上部のナビゲーションバーで、引き上げられた ENI 制限にオプトインするリージョンを選択します。

  3. ダッシュボードで、[アカウント設定] を選択します。

  4. [IAM ユーザーまたはロール] で、ルートユーザーまたはコンテナインスタンスの IAM ロールが選択されていることを確認します。

  5. [AWSVPC トランキング] のチェックボックスをオンにします。終了したら、[保存] を選択します。

    重要

    IAM ユーザーと IAM ロールでこのアクションを実行するには ecs:PutAccountSetting アクセス許可が必要です。

  6. 確認画面で [Confirm (確認)] を選択すると、選択内容が保存されます。

コマンドラインを使用して、引き上げられた ENI 制限にアカウントのすべての IAM ユーザーまたはロールをオプトインするには

アカウントのユーザーは、以下のいずれかのコマンドを使用して、アカウントのすべての IAM ユーザーまたはロールのデフォルトアカウント設定を変更することができます。これらの変更は、IAM ユーザーまたはロールがこれらの設定を明示的に上書きしない限り、AWS アカウント全体に適用されます。

  • put-account-setting-default (AWS CLI)

    aws ecs put-account-setting-default --name awsvpcTrunking --value enabled --region us-east-1
  • Write-ECSAccountSettingDefault (AWS Tools for Windows PowerShell)

    Write-ECSAccountSettingDefault -Name awsvpcTrunking -Value enabled -Region us-east-1 -Force

コマンドラインを使用して、ルートユーザーとして IAM ユーザーまたはコンテナインスタンスの IAM ロールを引き上げられた ENI 制限にオプトインするには

アカウントのルートユーザーは、次のいずれかのコマンドを使用して、プリンシパル IAM ユーザー、またはコンテナインスタンスロールの IAM ロールの ARN をリクエストで指定して、アカウント設定を変更できます。

  • put-account-setting (AWS CLI)

    次の例では、特定の IAM ユーザーのアカウント設定を変更します。

    aws ecs put-account-setting --name awsvpcTrunking --value enabled --principal-arn arn:aws:iam::aws_account_id:user/userName --region us-east-1

    次の例では、特定のコンテナインスタンスの IAM ロールのアカウント設定を変更します。

    aws ecs put-account-setting --name awsvpcTrunking --value enabled --principal-arn arn:aws:iam::aws_account_id:role/ecsInstanceRole --region us-east-1
  • Write-ECSAccountSetting (AWS Tools for Windows PowerShell)

    次の例では、特定の IAM ユーザーのアカウント設定を変更します。

    Write-ECSAccountSetting -Name awsvpcTrunking -Value enabled -PrincipalArn arn:aws:iam::aws_account_id:user/userName -Region us-east-1 -Force

    次の例では、特定のコンテナインスタンスの IAM ロールのアカウント設定を変更します。

    Write-ECSAccountSetting -Name awsvpcTrunking -Value enabled -PrincipalArn arn:aws:iam::aws_account_id:role/ecsInstanceRole -Region us-east-1 -Force

AWS CLI を使用して、ENI 制限が引き上げられたコンテナインスタンスを表示するには

各コンテナインスタンスにはデフォルトのネットワークインターフェイスがあり、これはトランクネットワークインターフェイストランクと呼ばれます。次のコマンドを使用し、ecs.awsvpc-trunk-id 属性のクエリを実行して、ENI 制限が引き上げられたコンテナインスタンスを一覧表示します。この属性は、トランクネットワークインターフェイスがあることを示します。

  • list-attributes (AWS CLI)

    aws ecs list-attributes --target-type container-instance --attribute-name ecs.awsvpc-trunk-id --region us-east-1
  • Get-ECSAttributeList (AWS Tools for Windows PowerShell)

    Get-ECSAttributeList -TargetType container-instance -AttributeName ecs.awsvpc-trunk-id -Region us-east-1

サポートされる Amazon EC2 インスタンスタイプ

以下に示しているのは、サポートされる Amazon EC2 インスタンスタイプと、awsvpcTrunking アカウント設定をオプトインする前と後で、各インスタンスタイプにおいて awsvpc ネットワークモードを使用して起動できるタスクの数です。各インスタンスタイプでの Elastic Network Interface (ENI) の制限に関して、現在のタスク制限に対しては 1 が追加されます (プライマリネットワークインターフェイスが制限に対してカウントされるため)。また、新しいタスク制限に対しては 2 が追加されます (プライマリネットワークインターフェイスとトランクネットワークインスタンスの両方が、制限に対してカウントされるため)。

インスタンスタイプ

インスタンスあたりの現在のタスク制限

インスタンスあたりの新しいタスク制限

a1 instance family

a1.medium

1

10

a1.large

2

10

a1.xlarge

3

20

a1.2xlarge

3

40

a1.4xlarge

7

60

c5 instance family

c5.large

2

10

c5.xlarge

3

20

c5.2xlarge

3

40

c5.4xlarge

7

60

c5.9xlarge

7

60

c5.18xlarge

14

120

c5d.large

2

10

c5d.xlarge

3

20

c5d.2xlarge

3

40

c5d.4xlarge

7

60

c5d.9xlarge

7

60

c5d.18xlarge

14

120

c5n.large

2

10

c5n.xlarge

3

20

c5n.2xlarge

3

40

c5n.4xlarge

7

60

c5n.9xlarge

7

60

c5n.18xlarge

14

120

m5 instance family

m5.large

2

10

m5.xlarge

3

20

m5.2xlarge

3

40

m5.4xlarge

7

60

m5.12xlarge

7

60

m5.24xlarge

14

120

m5a.large

2

10

m5a.xlarge

3

20

m5a.2xlarge

3

40

m5a.4xlarge

7

60

m5a.12xlarge

7

60

m5a.24xlarge

14

120

m5ad.large

2

10

m5ad.xlarge

3

20

m5ad.2xlarge

3

40

m5ad.4xlarge

7

60

m5ad.12xlarge

7

60

m5ad.24xlarge

14

120

m5d.large

2

10

m5d.xlarge

3

20

m5d.2xlarge

3

40

m5d.4xlarge

7

60

m5d.12xlarge

7

60

m5d.24xlarge

14

120

p3 instance family

p3.2xlarge

3

40

p3.8xlarge

7

60

p3.16xlarge

7

120

p3dn.24xlarge

14

120

r5 instance family

r5.large

2

10

r5.xlarge

3

20

r5.2xlarge

3

40

r5.4xlarge

7

60

r5.12xlarge

7

60

r5.24xlarge

14

120

r5a.large

2

10

r5a.xlarge

3

20

r5a.2xlarge

3

40

r5a.4xlarge

7

60

r5a.12xlarge

7

60

r5a.24xlarge

14

120

r5ad.large

2

10

r5ad.xlarge

3

20

r5ad.2xlarge

3

40

r5ad.4xlarge

7

60

r5ad.12xlarge

7

60

r5ad.24xlarge

14

120

r5d.large

2

10

r5d.xlarge

3

20

r5d.2xlarge

3

40

r5d.4xlarge

7

60

r5d.12xlarge

7

60

r5d.24xlarge

14

120