

# Amazon ECS Linux コンテナインスタンスの管理
<a name="manage-linux"></a>

Amazon ECS ワークロードに EC2 インスタンスを使用する場合、インスタンスの維持はユーザーの責任となります。

**Topics**
+ [コンテナインスタンスの起動](launch_container_instance.md)
+ [Linux コンテナインスタンスのブートストラップ](bootstrap_container_instance.md)
+ [スポットインスタンス通知を受信するようにコンテナインスタンスを設定する](spot-instance-draining-linux-container.md)
+ [コンテナインスタンスの起動時にスクリプトを実行する](start_task_at_launch.md)
+ [Amazon ECS Linux コンテナインスタンスのネットワークインターフェイスを増やす](container-instance-eni.md)
+ [コンテナインスタンスのメモリを予約する](memory-management.md)
+ [コンテナインスタンスのリモート管理](ec2-run-command.md)
+ [Linux コンテナインスタンスに HTTP プロキシを使用する](http_proxy_config.md)
+ [Auto Scaling グループ用に事前初期化されたインスタンスを設定する](using-warm-pool.md)
+ [Amazon ECS コンテナエージェントをアップデートする](ecs-agent-update.md)

Amazon ECSコンテナエージェントの各バージョンは、異なる機能セットをサポートし、以前のバージョンのバグ修正を提供します。可能であれば、最新バージョンの Amazon ECSコンテナエージェントを使用することを常にお勧めします。コンテナエージェントを最新バージョンに更新するには、「[Amazon ECS コンテナエージェントをアップデートする](ecs-agent-update.md)」を参照してください。

どの機能と拡張が各エージェントリリースに含まれているか確認するには、[https://github.com/aws/amazon-ecs-agent/releases](https://github.com/aws/amazon-ecs-agent/releases) を参照してください。

**重要**  
信頼できるメトリクスの最小 Docker バージョンは、Amazon ECS 最適化 AMI `20220607` 以降に含まれる Docker バージョン `v20.10.13` 以降です。  
バージョン `1.20.0` 以降のAmazon ECSエージェントでは、`18.01.0` より前のバージョンの Docker のサポートが廃止されました。

# Amazon ECS Linux コンテナインスタンスの起動
<a name="launch_container_instance"></a>

Amazon EC2 コンソールを使用して Amazon ECS コンテナインスタンスを作成できます。

インスタンスは、Amazon EC2 コンソール、AWS CLI、SDK など、さまざまな方法で起動できます。インスタンスを起動する他の方法については、「*Amazon EC2 ユーザーガイド*」の「[インスタンスを起動する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html)」を参照してください。

起動ウィザードの詳細については、「*Amazon EC2 ユーザーガイド*」の「[新しいインスタンス起動ウィザードを使用してインスタンスを起動する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html)」を参照してください。

開始する前に、「[Amazon ECS を使用するようにセットアップする](get-set-up-for-amazon-ecs.md)」のステップを完了します。

新しい Amazon EC2 ウィザードを使用してインスタンスを起動できます。インスタンス起動ウィザードでは、インスタンスの起動に必要な起動パラメータを指定します。

**Topics**
+ [手順](#linux-liw-initiate-instance-launch)
+ [名前とタグ](#linux-liw-name-and-tags)
+ [アプリケーションと OS イメージ (Amazon マシンイメージ)](#linux-liw-ami)
+ [インスタンスタイプ](#linux-liw-instance-type)
+ [キーペア (ログイン)](#linux-liw-key-pair)
+ [ネットワーク設定](#linux-liw-network-settings)
+ [ストレージの設定](#linux-liw-storage)
+ [高度な詳細](#linux-liw-advanced-details)

## 手順
<a name="linux-liw-initiate-instance-launch"></a>

開始する前に、「[Amazon ECS を使用するようにセットアップする](get-set-up-for-amazon-ecs.md)」のステップを完了します。

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 画面の上のナビゲーションバーで、現在の AWS リージョンが表示されます (例: 米国東部 (オハイオ))。インスタンスを起動するリージョンを選択します。

1. Amazon EC2 コンソールダッシュボードで、[**インスタンスを起動**] を選択してください。

## 名前とタグ
<a name="linux-liw-name-and-tags"></a>

インスタンス名はタグで、キーは **[Name]** (名前)、値は指定した名前です。インスタンス、ボリューム、および伸縮自在なグラフィックスにタグ付けできます。スポットインスタンスの場合、スポットインスタンスリクエストにのみタグを付けることができます。

インスタンス名と追加のタグを指定することはオプションです。
+ **[Name]** (名前) に、インスタンスのわかりやすい名前を入力します。名前を指定しない場合は、インスタンスをその ID で識別できます。ID は、インスタンスの起動時に自動的に生成されます。
+ タグを追加するには、**[Add additional tag]** (追加のタグを追加) を選択します。**[Add tag]** (タグを追加) を選択し、キーと値を入力し、タグ付けするリソースタイプを選択します。追加するタグごとに **[Add tag]** (タグの追加) を選択します。

## アプリケーションと OS イメージ (Amazon マシンイメージ)
<a name="linux-liw-ami"></a>

Amazon マシンイメージ (AMI) には、インスタンスの作成に必要な情報が含まれています。例えば、ある AMI には、ウェブサーバーとして動作するために必要なソフトウェア (Apache やウェブサイトなど) が含まれています。

**[Search]** (検索) バーを使用して、AWS によって発行された適切な Amazon ECS 最適化 AMI を検索します。

1. **[Search]** (検索) バーに次のいずれかの用語を入力します。
   + **ami-ecs**
   + Amazon ECS 最適化 AMI の **[Value]** (値)。

     最新の Amazon ECS 最適化 AMI とその値については、「[Linux Amazon ECS に最適化された AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html#ecs-optimized-ami-linux)」を参照してください。

1. **[Enter]** キーを押します。

1. **[Choose an Amazon Machine Image (AMI)]** (Amazon マシンイメージ (AMI) を選択) ページで、**[AWS Marketplace AMIs]** タブを選択します。

1. 左側の **[結果を絞り込む]** ペインから、**[Amazon Web Services]** を **[パブリッシャー]** として選択します。

1. 使用する AMI の行で **[Select]** (選択) を選択します。

   または、**[Cancel]** (キャンセル) (右上) を選択することで、AMI を選択せずにインスタンス起動ウィザードに戻ります。デフォルトの AMI が選択されます。AMI が、「[Amazon ECS に最適化された Linux AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html)」で概説されている要件を満たしていることを確認します。

## インスタンスタイプ
<a name="linux-liw-instance-type"></a>

インスタンスタイプは、インスタンスのハードウェア設定とサイズを定義します。インスタンスタイプが大きくなると、CPU およびメモリも増えます。詳細については、「Amazon EC2 ユーザーガイド」の「[インスタンスタイプ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)」を参照してください。IPv6 のみのワークロードを実行する場合、一部のインスタンスタイプでは IPv6 アドレスがサポートされません。詳細については、Amazon EC2 ユーザーガイドの [IPv6 アドレス](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#ipv6-addressing)を参照してください。
+ **[Instance type]** (インスタンスタイプ) で、インスタンスのインスタンスタイプを選択します。

   選択したインスタンスタイプによって、タスクの実行に使用できるリソースが決まります。

## キーペア (ログイン)
<a name="linux-liw-key-pair"></a>

**[Key pair name]** (キーペア名) には、既存のキーペアを選択するか、**[Create new key pair]** (新しいキーペアを作成) を選択して新しいキーペアを作成します。

**重要**  
[**Proceed without key pair**] (キーペアなしで進む) オプションを選択した場合 (非推奨)、ユーザーが別の方法でログインすることを許可するように設定された AMI を選択した場合でなければ、インスタンスに接続できなくなります。

## ネットワーク設定
<a name="linux-liw-network-settings"></a>

フォームのネットワーク設定セクションの **[編集]** ボタンを選択した後、必要に応じて **[ネットワーク設定]** を構成します。
+ **[VPC]** で、DB インスタンスを起動する先の VPC を選択します。IPv6 のみのワークロードを実行するには、IPv4 と IPv6 CIDR ブロックの両方を含むデュアルスタック VPC を選択します。
+ **[サブネット]** で、インスタンスを起動するサブネットを選択します。インスタンスは、アベイラビリティーゾーン、ローカルゾーン、Wavelength Zone、Outpost のいずれかに関連付けられたサブネットで起動できます。

  アベイラビリティーゾーンでインスタンスを起動するには、インスタンスを起動するサブネットを選択します。新しいサブネットを作成するには、[**Create new subnet**] を選択して Amazon VPC コンソールに移動します。終了したらインスタンス起動ウィザードに戻り、[Refresh] (更新) アイコンを選択して一覧にサブネットを読み込みます。

  ローカルゾーンでインスタンスを起動するには、ローカルゾーン内に作成したサブネットを選択します。

  アウトポストでインスタンスを起動するには、アウトポストに関連付けられた VPC 内のサブネットを選択します。

  IPv6 のみのワークロードを実行するには、IPv6 CIDR ブロックのみを含むサブネットを選択します。
+ **[Auto-assign Public IP]** (パブリック IP の自動割り当て): インスタンスをインターネットからアクセス可能にする場合は、**[Auto-assign Public IP]** (パブリック IP の自動割り当て) フィールドが **[Enable]** (有効) に設定されていることを確認します。可能にしない場合には、このフィールドを [**無効**] に設定します。
**注記**  
コンテナインスタンスには、Amazon ECS サービスエンドポイントと通信するためのアクセスが必要です。これは、インターフェイス VPC エンドポイントを介して、またはパブリック IP アドレスを持つコンテナインスタンスを通じて可能になります。  
インターフェイス VPC エンドポイントについての詳細は、「[Amazon ECS とインターフェイス VPC エンドポイント (AWS PrivateLink)](vpc-endpoints.md)」を参照してください。  
インターフェイス VPC エンドポイントが設定されておらず、コンテナインスタンスがパブリック IP アドレスを持たない場合、ネットワークアドレス変換 (NAT) を使用してこのアクセスを提供する必要があります。詳細については、「*Amazon VPC ユーザーガイド*」の「[NAT ゲートウェイ](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)」、およびこのガイドの「[Amazon ECS Linux コンテナインスタンスに HTTP プロキシを使用する](http_proxy_config.md)」を参照してください。
+ デュアルスタック VPC と IPv6 のみのサブネットを選択した場合、**[自動割り当て IPv6 IP]** で **[有効化]** を選択します。
+ **[Firewall (security groups)]** (ファイアウォール (セキュリティグループ)): セキュリティグループを使用して、コンテナインスタンスのファイアウォールルールを定義します。このルールでは、どの着信ネットワークトラフィックをコンテナインスタンスに配信するかを指定します。他のトラフィックはすべて無視されます。
  + 既存のセキュリティグループを選択するには、**[Select existing security group]** (既存のセキュリティグループを選択) を選択し、[Amazon ECS を使用するようにセットアップする](get-set-up-for-amazon-ecs.md) で作成したセキュリティグループを選択します。
+ IPv6 のみのワークロードのインスタンスを起動する場合は、**[高度なネットワーク設定]** を選択し、**[プライマリ IPv6 IP の割り当て]** に **[はい]** を選択します。
**注記**  
プライマリ IPv6 アドレスがない場合、ホストまたはブリッジネットワークモードのコンテナインスタンスで実行されているタスクは、ロードバランサーまたは AWS Cloud Map に登録されません。

## ストレージの設定
<a name="linux-liw-storage"></a>

選択した AMI には、ルートボリュームを含む、1 つまたは複数のストレージボリュームが含まれます。インスタンスにアタッチする追加のボリュームを指定できます。

**[Simple]** (シンプル) ビューを使用できます。
+ **[Storage type]** (ストレージタイプ): コンテナインスタンスのストレージを設定します。

  Amazon ECS に最適化された Amazon Linux 2 AMI を使用している場合、1 つの 30 GiB ボリュームがインスタンスに設定されます。これは、オペレーティングシステムと Docker の間で共有されます。

  Amazon ECS に最適化された AMI を使用している場合、インスタンスには 2 つのボリュームが設定されます。[**Root**] ボリュームはオペレーティングシステム用で、2 番目の Amazon EBS ボリューム (`/dev/xvdcz` にアタッチ) は Docker 用です。

  オプションで、アプリケーションのニーズに合わせてインスタンスのボリュームサイズを増減できます。

## 高度な詳細
<a name="linux-liw-advanced-details"></a>

[**Advanced details**] で、セクションを開いてフィールドを表示し、インスタンスの追加パラメータを指定します。
+ **[Purchasing option]** (購入のオプション): **[Request Spot Instances]** (スポットインスタンスのリクエスト) を選択して、スポットインスタンスをリクエストします。また、スポットインスタンスに関連する他のフィールドも設定する必要があります。詳細については、「[スポットインスタンスのリクエスト](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html)」を参照してください。
**注記**  
スポットインスタンスを使用していて、"`Not available`" メッセージが表示される場合は、別のインスタンスタイプを選択する必要があります。
+ **[IAM instance profile]** (IAM インスタンスプロフィール): コンテナインスタンス IAM ロールを選択します。通常、これは `ecsInstanceRole` という名前です。
**重要**  
適切な IAM アクセス許可を使用してコンテナインスタンスを起動しないと、Amazon ECS エージェントはクラスターに接続できません。詳細については、「[Amazon ECS コンテナインスタンスの IAM ロール](instance_IAM_role.md)」を参照してください。
+ **[ユーザーデータ]**: [Amazon ECS コンテナエージェントの設定](ecs-agent-config.md)からのエージェント環境変数のようなユーザーデータを使用して、Amazon ECS コンテナインスタンスを設定します。Amazon EC2 ユーザーデータスクリプトはインスタンスの初回起動時に 1 回のみ実行されます。以下に、ユーザーデータを使用する目的の一般的な例を紹介します。
  + デフォルトでは、コンテナインスタンスはデフォルトのクラスターで起動されます。デフォルト以外のクラスターで起動するには、**[Advanced Details]** (高度な詳細) リストを選択します。次に、[**User data**] フィールドに以下のスクリプトを貼り付け、*your\$1cluster\$1name* を使用するクラスターの名前に置き換えます。

    ```
    #!/bin/bash
    echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
    ```
  + Amazon S3 に `ecs.config` ファイルがあり、コンテナインスタンスロールへの Amazon S3 読み取り専用アクセスを有効にしている場合は、[**高度な詳細**] リストを選択します。次に、[**User data (ユーザーデータ)**] フィールドに以下のスクリプトを貼り付け、*your\$1bucket\$1name* を、AWS CLI をインストールして起動時に設定ファイルを書き込むバケットに置き換えます。
**注記**  
この設定の詳細については、「[Amazon S3 に Amazon ECS コンテナインスタンスの設定を保存する](ecs-config-s3.md)」を参照してください。

    ```
    #!/bin/bash
    yum install -y aws-cli
    aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config
    ```
  + `ECS_CONTAINER_INSTANCE_TAGS` 設定パラメータを使用して、コンテナインスタンスのタグを指定します。これにより Amazon ECS にのみ関連付けられているタグが作成され、そのタグは Amazon EC2 API ではリスト取得できません。
**重要**  
Amazon EC2 Auto Scaling グループを使用してコンテナインスタンスを起動する場合は、ECS\$1CONTAINER\$1INSTANCE\$1TAGS エージェント設定パラメータを使用してタグを追加する必要があります。これは、Auto Scaling グループを使用して起動される Amazon EC2 インスタンスにタグを追加する方法によるものです。

    ```
    #!/bin/bash
    cat <<'EOF' >> /etc/ecs/ecs.config
    ECS_CLUSTER=your_cluster_name
    ECS_CONTAINER_INSTANCE_TAGS={"tag_key": "tag_value"}
    EOF
    ```
  + コンテナインスタンスのタグを指定してから、`ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM` 設定パラメータを使用してそれらを Amazon EC2 から Amazon ECS に伝播します。

    次に、コンテナインスタンスに関連付けられたタグを伝達し、さらに `your_cluster_name` という名前のクラスターでコンテナインスタンスを登録するユーザーデータスクリプトの例を示します。

    ```
    #!/bin/bash
    cat <<'EOF' >> /etc/ecs/ecs.config
    ECS_CLUSTER=your_cluster_name
    ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM=ec2_instance
    EOF
    ```
  + デフォルトでは、Amazon ECS コンテナエージェントは、インスタンスのデフォルト IPv4 および IPv6 ルートを確認することで、そのコンテナインスタンスが IPv6-only 設定に対応しているかどうかを検出します。この動作を上書きするには、インスタンスの `/etc/ecs/ecs.config` ファイルで ` ECS_INSTANCE_IP_COMPATIBILITY` パラメータを `ipv4` または `ipv6` に設定してください。

    ```
    #!/bin/bash
    cat <<'EOF' >> /etc/ecs/ecs.config
    ECS_CLUSTER=your_cluster_name
    ECS_INSTANCE_IP_COMPATIBILITY=ipv6
    EOF
    ```

  詳細については、「[Amazon ECS Linux コンテナインスタンスをブートストラップしてデータを渡す](bootstrap_container_instance.md)」を参照してください。

# Amazon ECS Linux コンテナインスタンスをブートストラップしてデータを渡す
<a name="bootstrap_container_instance"></a>

Amazon EC2 インスタンスを起動するときに、ユーザーデータを EC2 インスタンスに渡すことができます。インスタンスの起動時に、データを使って、一般的な自動設定タスクを実行したり、スクリプトを実行したりできます。Amazon ECS では、ユーザーデータの最も一般的なユースケースは、設定情報を Docker デーモンと Amazon ECS コンテナエージェントに渡すことです。

クラウドブートフック、シェルスクリプト、`cloud-init` ディレクティブなど、複数タイプのユーザーデータを Amazon EC2 に渡すことができます。これらおよびその他の形式の種類の詳細については、「[Cloud-Init のドキュメント](https://cloudinit.readthedocs.io/en/latest/explanation/format.html)」を参照してください。

Amazon EC2 起動ウィザードの使用時にユーザーデータを渡すには、「[Amazon ECS Linux コンテナインスタンスの起動](launch_container_instance.md)」を参照してください。

コンテナインスタンスがデータを渡すようにするための設定を、コンテナエージェント設定または Docker デーモン設定で行うことができます。

## Amazon ECS コンテナエージェント
<a name="bootstrap_container_agent"></a>

Amazon ECS に最適化された AMI の Linux バリアントは、コンテナエージェントの開始時に `/etc/ecs/ecs.config` ファイルでエージェント設定データを検索します。Amazon EC2 ユーザーデータを使用して、起動時に、この設定データを指定することができます。利用可能な Amazon ECS コンテナエージェントの設定変数の詳細については、「[Amazon ECS コンテナエージェントの設定](ecs-agent-config.md)」を参照してください。

クラスター名など、単一エージェントの設定変数のみを設定するには、**echo** を使用して、変数を設定ファイルにコピーします。

```
#!/bin/bash
echo "ECS_CLUSTER=MyCluster" >> /etc/ecs/ecs.config
```

`/etc/ecs/ecs.config` に書き込む変数が複数ある場合は、以下の `heredoc` 形式を使用します。この形式は **cat** で始まる行と `EOF` の間のすべてを設定ファイルに書き込みます。

```
#!/bin/bash
cat <<'EOF' >> /etc/ecs/ecs.config
ECS_CLUSTER=MyCluster
ECS_ENGINE_AUTH_TYPE=docker
ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}}
ECS_LOGLEVEL=debug
ECS_WARM_POOLS_CHECK=true
EOF
```

カスタムインスタンス属性を設定するには、`ECS_INSTANCE_ATTRIBUTES` 環境変数を設定します。

```
#!/bin/bash
cat <<'EOF' >> ecs.config
ECS_INSTANCE_ATTRIBUTES={"envtype":"prod"}
EOF
```

## Docker デーモン
<a name="bootstrap_docker_daemon"></a>

Docker デーモンの構成情報は Amazon EC2 ユーザーデータで指定できます。設定オプションの詳細については、「[Docker デーモンのドキュメント](https://docs.docker.com/reference/cli/dockerd/)」を参照してください。

**注記**  
カスタム Docker 設定は、将来の Amazon ECS の変更や機能と警告なしに競合する可能性があるため、AWS はサポートしていません。

以下の例では、カスタムオプションが Docker デーモン構成ファイル `/etc/docker/daemon.json` に追加され、インスタンスの起動時にユーザーデータで指定されます。

```
#!/bin/bash
cat <<EOF >/etc/docker/daemon.json
{"debug": true}
EOF
systemctl restart docker --no-block
```

以下の例では、カスタムオプションが Docker デーモン構成ファイル `/etc/docker/daemon.json` に追加され、インスタンスの起動時にユーザーデータで指定されます。この例は、Docker デーモン設定ファイルの docker-proxy を無効にする方法を示します。

```
#!/bin/bash
cat <<EOF >/etc/docker/daemon.json
{"userland-proxy": false}
EOF
systemctl restart docker --no-block
```

# スポットインスタンス通知を受信するように Amazon ECS Linux コンテナインスタンスを設定する
<a name="spot-instance-draining-linux-container"></a>

利用可能なキャパシティーがなくなった場合、または、スポット料金がお客様のリクエストの上限料金を超えた場合には、Amazon EC2 はスポットインスタンスを終了、停止、または休止状態にします。Amazon EC2 は、終了アクションおよび停止アクションに対して、スポットインスタンスに 2 分間の中断通知を提供します。休止状態のアクションについては、2 分間の通知は提供されません。インスタンスで Amazon ECS スポットインスタンスドレイニングが有効になっている場合、Amazon ECS はスポットインスタンスの中断通知を受け取り、インスタンスを `DRAINING` ステータスにします。

**重要**  
自動スケーリングキャパシティの再分散よってインスタンスが削除された場合、Amazon ECS は Amazon EC2 から通知を受信しません。詳細については、「[Amazon EC2 Auto Scaling キャパシティの再分散](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html)」を参照してください。

コンテナインスタンスを `DRAINING` に設定すると、Amazon ECS によって新規タスクがそのコンテナインスタンスに配置されなくなります。ドレインしているコンテナインスタンス上にある `PENDING` 状態のサービスタスクは即時停止されます。クラスター内に使用可能なコンテナインスタンスがある場合、そのインスタンスで代わりのサービスタスクが開始されます。

デフォルトでは、スポットインスタンスドレイニングは無効になっています。

インスタンスの起動時にスポットインスタンスドレイニングを有効にできます。次のスクリプトを **[ユーザーデータ]** フィールドに追加します。*MyCluster* は、コンテナインスタンスを登録するクラスターの名前に置き換えてください。

```
#!/bin/bash
cat <<'EOF' >> /etc/ecs/ecs.config
ECS_CLUSTER=MyCluster
ECS_ENABLE_SPOT_INSTANCE_DRAINING=true
EOF
```

詳細については、「[Amazon ECS Linux コンテナインスタンスの起動](launch_container_instance.md)」を参照してください。

**既存のコンテナインスタンスに対してスポットインスタンスのドレインを有効にするには**

1. SSH 経由でスポットインスタンスに接続します。

1. `/etc/ecs/ecs.config` ファイルを編集して、以下を追加します。

   ```
   ECS_ENABLE_SPOT_INSTANCE_DRAINING=true
   ```

1. `ecs` サービスを再起動します。
   + Amazon ECS に最適化された Amazon Linux 2 AMI の場合:

     ```
     sudo systemctl restart ecs
     ```

1. (オプション) エージェント詳細分析 API オペレーションをクエリして、エージェントが実行されていることを確認し、新しいコンテナインスタンスに関する情報の一部を表示できます。詳細については、「[Amazon ECS コンテナの詳細分析](ecs-agent-introspection.md)」を参照してください。

   ```
   curl http://localhost:51678/v1/metadata
   ```

# Amazon ECS Linux コンテナインスタンスの起動時にスクリプトを実行する
<a name="start_task_at_launch"></a>

すべてのコンテナインスタンスで特定のコンテナを実行して、モニタリング、セキュリティ、メトリクス、サービス検出、ログ記録などのオペレーションやセキュリティの問題に対処する必要がある場合があります。

これを行うには、起動時にユーザーデータスクリプトで、または Upstart や **systemd** などの一部の init システムで、**docker run** コマンドを呼び出すように、コンテナインスタンスを設定できます。これは機能しますが、いくつかの欠点があります。Amazon ECS は、コンテナに関する情報を渡されず、CPU、メモリ、ポートなどのリソースをモニタリングできないためです。Amazon ECS がすべてのタスクリソースについて適切に情報を得られるように、コンテナインスタンスで実行するコンテナのタスク定義を作成します。その後、Amazon ECS を使用して、起動時に Amazon EC2 ユーザーデータを渡してタスクを配置します。

以下の手順の Amazon EC2 ユーザーデータスクリプトは、Amazon ECS イントロスペクション API を使用してコンテナインスタンスを識別します。次に、AWS CLI と **start-task** コマンドを使用して、指定されたタスクをスタートアップ時に実行します。

**コンテナインスタンスの起動時にタスクを開始するには**

1. `ecsInstanceRole` IAM ロールを変更して、`StartTask` API オペレーションに対するアクセス権限を追加します。詳細については、「*AWS Identity and Access Management ユーザーガイド*」の「[ロールに対するアクセス許可を更新する](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_update-role-permissions.html)」を参照してください。

1. Amazon ECS に最適化された Amazon Linux 2 AMI を使用して、1 つ以上のコンテナインスタンスを起動します。新しいコンテナインスタンスを起動し、EC2 ユーザーデータで次のサンプルスクリプトを使用します。*your\$1cluster\$1name* は、コンテナインスタンスに登録するクラスターに置き換え、*my\$1task\$1def* は、起動時にインスタンスで実行するタスク定義に置き換えてください。

   詳細については、「[Amazon ECS Linux コンテナインスタンスの起動](launch_container_instance.md)」を参照してください。
**注記**  
以下の MIME マルチパートの内容では、シェルスクリプトを使用して値を設定し、パッケージをインストールしています。また、systemd ジョブを使用して、**ecs** サービスが実行されイントロスペクション API が使用可能になった後にタスクが開始されるようにしています。

   ```
   Content-Type: multipart/mixed; boundary="==BOUNDARY=="
   MIME-Version: 1.0
   
   --==BOUNDARY==
   Content-Type: text/x-shellscript; charset="us-ascii"
   
   #!/bin/bash
   # Specify the cluster that the container instance should register into
   cluster=your_cluster_name
   
   # Write the cluster configuration variable to the ecs.config file
   # (add any other configuration variables here also)
   echo ECS_CLUSTER=$cluster >> /etc/ecs/ecs.config
   
   START_TASK_SCRIPT_FILE="/etc/ecs/ecs-start-task.sh"
   cat <<- 'EOF' > ${START_TASK_SCRIPT_FILE}
   	exec 2>>/var/log/ecs/ecs-start-task.log
   	set -x
   	
   	# Install prerequisite tools
   	yum install -y jq aws-cli
   	
   	# Wait for the ECS service to be responsive
   	until curl -s http://localhost:51678/v1/metadata
   	do
   		sleep 1
   	done
   
   	# Grab the container instance ARN and AWS Region from instance metadata
   	instance_arn=$(curl -s http://localhost:51678/v1/metadata | jq -r '. | .ContainerInstanceArn' | awk -F/ '{print $NF}' )
   	cluster=$(curl -s http://localhost:51678/v1/metadata | jq -r '. | .Cluster' | awk -F/ '{print $NF}' )
   	region=$(curl -s http://localhost:51678/v1/metadata | jq -r '. | .ContainerInstanceArn' | awk -F: '{print $4}')
   
   	# Specify the task definition to run at launch
   	task_definition=my_task_def
   
   	# Run the AWS CLI start-task command to start your task on this container instance
   	aws ecs start-task --cluster $cluster --task-definition $task_definition --container-instances $instance_arn --started-by $instance_arn --region $region
   EOF
   
   # Write systemd unit file
   UNIT="ecs-start-task.service"
   cat <<- EOF > /etc/systemd/system/${UNIT}
         [Unit]
         Description=ECS Start Task
         Requires=ecs.service
         After=ecs.service
    
         [Service]
         Restart=on-failure
         RestartSec=30
         ExecStart=/usr/bin/bash ${START_TASK_SCRIPT_FILE}
   
         [Install]
         WantedBy=default.target
   EOF
   
   # Enable our ecs.service dependent service with `--no-block` to prevent systemd deadlock
   # See https://github.com/aws/amazon-ecs-agent/issues/1707
   systemctl enable --now --no-block "${UNIT}"
   --==BOUNDARY==--
   ```

1. コンテナインスタンスが正しいクラスターで起動し、タスクが開始されていることを確認します。

   1. コンソール ([https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)) を開きます。

   1. ナビゲーションバーから、クラスターがあるリージョンを選択します。

   1. ナビゲーションペインで [**Clusters**] を選択し、コンテナインスタンスをホストするクラスターを選択します。

   1. **[クラスター]** ページで **[タスク]** を選択した後、使用するタスクを選択します。

      起動した各コンテナインスタンスでは、このタスクが実行状態になります。

      タスクが表示されない場合は、SSH を使用してコンテナインスタンスにログインし、`/var/log/ecs/ecs-start-task.log` ファイルでデバッグの情報を確認できます。

# Amazon ECS Linux コンテナインスタンスのネットワークインターフェイスを増やす
<a name="container-instance-eni"></a>

**注記**  
この機能は Fargate では使用できません。

`awsvpc` ネットワークモードを使用するタスクには、それぞれ独自の 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` アカウント設定を有効にすると、新しく起動されたコンテナインスタンスで追加の ENI を利用できます。この設定により、各コンテナインスタンスにより多くのタスクを配置できます。コンソールを使用して機能を有効にするには、「[Amazon ECS アカウント設定の変更](ecs-modifying-longer-id-settings.md)」を参照してください。AWS CLI を使用して機能を有効にするには、「[AWS CLI を使用した Amazon ECS アカウント設定の管理](account-setting-management-cli.md)」を参照してください。

例えば、`awsvpcTrunking` を持つ `c5.large` インスタンスでは、ENI の制限が 12 に引き上げられています。コンテナインスタンスはプライマリネットワークインターフェイスを持ち、Amazon ECS はコンテナインスタンスの「トランク」ネットワークインターフェイスを作成およびアタッチします。したがって、この設定では、現在の 2 個ではなく 10 個のタスクをコンテナインスタンスで起動できます。

トランクネットワークインターフェイスは Amazon ECS によって完全に管理され、コンテナインスタンスを削除またはクラスターから登録解除するときに削除されます。詳細については、「[EC2 の Amazon ECS タスクネットワークオプション](task-networking.md)」を参照してください。

## 考慮事項
<a name="eni-trunking-considerations"></a>

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 EC2 インスタンスでは、リソースベースの IPv4 DNS リクエストがオフになっている必要があります。このオプションを無効にする場合、Amazon EC2 コンソールをで新しいインスタンスを作成する際に、**[Enable resource-based IPV4 (A record) DNS requests](リソースベースの IPV4 (A レコード) DNS リクエストを有効化)** オプションの選択を外します。AWS CLI を使ってこのオプションを無効にするには、次のコマンドを使用します。

  ```
  aws ec2 modify-private-dns-name-options --instance-id i-xxxxxxx --no-enable-resource-name-dns-a-record --no-dry-run
  ```
+ 共有サブネットの Amazon EC2 インスタンスはサポートされません。これらを使用すると、クラスターへの登録に失敗します。
+ タスクは、`awsvpc` ネットワークモードと EC2 を使用する必要があります。Fargate を使用するタスクは、起動数に関係なく、常に専用の ENI が割り当てられるため、この機能は必要ありません。
+ タスクは、コンテナインスタンスと同じ Amazon VPC で起動する必要があります。タスクが同じ VPC 内にない場合は属性エラーが発生し、タスクを開始することができません。
+ 新しいコンテナインスタンスを起動するときに、インスタンスは `REGISTERING` 状態に移行し、トランク Elastic Network Interface がインスタンスに対してプロビジョニングされます。登録に失敗した場合、インスタンスは `REGISTRATION_FAILED` 状態に移行します。失敗した登録のトラブルシューティングを行うには、コンテナインスタンスを記述して、失敗の原因を説明する `statusReason` フィールドを表示するようにします。その後、コンテナインスタンスは手動で登録解除または終了できます。コンテナインスタンスが正常に登録解除または終了すると、Amazon ECS はトランク ENI を削除します。
**注記**  
Amazon ECS は、`REGISTRATION_FAILED` 状態に移行するインスタンスを監視できるコンテナインスタンスの状態変更イベントを発行します。詳細については、「[Amazon ECS コンテナインスタンス状態変更イベント](ecs_container_instance_events.md)」を参照してください。
+ コンテナインスタンスが削除されると、インスタンスは `DEREGISTERING` 状態に移行し、トランク Elastic Network Interface が解放されます。次に、インスタンスは `INACTIVE` 状態に移行します。
+ ENI 制限が引き上げられたパブリックサブネットのコンテナインスタンスが停止した後再起動されると、インスタンスはパブリック IP アドレスを失い、コンテナエージェントは接続を失います。
+ `awsvpcTrunking` を有効にすると、コンテナインスタンスは VPC のデフォルトセキュリティグループを使用する追加の ENI が割り当てられ、Amazon ECS によって管理されます。

  デフォルト VPC には、各アベイラビリティーゾーンのパブリックサブネット、インターネットゲートウェイ、および DNS 解決を有効にするための設定があります。サブネットはパブリックサブネットです。メインルートテーブルがインターネット用のサブネットのトラフィックをインターネットゲートウェイに送信するためです。デフォルトサブネットをプライベートサブネットにするには、送信元 0.0.0.0/0 からインターネットゲートウェイへのルートを削除します。ただし、この操作を行った場合、そのサブネットで実行されているすべてのコンテナインスタンスがインターネットにアクセスできなくなります。セキュリティグループルールを追加または削除して、サブネットに出入りするトラフィックを制御できます。詳細については、「*Amazon Virtual Private Cloud ユーザーガイド*」の「[セキュリティグループのルール](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html)」を参照してください。

## 前提条件
<a name="eni-trunking-launching"></a>

ENI 制限が引き上げられたコンテナインスタンスを起動する前に、次の前提条件を満たす必要があります。
+ Amazon ECS のサービスにリンクされたロールを作成する必要があります。Amazon ECS のサービスにリンクされたロールは、Amazon ECS に、お客様に代わって他のAWSサービスを呼び出すアクセス権限を付与します。このロールは、クラスターを作成する際、または AWS マネジメントコンソール でサービスを作成または更新すると、自動的に作成されます。詳細については、「[Amazon ECS のサービスリンクロールの使用](using-service-linked-roles.md)」を参照してください。サービスにリンクされたロールは、次の AWS CLI コマンドを使用して作成することもできます。

  ```
  aws iam [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) --aws-service-name ecs.amazonaws.com
  ```
+ お客様のアカウントまたはコンテナインスタンスの IAM ロールは、`awsvpcTrunking` アカウント設定に有効化する必要があります。2 つのコンテナインスタンスロール (`ecsInstanceRole`) を作成することをお勧めします。そして、1 つのロールの `awsvpcTrunking` アカウント設定を有効にして、そのロールを ENI トランキングを必要とするタスクに使用することができます。コンテナインスタンスロールについては、「[Amazon ECS コンテナインスタンスの IAM ロール](instance_IAM_role.md)」を参照してください。

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

**重要**  
Amazon EC2 インスタンスでは、リソースベースの IPv4 DNS リクエストがオフになっている必要があります。このオプションを無効にする場合は、Amazon EC2 コンソールを使用した新しいインスタンスの作成時に **[Enable resource-based IPV4 (A record) DNS requests]** (リソースベースの IPV4 (A レコード) DNS リクエストを有効化) オプションを選択していないことを確認してください。AWS CLI を使ってこのオプションを無効にするには、次のコマンドを使用します。  

```
aws ec2 modify-private-dns-name-options --instance-id i-xxxxxxx --no-enable-resource-name-dns-a-record --no-dry-run
```

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

各コンテナインスタンスにはデフォルトのネットワークインターフェイスがあり、これはトランクネットワークインターフェイストランクと呼ばれます。トランクネットワークインターフェイスがあることを示す `ecs.awsvpc-trunk-id` 属性のクエリを実行して、ENI 制限が引き上げられたコンテナインスタンスを一覧表示するには、次のコマンドを使用します。
+ [list-attributes](https://docs.aws.amazon.com/cli/latest/reference/ecs/list-attributes.html) (AWS CLI)

  ```
  aws ecs list-attributes \
        --target-type container-instance \
        --attribute-name ecs.awsvpc-trunk-id \
        --cluster cluster_name \
        --region us-east-1
  ```
+ [Get-ECSAttributeList](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-ECSAttributeList.html) (AWS Tools for Windows PowerShell)

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

# Amazon ECS コンテナネットワークインターフェイスの増加でサポートされるインスタンス
<a name="eni-trunking-supported-instance-types"></a>

以下に示しているのは、サポートされる Amazon EC2 インスタンスタイプと、`awsvpcTrunking` アカウント設定を有効化する前後で各インスタンスタイプにおいて `awsvpc` ネットワークモードを使用して起動できるタスクの数です。

**重要**  
同じインスタンスファミリーでは、他のインスタンスタイプがサポートされていますが、`a1.metal`、`c5.metal`、`c5a.8xlarge`、`c5ad.8xlarge`、`c5d.metal`、`m5.metal`、`p3dn.24xlarge`、`r5.metal`、`r5.8xlarge`、`r5d.metal` の各インスタンスタイプはサポートされていません。  
`c5n`、`d3`、`d3en`、`g3`、`g3s`、`g4dn`、`i3`、`i3en`、`inf1`、`m5dn`、`m5n`、`m5zn`、`mac1`、`r5b`、`r5n`、`r5dn`、`u-12tb1`、`u-6tb1`、`u-9tb1`、および `z1d` インスタンスファミリーはサポートされていません。

**Topics**
+ [汎用](#eni-branch-gp)
+ [コンピューティングの最適化](#eni-branch-co)
+ [メモリ最適化](#eni-branch-mo)
+ [ストレージの最適化](#eni-branch-so)
+ [高速コンピューティング](#eni-branch-ac)
+ [ハイパフォーマンスコンピューティング](#eni-branch-hpc)

## 汎用
<a name="eni-branch-gp"></a>


| インスタンスタイプ | ENI トランキングなしのタスク制限 | ENI トランキングありのタスク制限 | 
| --- | --- | --- | 
| a1.medium | 1 | 10 | 
| a1.large | 2 | 10 | 
| a1.xlarge | 3 | 20 | 
| a1.2xlarge | 3 | 40 | 
| a1.4xlarge | 7 | 60 | 
| m5.large | 2 | 10 | 
| m5.xlarge | 3 | 20 | 
| m5.2xlarge | 3 | 40 | 
| m5.4xlarge | 7 | 60 | 
| m5.8xlarge | 7 | 60 | 
| m5.12xlarge | 7 | 60 | 
| m5.16xlarge | 14 | 120 | 
| m5.24xlarge | 14 | 120 | 
| m5a.large | 2 | 10 | 
| m5a.xlarge | 3 | 20 | 
| m5a.2xlarge | 3 | 40 | 
| m5a.4xlarge | 7 | 60 | 
| m5a.8xlarge | 7 | 60 | 
| m5a.12xlarge | 7 | 60 | 
| m5a.16xlarge | 14 | 120 | 
| m5a.24xlarge | 14 | 120 | 
| m5ad.large | 2 | 10 | 
| m5ad.xlarge | 3 | 20 | 
| m5ad.2xlarge | 3 | 40 | 
| m5ad.4xlarge | 7 | 60 | 
| m5ad.8xlarge | 7 | 60 | 
| m5ad.12xlarge | 7 | 60 | 
| m5ad.16xlarge | 14 | 120 | 
| m5ad.24xlarge | 14 | 120 | 
| m5d.large | 2 | 10 | 
| m5d.xlarge | 3 | 20 | 
| m5d.2xlarge | 3 | 40 | 
| m5d.4xlarge | 7 | 60 | 
| m5d.8xlarge | 7 | 60 | 
| m5d.12xlarge | 7 | 60 | 
| m5d.16xlarge | 14 | 120 | 
| m5d.24xlarge | 14 | 120 | 
| m5d.metal | 14 | 120 | 
| m6a.large | 2 | 10 | 
| m6a.xlarge | 3 | 20 | 
| m6a.2xlarge | 3 | 40 | 
| m6a.4xlarge | 7 | 60 | 
| m6a.8xlarge | 7 | 90 | 
| m6a.12xlarge | 7 | 120 | 
| m6a.16xlarge | 14 | 120 | 
| m6a.24xlarge | 14 | 120 | 
| m6a.32xlarge | 14 | 120 | 
| m6a.48xlarge | 14 | 120 | 
| m6a.metal | 14 | 120 | 
| m6g.medium | 1 | 4 | 
| m6g.large | 2 | 10 | 
| m6g.xlarge | 3 | 20 | 
| m6g.2xlarge | 3 | 40 | 
| m6g.4xlarge | 7 | 60 | 
| m6g.8xlarge | 7 | 60 | 
| m6g.12xlarge | 7 | 60 | 
| m6g.16xlarge | 14 | 120 | 
| m6g.metal | 14 | 120 | 
| m6gd.medium | 1 | 4 | 
| m6gd.large | 2 | 10 | 
| m6gd.xlarge | 3 | 20 | 
| m6gd.2xlarge | 3 | 40 | 
| m6gd.4xlarge | 7 | 60 | 
| m6gd.8xlarge | 7 | 60 | 
| m6gd.12xlarge | 7 | 60 | 
| m6gd.16xlarge | 14 | 120 | 
| m6gd.metal | 14 | 120 | 
| m6i.large | 2 | 10 | 
| m6i.xlarge | 3 | 20 | 
| m6i.2xlarge | 3 | 40 | 
| m6i.4xlarge | 7 | 60 | 
| m6i.8xlarge | 7 | 90 | 
| m6i.12xlarge | 7 | 120 | 
| m6i.16xlarge | 14 | 120 | 
| m6i.24xlarge | 14 | 120 | 
| m6i.32xlarge | 14 | 120 | 
| m6i.metal | 14 | 120 | 
| m6id.large | 2 | 10 | 
| m6id.xlarge | 3 | 20 | 
| m6id.2xlarge | 3 | 40 | 
| m6id.4xlarge | 7 | 60 | 
| m6id.8xlarge | 7 | 90 | 
| m6id.12xlarge | 7 | 120 | 
| m6id.16xlarge | 14 | 120 | 
| m6id.24xlarge | 14 | 120 | 
| m6id.32xlarge | 14 | 120 | 
| m6id.metal | 14 | 120 | 
| m6idn.large | 2 | 10 | 
| m6idn.xlarge | 3 | 20 | 
| m6idn.2xlarge | 3 | 40 | 
| m6idn.4xlarge | 7 | 60 | 
| m6idn.8xlarge | 7 | 90 | 
| m6idn.12xlarge | 7 | 120 | 
| m6idn.16xlarge | 14 | 120 | 
| m6idn.24xlarge | 14 | 120 | 
| m6idn.32xlarge | 15 | 120 | 
| m6idn.metal | 15 | 120 | 
| m6in.large | 2 | 10 | 
| m6in.xlarge | 3 | 20 | 
| m6in.2xlarge | 3 | 40 | 
| m6in.4xlarge | 7 | 60 | 
| m6in.8xlarge | 7 | 90 | 
| m6in.12xlarge | 7 | 120 | 
| m6in.16xlarge | 14 | 120 | 
| m6in.24xlarge | 14 | 120 | 
| m6in.32xlarge | 15 | 120 | 
| m6in.metal | 15 | 120 | 
| m7a.medium | 1 | 4 | 
| m7a.large | 2 | 10 | 
| m7a.xlarge | 3 | 20 | 
| m7a.2xlarge | 3 | 40 | 
| m7a.4xlarge | 7 | 60 | 
| m7a.8xlarge | 7 | 90 | 
| m7a.12xlarge | 7 | 120 | 
| m7a.16xlarge | 14 | 120 | 
| m7a.24xlarge | 14 | 120 | 
| m7a.32xlarge | 14 | 120 | 
| m7a.48xlarge | 14 | 120 | 
| m7a.metal-48xl | 14 | 120 | 
| m7g.medium | 1 | 4 | 
| m7g.large | 2 | 10 | 
| m7g.xlarge | 3 | 20 | 
| m7g.2xlarge | 3 | 40 | 
| m7g.4xlarge | 7 | 60 | 
| m7g.8xlarge | 7 | 60 | 
| m7g.12xlarge | 7 | 60 | 
| m7g.16xlarge | 14 | 120 | 
| m7g.metal | 14 | 120 | 
| m7gd.medium | 1 | 4 | 
| m7gd.large | 2 | 10 | 
| m7gd.xlarge | 3 | 20 | 
| m7gd.2xlarge | 3 | 40 | 
| m7gd.4xlarge | 7 | 60 | 
| m7gd.8xlarge | 7 | 60 | 
| m7gd.12xlarge | 7 | 60 | 
| m7gd.16xlarge | 14 | 120 | 
| m7gd.metal | 14 | 120 | 
| m7i.large | 2 | 10 | 
| m7i.xlarge | 3 | 20 | 
| m7i.2xlarge | 3 | 40 | 
| m7i.4xlarge | 7 | 60 | 
| m7i.8xlarge | 7 | 90 | 
| m7i.12xlarge | 7 | 120 | 
| m7i.16xlarge | 14 | 120 | 
| m7i.24xlarge | 14 | 120 | 
| m7i.48xlarge | 14 | 120 | 
| m7i.metal-24xl | 14 | 120 | 
| m7i.metal-48xl | 14 | 120 | 
| m7i-flex.large | 2 | 4 | 
| M7i-flex.xlarge | 3 | 10 | 
| m7i-flex.2xlarge | 3 | 20 | 
| m7i-flex.4xlarge | 7 | 40 | 
| m7i-flex.8xlarge | 7 | 60 | 
| m7i-flex.12xlarge | 7 | 120 | 
| m7i-flex.16xlarge | 14 | 120 | 
| m8a.medium | 1 | 4 | 
| m8a.large | 2 | 10 | 
| m8a.xlarge | 3 | 20 | 
| m8a.2xlarge | 3 | 40 | 
| m8a.4xlarge | 7 | 60 | 
| m8a.8xlarge | 9 | 90 | 
| m8a.12xlarge | 11 | 120 | 
| m8a.16xlarge | 15 | 120 | 
| m8a.24xlarge | 15 | 120 | 
| m8a.48xlarge | 23 | 120 | 
| m8a.metal-24xl | 15 | 120 | 
| m8a.metal-48xl | 23 | 120 | 
| m8azn.medium | 2 | 4 | 
| m8azn.large | 3 | 10 | 
| m8azn.xlarge | 3 | 20 | 
| m8azn.3xlarge | 7 | 40 | 
| m8azn.6xlarge | 7 | 60 | 
| m8azn.12xlarge | 15 | 120 | 
| m8azn.24xlarge | 15 | 120 | 
| m8azn.metal-12xl | 15 | 120 | 
| m8azn.metal-24xl | 15 | 120 | 
| m8g.medium | 1 | 4 | 
| m8g.large | 2 | 10 | 
| m8g.xlarge | 3 | 20 | 
| m8g.2xlarge | 3 | 40 | 
| m8g.4xlarge | 7 | 60 | 
| m8g.8xlarge | 7 | 60 | 
| m8g.12xlarge | 7 | 60 | 
| m8g.16xlarge | 14 | 120 | 
| m8g.24xlarge | 14 | 120 | 
| m8g.48xlarge | 14 | 120 | 
| m8g.metal-24xl | 14 | 120 | 
| m8g.metal-48xl | 14 | 120 | 
| m8gb.medium | 1 | 4 | 
| m8gb.large | 2 | 10 | 
| m8gb.xlarge | 3 | 20 | 
| m8gb.2xlarge | 3 | 40 | 
| m8gb.4xlarge | 7 | 60 | 
| m8gb.8xlarge | 9 | 60 | 
| m8gb.12xlarge | 11 | 60 | 
| m8gb.16xlarge | 15 | 120 | 
| m8gb.24xlarge | 23 | 120 | 
| m8gb.48xlarge | 23 | 120 | 
| m8gb.metal-24xl | 23 | 120 | 
| m8gb.metal-48xl | 23 | 120 | 
| m8gd.medium | 1 | 4 | 
| m8gd.large | 2 | 10 | 
| m8gd.xlarge | 3 | 20 | 
| m8gd.2xlarge | 3 | 40 | 
| m8gd.4xlarge | 7 | 60 | 
| m8gd.8xlarge | 7 | 60 | 
| m8gd.12xlarge | 7 | 60 | 
| m8gd.16xlarge | 14 | 120 | 
| m8gd.24xlarge | 14 | 120 | 
| m8gd.48xlarge | 14 | 120 | 
| m8gd.metal-24xl | 14 | 120 | 
| m8gd.metal-48xl | 14 | 120 | 
| m8gn.medium | 1 | 4 | 
| m8gn.large | 2 | 10 | 
| m8gn.xlarge | 3 | 20 | 
| m8gn.2xlarge | 3 | 40 | 
| m8gn.4xlarge | 7 | 60 | 
| m8gn.8xlarge | 9 | 60 | 
| m8gn.12xlarge | 11 | 60 | 
| m8gn.16xlarge | 15 | 120 | 
| m8gn.24xlarge | 23 | 120 | 
| m8gn.48xlarge | 23 | 120 | 
| m8gn.metal-24xl | 23 | 120 | 
| m8gn.metal-48xl | 23 | 120 | 
| m8i.large | 2 | 10 | 
| m8i.xlarge | 3 | 20 | 
| m8i.2xlarge | 3 | 40 | 
| m8i.4xlarge | 7 | 60 | 
| m8i.8xlarge | 9 | 90 | 
| m8i.12xlarge | 11 | 120 | 
| m8i.16xlarge | 15 | 120 | 
| m8i.24xlarge | 15 | 120 | 
| m8i.32xlarge | 23 | 120 | 
| m8i.48xlarge | 23 | 120 | 
| m8i.96xlarge | 23 | 120 | 
| m8i.metal-48xl | 23 | 120 | 
| m8i.metal-96xl | 23 | 120 | 
| m8id.large | 2 | 10 | 
| m8id.xlarge | 3 | 20 | 
| m8id.2xlarge | 3 | 40 | 
| m8id.4xlarge | 7 | 60 | 
| m8id.8xlarge | 9 | 90 | 
| m8id.12xlarge | 11 | 120 | 
| m8id.16xlarge | 15 | 120 | 
| m8id.24xlarge | 15 | 120 | 
| m8id.32xlarge | 23 | 120 | 
| m8id.48xlarge | 23 | 120 | 
| m8id.96xlarge | 23 | 120 | 
| m8id.metal-48xl | 23 | 120 | 
| m8id.metal-96xl | 23 | 120 | 
| m8i-flex.large | 2 | 4 | 
| m8i-flex.xlarge | 3 | 10 | 
| m8i-flex.2xlarge | 3 | 20 | 
| m8i-flex.4xlarge | 7 | 40 | 
| m8i-flex.8xlarge | 9 | 60 | 
| m8i-flex.12xlarge | 11 | 120 | 
| m8i-flex.16xlarge | 15 | 120 | 
| mac2.metal | 7 | 12 | 
| mac2-m1ultra.metal | 7 | 12 | 
| mac2-m2.metal | 7 | 12 | 
| mac2-m2pro.metal | 7 | 12 | 
| mac-m4.metal | 7 | 12 | 
| mac-m4pro.metal | 7 | 12 | 

## コンピューティングの最適化
<a name="eni-branch-co"></a>


| インスタンスタイプ | ENI トランキングなしのタスク制限 | ENI トランキングありのタスク制限 | 
| --- | --- | --- | 
| c5.large | 2 | 10 | 
| c5.xlarge | 3 | 20 | 
| c5.2xlarge | 3 | 40 | 
| c5.4xlarge | 7 | 60 | 
| c5.9xlarge | 7 | 60 | 
| c5.12xlarge | 7 | 60 | 
| c5.18xlarge | 14 | 120 | 
| c5.24xlarge | 14 | 120 | 
| c5a.large | 2 | 10 | 
| c5a.xlarge | 3 | 20 | 
| c5a.2xlarge | 3 | 40 | 
| c5a.4xlarge | 7 | 60 | 
| c5a.12xlarge | 7 | 60 | 
| c5a.16xlarge | 14 | 120 | 
| c5a.24xlarge | 14 | 120 | 
| c5ad.large | 2 | 10 | 
| c5ad.xlarge | 3 | 20 | 
| c5ad.2xlarge | 3 | 40 | 
| c5ad.4xlarge | 7 | 60 | 
| c5ad.12xlarge | 7 | 60 | 
| c5ad.16xlarge | 14 | 120 | 
| c5ad.24xlarge | 14 | 120 | 
| c5d.large | 2 | 10 | 
| c5d.xlarge | 3 | 20 | 
| c5d.2xlarge | 3 | 40 | 
| c5d.4xlarge | 7 | 60 | 
| c5d.9xlarge | 7 | 60 | 
| c5d.12xlarge | 7 | 60 | 
| c5d.18xlarge | 14 | 120 | 
| c5d.24xlarge | 14 | 120 | 
| c6a.large | 2 | 10 | 
| c6a.xlarge | 3 | 20 | 
| c6a.2xlarge | 3 | 40 | 
| c6a.4xlarge | 7 | 60 | 
| c6a.8xlarge | 7 | 90 | 
| c6a.12xlarge | 7 | 120 | 
| c6a.16xlarge | 14 | 120 | 
| c6a.24xlarge | 14 | 120 | 
| c6a.32xlarge | 14 | 120 | 
| c6a.48xlarge | 14 | 120 | 
| c6a.metal | 14 | 120 | 
| c6g.medium | 1 | 4 | 
| c6g.large | 2 | 10 | 
| c6g.xlarge | 3 | 20 | 
| c6g.2xlarge | 3 | 40 | 
| c6g.4xlarge | 7 | 60 | 
| c6g.8xlarge | 7 | 60 | 
| c6g.12xlarge | 7 | 60 | 
| c6g.16xlarge | 14 | 120 | 
| c6g.metal | 14 | 120 | 
| c6gd.medium | 1 | 4 | 
| c6gd.large | 2 | 10 | 
| c6gd.xlarge | 3 | 20 | 
| c6gd.2xlarge | 3 | 40 | 
| c6gd.4xlarge | 7 | 60 | 
| c6gd.8xlarge | 7 | 60 | 
| c6gd.12xlarge | 7 | 60 | 
| c6gd.16xlarge | 14 | 120 | 
| c6gd.metal | 14 | 120 | 
| c6gn.medium | 1 | 4 | 
| c6gn.large | 2 | 10 | 
| c6gn.xlarge | 3 | 20 | 
| c6gn.2xlarge | 3 | 40 | 
| c6gn.4xlarge | 7 | 60 | 
| c6gn.8xlarge | 7 | 60 | 
| c6gn.12xlarge | 7 | 60 | 
| c6gn.16xlarge | 14 | 120 | 
| c6i.large | 2 | 10 | 
| c6i.xlarge | 3 | 20 | 
| c6i.2xlarge | 3 | 40 | 
| c6i.4xlarge | 7 | 60 | 
| c6i.8xlarge | 7 | 90 | 
| c6i.12xlarge | 7 | 120 | 
| c6i.16xlarge | 14 | 120 | 
| c6i.24xlarge | 14 | 120 | 
| c6i.32xlarge | 14 | 120 | 
| c6i.metal | 14 | 120 | 
| c6id.large | 2 | 10 | 
| c6id.xlarge | 3 | 20 | 
| c6id.2xlarge | 3 | 40 | 
| c6id.4xlarge | 7 | 60 | 
| c6id.8xlarge | 7 | 90 | 
| c6id.12xlarge | 7 | 120 | 
| c6id.16xlarge | 14 | 120 | 
| c6id.24xlarge | 14 | 120 | 
| c6id.32xlarge | 14 | 120 | 
| c6id.metal | 14 | 120 | 
| c6in.large | 2 | 10 | 
| c6in.xlarge | 3 | 20 | 
| c6in.2xlarge | 3 | 40 | 
| c6in.4xlarge | 7 | 60 | 
| c6in.8xlarge | 7 | 90 | 
| c6in.12xlarge | 7 | 120 | 
| c6in.16xlarge | 14 | 120 | 
| c6in.24xlarge | 14 | 120 | 
| c6in.32xlarge | 15 | 120 | 
| c6in.metal | 15 | 120 | 
| c7a.medium | 1 | 4 | 
| c7a.large | 2 | 10 | 
| c7a.xlarge | 3 | 20 | 
| c7a.2xlarge | 3 | 40 | 
| c7a.4xlarge | 7 | 60 | 
| c7a.8xlarge | 7 | 90 | 
| c7a.12xlarge | 7 | 120 | 
| c7a.16xlarge | 14 | 120 | 
| c7a.24xlarge | 14 | 120 | 
| c7a.32xlarge | 14 | 120 | 
| c7a.48xlarge | 14 | 120 | 
| c7a.metal-48xl | 14 | 120 | 
| c7g.medium | 1 | 4 | 
| c7g.large | 2 | 10 | 
| c7g.xlarge | 3 | 20 | 
| c7g.2xlarge | 3 | 40 | 
| c7g.4xlarge | 7 | 60 | 
| c7g.8xlarge | 7 | 60 | 
| c7g.12xlarge | 7 | 60 | 
| c7g.16xlarge | 14 | 120 | 
| c7g.metal | 14 | 120 | 
| c7gd.medium | 1 | 4 | 
| c7gd.large | 2 | 10 | 
| c7gd.xlarge | 3 | 20 | 
| c7gd.2xlarge | 3 | 40 | 
| c7gd.4xlarge | 7 | 60 | 
| c7gd.8xlarge | 7 | 60 | 
| c7gd.12xlarge | 7 | 60 | 
| c7gd.16xlarge | 14 | 120 | 
| c7gd.metal | 14 | 120 | 
| c7gn.medium | 1 | 4 | 
| c7gn.large | 2 | 10 | 
| c7gn.xlarge | 3 | 20 | 
| c7gn.2xlarge | 3 | 40 | 
| c7gn.4xlarge | 7 | 60 | 
| c7gn.8xlarge | 7 | 60 | 
| c7gn.12xlarge | 7 | 60 | 
| c7gn.16xlarge | 14 | 120 | 
| c7gn.metal | 14 | 120 | 
| c7i.large | 2 | 10 | 
| c7i.xlarge | 3 | 20 | 
| c7i.2xlarge | 3 | 40 | 
| c7i.4xlarge | 7 | 60 | 
| c7i.8xlarge | 7 | 90 | 
| c7i.12xlarge | 7 | 120 | 
| c7i.16xlarge | 14 | 120 | 
| c7i.24xlarge | 14 | 120 | 
| c7i.48xlarge | 14 | 120 | 
| c7i.metal-24xl | 14 | 120 | 
| c7i.metal-48xl | 14 | 120 | 
| c7i-flex.large | 2 | 4 | 
| c7i-flex.xlarge | 3 | 10 | 
| c7i-flex.2xlarge | 3 | 20 | 
| c7i-flex.4xlarge | 7 | 40 | 
| c7i-flex.8xlarge | 7 | 60 | 
| c7i-flex.12xlarge | 7 | 120 | 
| c7i-flex.16xlarge | 14 | 120 | 
| c8a.medium | 1 | 4 | 
| c8a.large | 2 | 10 | 
| c8a.xlarge | 3 | 20 | 
| c8a.2xlarge | 3 | 40 | 
| c8a.4xlarge | 7 | 60 | 
| c8a.8xlarge | 9 | 90 | 
| c8a.12xlarge | 11 | 120 | 
| c8a.16xlarge | 15 | 120 | 
| c8a.24xlarge | 15 | 120 | 
| c8a.48xlarge | 23 | 120 | 
| c8a.metal-24xl | 15 | 120 | 
| c8a.metal-48xl | 23 | 120 | 
| c8g.medium | 1 | 4 | 
| c8g.large | 2 | 10 | 
| c8g.xlarge | 3 | 20 | 
| c8g.2xlarge | 3 | 40 | 
| c8g.4xlarge | 7 | 60 | 
| c8g.8xlarge | 7 | 60 | 
| c8g.12xlarge | 7 | 60 | 
| c8g.16xlarge | 14 | 120 | 
| c8g.24xlarge | 14 | 120 | 
| c8g.48xlarge | 14 | 120 | 
| c8g.metal-24xl | 14 | 120 | 
| c8g.metal-48xl | 14 | 120 | 
| c8gb.medium | 1 | 4 | 
| c8gb.large | 2 | 10 | 
| c8gb.xlarge | 3 | 20 | 
| c8gb.2xlarge | 3 | 40 | 
| c8gb.4xlarge | 7 | 60 | 
| c8gb.8xlarge | 9 | 60 | 
| c8gb.12xlarge | 11 | 60 | 
| c8gb.16xlarge | 15 | 120 | 
| c8gb.24xlarge | 23 | 120 | 
| c8gb.48xlarge | 23 | 120 | 
| c8gb.metal-24xl | 23 | 120 | 
| c8gb.metal-48xl | 23 | 120 | 
| c8gd.medium | 1 | 4 | 
| c8gd.large | 2 | 10 | 
| c8gd.xlarge | 3 | 20 | 
| c8gd.2xlarge | 3 | 40 | 
| c8gd.4xlarge | 7 | 60 | 
| c8gd.8xlarge | 7 | 60 | 
| c8gd.12xlarge | 7 | 60 | 
| c8gd.16xlarge | 14 | 120 | 
| c8gd.24xlarge | 14 | 120 | 
| c8gd.48xlarge | 14 | 120 | 
| c8gd.metal-24xl | 14 | 120 | 
| c8gd.metal-48xl | 14 | 120 | 
| c8gn.medium | 1 | 4 | 
| c8gn.large | 2 | 10 | 
| c8gn.xlarge | 3 | 20 | 
| c8gn.2xlarge | 3 | 40 | 
| c8gn.4xlarge | 7 | 60 | 
| c8gn.8xlarge | 9 | 60 | 
| c8gn.12xlarge | 11 | 60 | 
| c8gn.16xlarge | 15 | 120 | 
| c8gn.24xlarge | 23 | 120 | 
| c8gn.48xlarge | 23 | 120 | 
| c8gn.metal-24xl | 23 | 120 | 
| c8gn.metal-48xl | 23 | 120 | 
| c8i.large | 2 | 10 | 
| c8i.xlarge | 3 | 20 | 
| c8i.2xlarge | 3 | 40 | 
| c8i.4xlarge | 7 | 60 | 
| c8i.8xlarge | 9 | 90 | 
| c8i.12xlarge | 11 | 120 | 
| c8i.16xlarge | 15 | 120 | 
| c8i.24xlarge | 15 | 120 | 
| c8i.32xlarge | 23 | 120 | 
| c8i.48xlarge | 23 | 120 | 
| c8i.96xlarge | 23 | 120 | 
| c8i.metal-48xl | 23 | 120 | 
| c8i.metal-96xl | 23 | 120 | 
| c8id.large | 2 | 10 | 
| c8id.xlarge | 3 | 20 | 
| c8id.2xlarge | 3 | 40 | 
| c8id.4xlarge | 7 | 60 | 
| c8id.8xlarge | 9 | 90 | 
| c8id.12xlarge | 11 | 120 | 
| c8id.16xlarge | 15 | 120 | 
| c8id.24xlarge | 15 | 120 | 
| c8id.32xlarge | 23 | 120 | 
| c8id.48xlarge | 23 | 120 | 
| c8id.96xlarge | 23 | 120 | 
| c8id.metal-48xl | 23 | 120 | 
| c8id.metal-96xl | 23 | 120 | 
| c8i-flex.large | 2 | 4 | 
| c8i-flex.xlarge | 3 | 10 | 
| c8i-flex.2xlarge | 3 | 20 | 
| c8i-flex.4xlarge | 7 | 40 | 
| c8i-flex.8xlarge | 9 | 60 | 
| c8i-flex.12xlarge | 11 | 120 | 
| c8i-flex.16xlarge | 15 | 120 | 

## メモリ最適化
<a name="eni-branch-mo"></a>


| インスタンスタイプ | ENI トランキングなしのタスク制限 | ENI トランキングありのタスク制限 | 
| --- | --- | --- | 
| r5.large | 2 | 10 | 
| r5.xlarge | 3 | 20 | 
| r5.2xlarge | 3 | 40 | 
| r5.4xlarge | 7 | 60 | 
| r5.12xlarge | 7 | 60 | 
| r5.16xlarge | 14 | 120 | 
| r5.24xlarge | 14 | 120 | 
| r5a.large | 2 | 10 | 
| r5a.xlarge | 3 | 20 | 
| r5a.2xlarge | 3 | 40 | 
| r5a.4xlarge | 7 | 60 | 
| r5a.8xlarge | 7 | 60 | 
| r5a.12xlarge | 7 | 60 | 
| r5a.16xlarge | 14 | 120 | 
| r5a.24xlarge | 14 | 120 | 
| r5ad.large | 2 | 10 | 
| r5ad.xlarge | 3 | 20 | 
| r5ad.2xlarge | 3 | 40 | 
| r5ad.4xlarge | 7 | 60 | 
| r5ad.8xlarge | 7 | 60 | 
| r5ad.12xlarge | 7 | 60 | 
| r5ad.16xlarge | 14 | 120 | 
| r5ad.24xlarge | 14 | 120 | 
| r5b.16xlarge | 14 | 120 | 
| r5d.large | 2 | 10 | 
| r5d.xlarge | 3 | 20 | 
| r5d.2xlarge | 3 | 40 | 
| r5d.4xlarge | 7 | 60 | 
| r5d.8xlarge | 7 | 60 | 
| r5d.12xlarge | 7 | 60 | 
| r5d.16xlarge | 14 | 120 | 
| r5d.24xlarge | 14 | 120 | 
| r5dn.16xlarge | 14 | 120 | 
| r6a.large | 2 | 10 | 
| r6a.xlarge | 3 | 20 | 
| r6a.2xlarge | 3 | 40 | 
| r6a.4xlarge | 7 | 60 | 
| r6a.8xlarge | 7 | 90 | 
| r6a.12xlarge | 7 | 120 | 
| r6a.16xlarge | 14 | 120 | 
| r6a.24xlarge | 14 | 120 | 
| r6a.32xlarge | 14 | 120 | 
| r6a.48xlarge | 14 | 120 | 
| r6a.metal | 14 | 120 | 
| r6g.medium | 1 | 4 | 
| r6g.large | 2 | 10 | 
| r6g.xlarge | 3 | 20 | 
| r6g.2xlarge | 3 | 40 | 
| r6g.4xlarge | 7 | 60 | 
| r6g.8xlarge | 7 | 60 | 
| r6g.12xlarge | 7 | 60 | 
| r6g.16xlarge | 14 | 120 | 
| r6g.metal | 14 | 120 | 
| r6gd.medium | 1 | 4 | 
| r6gd.large | 2 | 10 | 
| r6gd.xlarge | 3 | 20 | 
| r6gd.2xlarge | 3 | 40 | 
| r6gd.4xlarge | 7 | 60 | 
| r6gd.8xlarge | 7 | 60 | 
| r6gd.12xlarge | 7 | 60 | 
| r6gd.16xlarge | 14 | 120 | 
| r6gd.metal | 14 | 120 | 
| r6i.large | 2 | 10 | 
| r6i.xlarge | 3 | 20 | 
| r6i.2xlarge | 3 | 40 | 
| r6i.4xlarge | 7 | 60 | 
| r6i.8xlarge | 7 | 90 | 
| r6i.12xlarge | 7 | 120 | 
| r6i.16xlarge | 14 | 120 | 
| r6i.24xlarge | 14 | 120 | 
| r6i.32xlarge | 14 | 120 | 
| r6i.metal | 14 | 120 | 
| r6id.large | 2 | 10 | 
| r6id.xlarge | 3 | 20 | 
| r6id.2xlarge | 3 | 40 | 
| r6id.4xlarge | 7 | 60 | 
| r6id.8xlarge | 7 | 90 | 
| r6id.12xlarge | 7 | 120 | 
| r6id.16xlarge | 14 | 120 | 
| r6id.24xlarge | 14 | 120 | 
| r6id.32xlarge | 14 | 120 | 
| r6id.metal | 14 | 120 | 
| r6idn.large | 2 | 10 | 
| r6idn.xlarge | 3 | 20 | 
| r6idn.2xlarge | 3 | 40 | 
| r6idn.4xlarge | 7 | 60 | 
| r6idn.8xlarge | 7 | 90 | 
| r6idn.12xlarge | 7 | 120 | 
| r6idn.16xlarge | 14 | 120 | 
| r6idn.24xlarge | 14 | 120 | 
| r6idn.32xlarge | 15 | 120 | 
| r6idn.metal | 15 | 120 | 
| r6in.large | 2 | 10 | 
| r6in.xlarge | 3 | 20 | 
| r6in.2xlarge | 3 | 40 | 
| r6in.4xlarge | 7 | 60 | 
| r6in.8xlarge | 7 | 90 | 
| r6in.12xlarge | 7 | 120 | 
| r6in.16xlarge | 14 | 120 | 
| r6in.24xlarge | 14 | 120 | 
| r6in.32xlarge | 15 | 120 | 
| r6in.metal | 15 | 120 | 
| r7a.medium | 1 | 4 | 
| r7a.large | 2 | 10 | 
| r7a.xlarge | 3 | 20 | 
| r7a.2xlarge | 3 | 40 | 
| r7a.4xlarge | 7 | 60 | 
| r7a.8xlarge | 7 | 90 | 
| r7a.12xlarge | 7 | 120 | 
| r7a.16xlarge | 14 | 120 | 
| r7a.24xlarge | 14 | 120 | 
| r7a.32xlarge | 14 | 120 | 
| r7a.48xlarge | 14 | 120 | 
| r7a.metal-48xl | 14 | 120 | 
| r7g.medium | 1 | 4 | 
| r7g.large | 2 | 10 | 
| r7g.xlarge | 3 | 20 | 
| r7g.2xlarge | 3 | 40 | 
| r7g.4xlarge | 7 | 60 | 
| r7g.8xlarge | 7 | 60 | 
| r7g.12xlarge | 7 | 60 | 
| r7g.16xlarge | 14 | 120 | 
| r7g.metal | 14 | 120 | 
| r7gd.medium | 1 | 4 | 
| r7gd.large | 2 | 10 | 
| r7gd.xlarge \$1 | 3 | 20 | 
| r7gd.2xlarge | 3 | 40 | 
| r7gd.4xlarge | 7 | 60 | 
| r7gd.8xlarge | 7 | 60 | 
| r7gd.12xlarge | 7 | 60 | 
| r7gd.16xlarge | 14 | 120 | 
| r7gd.metal | 14 | 120 | 
| r7i.large | 2 | 10 | 
| r7i.xlarge | 3 | 20 | 
| r7i.2xlarge | 3 | 40 | 
| r7i.4xlarge | 7 | 60 | 
| r7i.8xlarge | 7 | 90 | 
| r7i.12xlarge | 7 | 120 | 
| r7i.16xlarge | 14 | 120 | 
| r7i.24xlarge | 14 | 120 | 
| r7i.48xlarge | 14 | 120 | 
| r7i.metal-24xl | 14 | 120 | 
| r7i.metal-48xl | 14 | 120 | 
| r7iz.large | 2 | 10 | 
| r7iz.xlarge | 3 | 20 | 
| r7iz.2xlarge | 3 | 40 | 
| r7iz.4xlarge | 7 | 60 | 
| r7iz.8xlarge | 7 | 90 | 
| r7iz.12xlarge | 7 | 120 | 
| r7iz.16xlarge | 14 | 120 | 
| r7iz.32xlarge | 14 | 120 | 
| r7iz.metal-16xl | 14 | 120 | 
| r7iz.metal-32xl | 14 | 120 | 
| r8a.medium | 1 | 4 | 
| r8a.large | 2 | 10 | 
| r8a.xlarge | 3 | 20 | 
| r8a.2xlarge | 3 | 40 | 
| r8a.4xlarge | 7 | 60 | 
| r8a.8xlarge | 9 | 90 | 
| r8a.12xlarge | 11 | 120 | 
| r8a.16xlarge | 15 | 120 | 
| r8a.24xlarge | 15 | 120 | 
| r8a.48xlarge | 23 | 120 | 
| r8a.metal-24xl | 15 | 120 | 
| r8a.metal-48xl | 23 | 120 | 
| r8g.medium | 1 | 4 | 
| r8g.large | 2 | 10 | 
| r8g.xlarge | 3 | 20 | 
| r8g.2xlarge | 3 | 40 | 
| r8g.4xlarge | 7 | 60 | 
| r8g.8xlarge | 7 | 60 | 
| r8g.12xlarge | 7 | 60 | 
| r8g.16xlarge | 14 | 120 | 
| r8g.24xlarge | 14 | 120 | 
| r8g.48xlarge | 14 | 120 | 
| r8g.metal-24xl | 14 | 120 | 
| r8g.metal-48xl | 14 | 120 | 
| r8gb.medium | 1 | 4 | 
| r8gb.large | 2 | 10 | 
| r8gb.xlarge | 3 | 20 | 
| r8gb.2xlarge | 3 | 40 | 
| r8gb.4xlarge | 7 | 60 | 
| r8gb.8xlarge | 9 | 60 | 
| r8gb.12xlarge | 11 | 60 | 
| r8gb.16xlarge | 15 | 120 | 
| r8gb.24xlarge | 23 | 120 | 
| r8gb.48xlarge | 23 | 120 | 
| r8gb.metal-24xl | 23 | 120 | 
| r8gb.metal-48xl | 23 | 120 | 
| r8gd.medium | 1 | 4 | 
| r8gd.large | 2 | 10 | 
| r8gd.xlarge | 3 | 20 | 
| r8gd.2xlarge | 3 | 40 | 
| r8gd.4xlarge | 7 | 60 | 
| r8gd.8xlarge | 7 | 60 | 
| r8gd.12xlarge | 7 | 60 | 
| r8gd.16xlarge | 14 | 120 | 
| r8gd.24xlarge | 14 | 120 | 
| r8gd.48xlarge | 14 | 120 | 
| r8gd.metal-24xl | 14 | 120 | 
| r8gd.metal-48xl | 14 | 120 | 
| r8gn.medium | 1 | 4 | 
| r8gn.large | 2 | 10 | 
| r8gn.xlarge | 3 | 20 | 
| r8gn.2xlarge | 3 | 40 | 
| r8gn.4xlarge | 7 | 60 | 
| r8gn.8xlarge | 9 | 60 | 
| r8gn.12xlarge | 11 | 60 | 
| r8gn.16xlarge | 15 | 120 | 
| r8gn.24xlarge | 23 | 120 | 
| r8gn.48xlarge | 23 | 120 | 
| r8gn.metal-24xl | 23 | 120 | 
| r8gn.metal-48xl | 23 | 120 | 
| r8i.large | 2 | 10 | 
| r8i.xlarge | 3 | 20 | 
| r8i.2xlarge | 3 | 40 | 
| r8i.4xlarge | 7 | 60 | 
| r8i.8xlarge | 9 | 90 | 
| r8i.12xlarge | 11 | 120 | 
| r8i.16xlarge | 15 | 120 | 
| r8i.24xlarge | 15 | 120 | 
| r8i.32xlarge | 23 | 120 | 
| r8i.48xlarge | 23 | 120 | 
| r8i.96xlarge | 23 | 120 | 
| r8i.metal-48xl | 23 | 120 | 
| r8i.metal-96xl | 23 | 120 | 
| r8id.large | 2 | 10 | 
| r8id.xlarge | 3 | 20 | 
| r8id.2xlarge | 3 | 40 | 
| r8id.4xlarge | 7 | 60 | 
| r8id.8xlarge | 9 | 90 | 
| r8id.12xlarge | 11 | 120 | 
| r8id.16xlarge | 15 | 120 | 
| r8id.24xlarge | 15 | 120 | 
| r8id.32xlarge | 23 | 120 | 
| r8id.48xlarge | 23 | 120 | 
| r8id.96xlarge | 23 | 120 | 
| r8id.metal-48xl | 23 | 120 | 
| r8id.metal-96xl | 23 | 120 | 
| r8i-flex.large | 2 | 4 | 
| r8i-flex.xlarge | 3 | 10 | 
| r8i-flex.2xlarge | 3 | 20 | 
| r8i-flex.4xlarge | 7 | 40 | 
| r8i-flex.8xlarge | 9 | 60 | 
| r8i-flex.12xlarge | 11 | 120 | 
| r8i-flex.16xlarge | 15 | 120 | 
| u-3tb1.56xlarge | 7 | 12 | 
| u-6tb1.56xlarge | 14 | 12 | 
| u-18tb1.112xlarge | 14 | 12 | 
| u-18tb1.metal | 14 | 12 | 
| u-24tb1.112xlarge | 14 | 12 | 
| u-24tb1.metal | 14 | 12 | 
| u7i-6tb.112xlarge | 14 | 120 | 
| u7i-8tb.112xlarge | 14 | 120 | 
| u7i-12tb.224xlarge | 14 | 120 | 
| u7in-16tb.224xlarge | 15 | 120 | 
| u7in-24tb.224xlarge | 15 | 120 | 
| u7in-32tb.224xlarge | 15 | 120 | 
| u7inh-32tb.480xlarge | 15 | 120 | 
| x2gd.medium | 1 | 10 | 
| x2gd.large | 2 | 10 | 
| x2gd.xlarge | 3 | 20 | 
| x2gd.2xlarge | 3 | 40 | 
| x2gd.4xlarge | 7 | 60 | 
| x2gd.8xlarge | 7 | 60 | 
| x2gd.12xlarge | 7 | 60 | 
| x2gd.16xlarge | 14 | 120 | 
| x2gd.metal | 14 | 120 | 
| x2idn.16xlarge | 14 | 120 | 
| x2idn.24xlarge | 14 | 120 | 
| x2idn.32xlarge | 14 | 120 | 
| x2idn.metal | 14 | 120 | 
| x2iedn.xlarge | 3 | 13 | 
| x2iedn.2xlarge | 3 | 29 | 
| x2iedn.4xlarge | 7 | 60 | 
| x2iedn.8xlarge | 7 | 120 | 
| x2iedn.16xlarge | 14 | 120 | 
| x2iedn.24xlarge | 14 | 120 | 
| x2iedn.32xlarge | 14 | 120 | 
| x2iedn.metal | 14 | 120 | 
| x2iezn.2xlarge | 3 | 64 | 
| x2iezn.4xlarge | 7 | 120 | 
| x2iezn.6xlarge | 7 | 120 | 
| x2iezn.8xlarge | 7 | 120 | 
| x2iezn.12xlarge | 14 | 120 | 
| x2iezn.metal | 14 | 120 | 
| x8g.medium | 1 | 4 | 
| x8g.large | 2 | 10 | 
| x8g.xlarge | 3 | 20 | 
| x8g.2xlarge | 3 | 40 | 
| x8g.4xlarge | 7 | 60 | 
| x8g.8xlarge | 7 | 60 | 
| x8g.12xlarge | 7 | 60 | 
| x8g.16xlarge | 14 | 120 | 
| x8g.24xlarge | 14 | 120 | 
| x8g.48xlarge | 14 | 120 | 
| x8g.metal-24xl | 14 | 120 | 
| x8g.metal-48xl | 14 | 120 | 
| x8aedz.large | 3 | 10 | 
| x8aedz.xlarge | 3 | 20 | 
| x8aedz.3xlarge | 7 | 40 | 
| x8aedz.6xlarge | 7 | 60 | 
| x8aedz.12xlarge | 15 | 120 | 
| x8aedz.24xlarge | 15 | 120 | 
| x8aedz.metal-12xl | 15 | 120 | 
| x8aedz.metal-24xl | 15 | 120 | 
| x8i.large | 2 | 10 | 
| x8i.xlarge | 3 | 20 | 
| x8i.2xlarge | 3 | 40 | 
| x8i.4xlarge | 7 | 60 | 
| x8i.8xlarge | 9 | 90 | 
| x8i.12xlarge | 11 | 120 | 
| x8i.16xlarge | 15 | 120 | 
| x8i.24xlarge | 15 | 120 | 
| x8i.32xlarge | 23 | 120 | 
| x8i.48xlarge | 23 | 120 | 
| x8i.64xlarge | 23 | 120 | 
| x8i.96xlarge | 23 | 120 | 
| x8i.metal-48xl | 23 | 120 | 
| x8i.metal-96xl | 23 | 120 | 

## ストレージの最適化
<a name="eni-branch-so"></a>


| インスタンスタイプ | ENI トランキングなしのタスク制限 | ENI トランキングありのタスク制限 | 
| --- | --- | --- | 
| i4g.large | 2 | 10 | 
| i4g.xlarge | 3 | 20 | 
| i4g.2xlarge | 3 | 40 | 
| i4g.4xlarge | 7 | 60 | 
| i4g.8xlarge | 7 | 60 | 
| i4g.16xlarge | 14 | 120 | 
| i4i.xlarge | 3 | 8 | 
| i4i.2xlarge | 3 | 28 | 
| i4i.4xlarge | 7 | 58 | 
| i4i.8xlarge | 7 | 118 | 
| i4i.12xlarge | 7 | 118 | 
| i4i.16xlarge | 14 | 248 | 
| i4i.24xlarge | 14 | 118 | 
| i4i.32xlarge | 14 | 498 | 
| i4i.metal | 14 | 498 | 
| i7i.large | 2 | 10 | 
| i7i.xlarge | 3 | 20 | 
| i7i.2xlarge | 3 | 40 | 
| i7i.4xlarge | 7 | 60 | 
| i7i.8xlarge | 7 | 90 | 
| i7i.12xlarge | 7 | 90 | 
| i7i.16xlarge | 14 | 120 | 
| i7i.24xlarge | 14 | 120 | 
| i7i.48xlarge | 14 | 120 | 
| i7i.metal-24xl | 14 | 120 | 
| i7i.metal-48xl | 14 | 120 | 
| i7ie.large | 2 | 20 | 
| i7ie.xlarge | 3 | 29 | 
| i7ie.2xlarge | 3 | 29 | 
| i7ie.3xlarge | 3 | 29 | 
| i7ie.6xlarge | 7 | 60 | 
| i7ie.12xlarge | 7 | 60 | 
| i7ie.18xlarge | 14 | 120 | 
| i7ie.24xlarge | 14 | 120 | 
| i7ie.48xlarge | 14 | 120 | 
| i7ie.metal-24xl | 14 | 120 | 
| i7ie.metal-48xl | 14 | 120 | 
| i8g.large | 2 | 10 | 
| i8g.xlarge | 3 | 20 | 
| i8g.2xlarge | 3 | 40 | 
| i8g.4xlarge | 7 | 60 | 
| i8g.8xlarge | 7 | 60 | 
| i8g.12xlarge | 7 | 60 | 
| i8g.16xlarge | 14 | 120 | 
| i8g.24xlarge | 14 | 120 | 
| i8g.48xlarge | 14 | 120 | 
| i8g.metal-24xl | 14 | 120 | 
| i8g.metal-48xl | 14 | 120 | 
| i8ge.large | 2 | 20 | 
| i8ge.xlarge | 3 | 29 | 
| i8ge.2xlarge | 3 | 29 | 
| i8ge.3xlarge | 5 | 29 | 
| i8ge.6xlarge | 9 | 60 | 
| i8ge.12xlarge | 11 | 60 | 
| i8ge.18xlarge | 15 | 120 | 
| i8ge.24xlarge | 15 | 120 | 
| i8ge.48xlarge | 23 | 120 | 
| i8ge.metal-24xl | 15 | 120 | 
| i8ge.metal-48xl | 23 | 120 | 
| im4gn.large | 2 | 10 | 
| im4gn.xlarge | 3 | 20 | 
| im4gn.2xlarge | 3 | 40 | 
| im4gn.4xlarge | 7 | 60 | 
| im4gn.8xlarge | 7 | 60 | 
| im4gn.16xlarge | 14 | 120 | 
| is4gen.medium | 1 | 4 | 
| is4gen.large | 2 | 10 | 
| is4gen.xlarge | 3 | 20 | 
| is4gen.2xlarge | 3 | 40 | 
| is4gen.4xlarge | 7 | 60 | 
| is4gen.8xlarge | 7 | 60 | 

## 高速コンピューティング
<a name="eni-branch-ac"></a>


| インスタンスタイプ | ENI トランキングなしのタスク制限 | ENI トランキングありのタスク制限 | 
| --- | --- | --- | 
| dl1.24xlarge | 59 | 120 | 
| dl2q.24xlarge | 14 | 120 | 
| f2.6xlarge | 7 | 90 | 
| f2.12xlarge | 7 | 120 | 
| f2.48xlarge | 14 | 120 | 
| g4ad.xlarge | 1 | 12 | 
| g4ad.2xlarge | 1 | 12 | 
| g4ad.4xlarge | 2 | 12 | 
| g4ad.8xlarge | 3 | 12 | 
| g4ad.16xlarge | 7 | 12 | 
| g5.xlarge | 3 | 6 | 
| g5.2xlarge | 3 | 19 | 
| g5.4xlarge | 7 | 40 | 
| g5.8xlarge | 7 | 90 | 
| g5.12xlarge | 14 | 120 | 
| g5.16xlarge | 7 | 120 | 
| g5.24xlarge | 14 | 120 | 
| g5.48xlarge | 6 | 120 | 
| g5g.xlarge | 3 | 20 | 
| g5g.2xlarge | 3 | 40 | 
| g5g.4xlarge | 7 | 60 | 
| g5g.8xlarge | 7 | 60 | 
| g5g.16xlarge | 14 | 120 | 
| g5g.metal | 14 | 120 | 
| g6.xlarge | 3 | 20 | 
| g6.2xlarge | 3 | 40 | 
| g6.4xlarge | 7 | 60 | 
| g6.8xlarge | 7 | 90 | 
| g6.12xlarge | 7 | 120 | 
| g6.16xlarge | 14 | 120 | 
| g6.24xlarge | 14 | 120 | 
| g6.48xlarge | 14 | 120 | 
| g6e.xlarge | 3 | 20 | 
| g6e.2xlarge | 3 | 40 | 
| g6e.4xlarge | 7 | 60 | 
| g6e.8xlarge | 7 | 90 | 
| g6e.12xlarge | 9 | 120 | 
| g6e.16xlarge | 14 | 120 | 
| g6e.24xlarge | 19 | 120 | 
| g6e.48xlarge | 39 | 120 | 
| g6f.large | 1 | 10 | 
| g6f.xlarge | 3 | 20 | 
| g6f.2xlarge | 3 | 40 | 
| g6f.4xlarge | 7 | 60 | 
| gr6.4xlarge | 7 | 60 | 
| gr6.8xlarge | 7 | 90 | 
| gr6f.4xlarge | 7 | 60 | 
| g7e.2xlarge | 3 | 242 | 
| g7e.4xlarge | 7 | 242 | 
| g7e.8xlarge | 7 | 242 | 
| g7e.12xlarge | 9 | 242 | 
| g7e.24xlarge | 19 | 242 | 
| g7e.48xlarge | 39 | 242 | 
| inf2.xlarge | 3 | 20 | 
| inf2.8xlarge | 7 | 90 | 
| inf2.24xlarge | 14 | 120 | 
| inf2.48xlarge | 14 | 120 | 
| p4d.24xlarge | 59 | 120 | 
| p4de.24xlarge | 59 | 120 | 
| p5.4xlarge | 3 | 60 | 
| p5.48xlarge | 63 | 242 | 
| p5e.48xlarge | 63 | 242 | 
| p5en.48xlarge | 63 | 242 | 
| p6-b200.48xlarge | 31 | 242 | 
| p6-b300.48xlarge | 67 | 242 | 
| p6e-gb200.36xlarge | 38 | 120 | 
| trn1.2xlarge | 3 | 19 | 
| trn1.32xlarge | 39 | 120 | 
| trn1n.32xlarge | 79 | 242 | 
| trn2.3xlarge | 1 | 14 | 
| trn2.48xlarge | 31 | 242 | 
| trn2u.48xlarge | 31 | 242 | 
| vt1.3xlarge | 3 | 40 | 
| vt1.6xlarge | 7 | 60 | 
| vt1.24xlarge | 14 | 120 | 

## ハイパフォーマンスコンピューティング
<a name="eni-branch-hpc"></a>


| インスタンスタイプ | ENI トランキングなしのタスク制限 | ENI トランキングありのタスク制限 | 
| --- | --- | --- | 
| hpc6a.48xlarge | 1 | 120 | 
| hpc6id.32xlarge | 1 | 120 | 
| hpc7g.4xlarge | 3 | 120 | 
| hpc7g.8xlarge | 3 | 120 | 
| hpc7g.16xlarge | 3 | 120 | 
| hpc8a.96xlarge | 3 | -2 | 

# Amazon ECS Linux コンテナインスタンスのメモリを予約する
<a name="memory-management"></a>

Amazon ECS コンテナエージェントがクラスターにコンテナインスタンスを登録する場合、エージェントは、コンテナインスタンスがタスク用に予約できるメモリ容量を決定する必要があります。プラットフォームのメモリオーバーヘッドとシステムカーネルが占めるメモリのため、この数値は、Amazon EC2 インスタンスとして公開されているインストール済みメモリ量とは異なります。例えば、`m4.large` インスタンスには 8 GiB のメモリがインストールされています。しかし、これはコンテナインスタンスが登録されたときに、タスクに使用できるメモリが正確に 8192 MiB に変換されるとは限りません。

## ECS マネージドインスタンスのメモリリソースの決定
<a name="ecs-mi-memory-calculation"></a>

Amazon ECS マネージドインスタンスは、階層的なアプローチを使用してタスクのメモリリソース要件を決定します。Docker のメモリイントロスペクションに依存する EC2 上の ECS とは異なり、ECS マネージドインスタンスは、スケジューリングの決定時にタスクペイロードから直接メモリ要件を計算します。

ECS マネージドインスタンスのエージェントはタスクを受信すると、次の優先順位を使用してメモリ要件を計算します。

1. **タスクレベルのメモリ (最高優先度)** – タスクレベルのメモリがタスク定義で指定されている場合、エージェントはこの値を直接使用します。この場合、すべてのコンテナレベルのメモリ設定より優先されます。

1. **コンテナレベルのメモリ合計 (フォールバック)** – タスクレベルのメモリが指定されていない場合 (または 0 の場合)、エージェントはタスク内のすべてのコンテナのメモリ要件を合計します。コンテナごとに以下を使用します。

   1. *メモリ予約 (ソフト制限)* – コンテナが設定で `memoryReservation` を指定した場合、エージェントはこの値を使用します。

   1. *コンテナメモリ (ハード制限)* – `memoryReservation` が指定されていない場合、エージェントはコンテナの `memory`フィールドを使用します。

**Example 指定されたタスクレベルのメモリ**  
タスクレベルのメモリを指定すると、コンテナレベルの設定より優先されます。  

```
{
  "family": "my-task",
  "memory": "2048",
  "containerDefinitions": [
    {
      "name": "container1",
      "memory": 1024,
      "memoryReservation": 512
    }
  ]
}
```
エージェントは 2048 MiB を予約します (タスクレベルのメモリが優先)。

**Example 予約を含むコンテナレベルのメモリ**  
タスクレベルのメモリが指定されていない場合、エージェントはコンテナのメモリ要件を合計します。  

```
{
  "family": "my-task",
  "containerDefinitions": [
    {
      "name": "container1",
      "memory": 1024,
      "memoryReservation": 512
    },
    {
      "name": "container2",
      "memory": 512
    }
  ]
}
```
エージェントは 512 MiB (container1 予約) \$1 512 MiB (container2 メモリ) = 合計 1024 MiB を予約します。

ECS マネージドインスタンスのエージェントは、次の 3 つのフェーズでメモリ計算を実行します。

1. **タスク受信** – ECS コントロールプレーンからタスクペイロードが到着すると、エージェントは直ちに必要なメモリを計算します。

1. **リソースストレージ** – 計算されたメモリ要件は、後でリソースの課金オペレーションで使用するため、タスクモデルに保存されます。

1. **スケジュールの決定** – タスクを受け入れる前に、エージェントは十分なメモリが使用可能かどうかを確認します。メモリが不足している場合タスクは拒否され、リソースが利用可能になるまで ECS サービスキューに残留します。

**注記**  
EC2 の ECS とは異なり、ECS マネージドインスタンスは `ECS_RESERVED_MEMORY` の設定変数を使用しません。システムプロセスのメモリ予約は、基盤となるプラットフォームのリソース管理を通じて処理され、エージェントはタスク定義に基づいて正確なリソースの課金を実行します。

 EC2 上の ECS の場合、Amazon ECS コンテナエージェントには、タスクに割り当てられたプールから指定したメモリ容量 (MiB) を削除するのに使用できる、`ECS_RESERVED_MEMORY` という設定変数があります。これにより、重要なシステムプロセスのメモリを効果的に確保することができます。

タスクでコンテナインスタンスのすべてのメモリを占有している場合、メモリが不可欠なシステムプロセスとタスクが競合し、システム障害が発生する可能性があります。

例えば、コンテナエージェント設定ファイルで `ECS_RESERVED_MEMORY=256` を指定すると、そのインスタンスの総メモリマイナス 256 MiB が登録され、256 MiBのメモリは ECS タスクに割り当てされなくなります。エージェント構成変数とその設定方法の詳細については、[Amazon ECS コンテナエージェントの設定](ecs-agent-config.md) および [Amazon ECS Linux コンテナインスタンスをブートストラップしてデータを渡す](bootstrap_container_instance.md) を参照してください 。

タスクに 8192 MiB を指定して、使用可能なメモリが 8192 MiB 以上のコンテナインスタンスがなくこの要件を満たせない場合、そのタスクはクラスターに配置できません。マネージド型コンピューティング環境を使用している場合、リクエストに対応するために AWS Batch はより大きなインスタンスタイプを起動する必要があります。

Amazon ECS コンテナエージェントは、Docker `ReadMemInfo()`関数を使用してオペレーティングシステムで使用可能な合計メモリのクエリを実行します。Linux と Windows の両方に、合計メモリを判断できるコマンドラインユーティリティが備わっています。

**Example - Linux 合計メモリを決定**  
**free** コマンドは、オペレーティングシステムによって認識される合計メモリを返します。  

```
$ free -b
```
Amazon ECS に最適化された Amazon Linux AMI を実行する `m4.large` インスタンスの出力例。  

```
             total       used       free     shared    buffers     cached
Mem:    8373026816  348180480 8024846336      90112   25534464  205418496
-/+ buffers/cache:  117227520 8255799296
```
このインスタンスには 8373026816 バイトの合計メモリーがあり、タスクに使用できる 7985 MiB に変換されます。

**Example -Windows 合計メモリを決定**  
**wmic** コマンドは、オペレーティングシステムによって認識される合計メモリを返します。  

```
C:\> wmic ComputerSystem get TotalPhysicalMemory
```
Amazon ECS に最適化された Windows Server AMI を実行する `m4.large` インスタンスの出力例。  

```
TotalPhysicalMemory
8589524992
```
このインスタンスには合計メモリーが 8589524992 バイトあり、タスクに使用可能な 8191 MiB に変換されます。

## コンテナインスタンスのメモリを表示する
<a name="viewing-memory"></a>

Amazon ECS コンソール (または [DescribeContainerInstances](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeContainerInstances.html) API 操作) で、コンテナインスタンスに登録されているメモリ容量を表示できます。特定のインスタンスタイプに対して、可能な限り多くのメモリをタスクに割り当て、リソース使用率を最大化しようとしている場合は、そのコンテナインスタンスに使用可能なメモリを確認してから、そのタスクに十分なメモリを割り当てることができます。

**コンテナインスタンスメモリを表示するには**

1. コンソール ([https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)) を開きます。

1. ナビゲーションペインで **[クラスター]** を選択し、コンテナインスタンスをホストするクラスターを選択します。

1. **[インフラストラクチャ]** を選択し、[コンテナインスタンス] でコンテナインスタンスを選択します。

1. **[リソース]** セクションに、コンテナインスタンス用に登録された使用可能なメモリが表示されます。

   **[登録済み]** メモリの値は、Amazon ECS の初回起動時に登録されたときのコンテナインスタンスのメモリの値で、**[利用可能]** メモリの値は、まだ タスクに割り当てられていないメモリの値です。

# AWS Systems Manager を使用して Amazon ECS コンテナインスタンスをリモートで管理する
<a name="ec2-run-command"></a>

AWS Systems Manager (Systems Manager) で Run Command 機能を使用すると、Amazon ECS コンテナインスタンスの設定を安全にリモートで管理できます。Run Command を使用すると、インスタンスにローカルにログオンしなくても一般的な管理タスクを簡単に実行することができます。複数のコンテナインスタンスでコマンドを同時に実行することで、クラスター全体の設定の変更を管理できます。Run Command は各コマンドのステータスと結果をレポートします。

ここでは、Run Command を使用して実行できるタスクのタイプについていくつか例を示します。
+ パッケージをインストールまたはアンインストールする。
+ セキュリティ更新プログラムを実行する。
+ Docker イメージをクリーンアップする。
+ サービスを停止または起動する。
+ システムリソースを表示する。
+ ログファイルを表示する。
+ ファイルオペレーションを実行する。

Run Command の詳細については、の「*AWS Systems Managerユーザーガイド*」の「[AWS Systems ManagerRun Command](https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html)」を参照してください。

Amazon ECS で Systems Manager を使用するには、以下の前提条件があります。

1. コンテナインスタンスロール (**ecsInstanceRole**) に、Systems Manager API にアクセスするためのアクセス許可を付与する必要があります。これを行うには、**AmazonSSMManagedInstanceCore** を `ecsInstanceRole` ロールに割り当てます。ポリシーをロールにアタッチする方法については、「*AWS Identity and Access Management ユーザーガイド*」の「[ロールに対するアクセス許可を更新する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-permissions.html)」を参照してください。

1. SSM Agent がコンテナインスタンスにインストールされていることを確認します。詳細については、「[Linux 用 EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html)」を参照してください。

Systems Manager 管理ポリシーを `ecsInstanceRole` にアタッチして、AWS Systems Manager エージェント (SSM Agent) がコンテナインスタンスにインストールされていることを確認したら、Run Command を使用してコマンドをコンテナインスタンスに送信することができます。インスタンスでのコマンドおよびシェルスクリプトの実行と、その結果の出力の表示については、*AWS Systems Managerユーザーガイド* の「[Systems Manager Run Command を使用したコマンドの実行](https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html)」および「[Run Command のチュートリアル](https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command-walkthroughs.html)」を参照してください。

一般的なユースケースは、Run Command でコンテナインスタンスソフトウェアを更新することです。「AWS Systems Manager ユーザーガイド」の手順を実行し、以下のパラメータを指定します。


| パラメータ | 値 | 
| --- | --- | 
|  **コマンドのドキュメント**  | AWS-RunShellScript | 
| コマンド |  <pre>$ yum update -y</pre> | 
| ターゲットインスタンス | コンテナインスタンス | 

# Amazon ECS Linux コンテナインスタンスに HTTP プロキシを使用する
<a name="http_proxy_config"></a>

Amazon ECS コンテナエージェントと Docker デーモンの両方に HTTP プロキシを使用するように Amazon ECS コンテナインスタンスを設定できます。これは、コンテナインスタンスに、Amazon VPC インターネットゲートウェイ、NAT ゲートウェイ、またはインスタンスを介した外部ネットワークアクセスがない場合に便利です。

HTTP プロキシを使用するように Amazon ECS Linux コンテナインスタンスを設定するには、起動時に該当するファイルで以下の変数に Amazon EC2 ユーザーデータを設定します。手動で設定ファイルを編集してから、エージェントを再起動することもできます。

`/etc/ecs/ecs.config` (Amazon Linux 2 および Amazon Linux AMI)    
`HTTP_PROXY=10.0.0.131:3128`  
この値を、Amazon ECS エージェントがインターネットへの接続に使用する HTTP プロキシのホスト名 (または IP アドレス) とポート番号に設定します。例えば、コンテナインスタンスに、Amazon VPC インターネットゲートウェイ、NAT ゲートウェイ、またはインスタンスを介した外部ネットワークアクセスがない場合です。  
`NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock`  
この値を `169.254.169.254,169.254.170.2,/var/run/docker.sock` に設定して、EC2 インスタンスのメタデータ、タスク用の IAM; ロール、および Docker デーモンのトラフィックをプロキシからフィルタリングします。

`/etc/systemd/system/ecs.service.d/http-proxy.conf` (Amazon Linux 2 のみ)    
`Environment="HTTP_PROXY=10.0.0.131:3128/"`  
この値を、`ecs-init` がインターネットへの接続に使用する HTTP プロキシのホスト名 (または IP アドレス) とポート番号に設定します。例えば、コンテナインスタンスに、Amazon VPC インターネットゲートウェイ、NAT ゲートウェイ、またはインスタンスを介した外部ネットワークアクセスがない場合です。  
`Environment="NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock"`  
この値を `169.254.169.254,169.254.170.2,/var/run/docker.sock` に設定して、EC2 インスタンスのメタデータ、タスク用の IAM; ロール、および Docker デーモンのトラフィックをプロキシからフィルタリングします。

`/etc/init/ecs.override` (Amazon Linux AMI のみ)    
`env HTTP_PROXY=10.0.0.131:3128`  
この値を、`ecs-init` がインターネットへの接続に使用する HTTP プロキシのホスト名 (または IP アドレス) とポート番号に設定します。例えば、コンテナインスタンスに、Amazon VPC インターネットゲートウェイ、NAT ゲートウェイ、またはインスタンスを介した外部ネットワークアクセスがない場合です。  
`env NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock`  
この値を `169.254.169.254,169.254.170.2,/var/run/docker.sock` に設定して、EC2 インスタンスのメタデータ、タスク用の IAM; ロール、および Docker デーモンのトラフィックをプロキシからフィルタリングします。

`/etc/systemd/system/docker.service.d/http-proxy.conf` (Amazon Linux 2 のみ)    
`Environment="HTTP_PROXY=http://10.0.0.131:3128"`  
この値を、Docker デーモンがインターネットへの接続に使用する HTTP プロキシのホスト名 (または IP アドレス) とポート番号に設定します。例えば、コンテナインスタンスに、Amazon VPC インターネットゲートウェイ、NAT ゲートウェイ、またはインスタンスを介した外部ネットワークアクセスがない場合です。  
`Environment="NO_PROXY=169.254.169.254,169.254.170.2"`  
この値を `169.254.169.254,169.254.170.2` に設定して、EC2 インスタンスのメタデータをプロキシからフィルタリングします。

`/etc/sysconfig/docker` (Amazon Linux AMI および Amazon Linux 2 のみ)    
`export HTTP_PROXY=http://10.0.0.131:3128`  
この値を、Docker デーモンがインターネットへの接続に使用する HTTP プロキシのホスト名 (または IP アドレス) とポート番号に設定します。例えば、コンテナインスタンスに、Amazon VPC インターネットゲートウェイ、NAT ゲートウェイ、またはインスタンスを介した外部ネットワークアクセスがない場合です。  
`export NO_PROXY=169.254.169.254,169.254.170.2`  
この値を `169.254.169.254,169.254.170.2` に設定して、EC2 インスタンスのメタデータをプロキシからフィルタリングします。

これらの環境変数を上記のファイルで設定すると、Amazon ECS コンテナエージェント、`ecs-init`、および Docker デーモンのみに影響があります。プロキシを使用する他のサービス (**yum** など) を設定することはありません。

プロキシを保護する方法については、「[How do I set up an HTTP proxy for Docker and the Amazon ECS container agent in Amazon Linux 2 or AL2023](https://repost.aws/knowledge-center/ecs-http-proxy-docker-linux2)」を参照してください。

# Amazon ECS Auto Scaling グループ用に事前初期化されたインスタンスを設定する
<a name="using-warm-pool"></a>

Amazon ECS では、Amazon EC2 Auto Scaling ウォームプールをサポートします。ウォームプールは、事前に初期化済みの Amazon EC2 インスタンスグループでサービス開始が準備されています。アプリケーションがスケールアウトする必要がある場合は、常に Amazon EC2 Auto Scaling はコールドインスタンスを起動するのではなく、ウォームプールから事前に初期化されたインスタンスを使用し、最終的な初期化プロセスの実行を許可し、インスタンスを使用開始します。

ウォームプールの詳細、および Auto Scaling グループにウォームプールを追加する方法については、「*Amazon EC2 Auto Scaling ユーザーガイド*」の「[Amazon EC2 Auto Scaling のウォームプール](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-warm-pools.html)」を参照してください。

Amazon ECS の Auto Scaling グループのウォームプールを作成または更新する場合、スケールイン (`ReuseOnScaleIn`) 時にインスタンスをウォームプールに戻すオプションを設定することはできません。詳細については、「AWS Command Line Interface リファレンス」の「[put-warm-pool](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-warm-pool.html)」を参照してください。

Amazon ECS クラスターでウォームプールを使用するには、Amazon EC2 Auto Scaling グループ起動テンプレートの **[User data]** (ユーザーデータ) フィールドで `ECS_WARM_POOLS_CHECK` エージェント設定変数を `true` に設定します。

以下は、Amazon EC2 起動テンプレートの **[User data]** (ユーザーデータ) フィールドでエージェント設定変数の指定方法の例を示しています。*MyCluster* は、自分のクラスターの名前に置き換えてください。

```
#!/bin/bash
cat <<'EOF' >> /etc/ecs/ecs.config
ECS_CLUSTER=MyCluster
ECS_WARM_POOLS_CHECK=true
EOF
```

この `ECS_WARM_POOLS_CHECK` 変数は、エージェントバージョン `1.59.0` 以降でのみサポートされています。変数の詳細については、「[Amazon ECS コンテナエージェントの設定](ecs-agent-config.md)」を参照してください。

# Amazon ECS コンテナエージェントをアップデートする
<a name="ecs-agent-update"></a>

場合によっては、バグの修正や新機能を取得するために Amazon ECS コンテナエージェントを更新する必要があります。Amazon ECS コンテナエージェントの更新によって、コンテナインスタンスで実行中のタスクやサービスが中断されることはありません。エージェントを更新するプロセスは、コンテナインスタンスが Amazon ECS 対応 AMI で起動されたか、別のオペレーティングシステムで起動されたかによって異なります。

**注記**  
エージェント更新は Windows コンテナインスタンスに適用されません。Windows クラスター内のエージェントバージョンを更新するには、新しいコンテナインスタンスを起動することをお勧めします。

## Amazon ECSコンテナエージェントバージョンの確認
<a name="checking_agent_version"></a>

コンテナインスタンスで実行中のコンテナエージェントのバージョンをチェックして、更新が必要かどうかを確認できます。Amazon ECSコンソールのコンテナインスタンスビューにエージェントバージョンが表示されます。以下の手順を使用してエージェントバージョンを確認します。

------
#### [ Amazon ECS console ]

1. コンソール ([https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)) を開きます。

1. ナビゲーションバーから、外部インスタンスが存在するリージョンを選択します。

1. ナビゲーションペインで **[Clusters]** (クラスター) を選択し、外部インスタンスをホストするクラスターを選択します。

1. **[Cluster : *name*]** (クラスター: 名前) のページで、**[Infrastructure]** (インフラストラクチャ) タブを選択します。

1. **[Container instances]** (コンテナインスタンス) で、コンテナインスタンスの **[Agent version]** (エージェントバージョン) 列に注意してください。コンテナインスタンスに最新バージョンのコンテナエージェントが含まれていない場合、コンソールにアラートメッセージが表示され、古いエージェントバージョンにフラグが設定されます。

   エージェントバージョンが古い場合、次の手順でコンテナエージェントを更新できます。
   + コンテナインスタンスで Amazon ECS 対応AMIを実行している場合は、「[Amazon ECS 対応 AMI での Amazon ECS コンテナエージェントのアップデート](agent-update-ecs-ami.md)」を参照してください。
   + コンテナインスタンスで Amazon ECS 対応AMI を実行してない場合は、「[Amazon ECS コンテナエージェントの手動更新（Amazon ECS 最適化以外の AMI の場合）](manually_update_agent.md)」を参照してください。
**重要**  
Amazon ECS 対応AMIで Amazon ECSエージェントバージョンを v1.0.0 より古いバージョンから更新するには、現行のコンテナインスタンスを終了し、最新バージョンの AMI で新しいインスタンスを起動することをお勧めします。プレビューバージョンを使用しているコンテナインスタンスは削除し、最新バージョンの AMI に置き換える必要があります。詳細については、「[Amazon ECS Linux コンテナインスタンスの起動](launch_container_instance.md)」を参照してください。

------
#### [ Amazon ECS container agent introspection API  ]

また、コンテナインスタンス自体からAmazon ECS コンテナエージェントの詳細分析 API のバージョンを確認するために使用できます。詳細については、「[Amazon ECS コンテナの詳細分析](ecs-agent-introspection.md)」を参照してください。

**詳細分析 API を使用して、Amazon ECS コンテナエージェントで最新バージョンが実行されているかどうかを確認するには**

1. SSH 経由でコンテナインスタンスにログインします。

1. 詳細分析 API をクエリします。

   ```
   [ec2-user ~]$ curl -s 127.0.0.1:51678/v1/metadata | python3 -mjson.tool
   ```
**注記**  
詳細分析 API は`Version` 情報を Amazon ECS コンテナエージェントのバージョン v1.0.0 に追加しました。詳細分析 API をクエリして `Version` が存在しない場合、または詳細分析 API 自体がエージェントに存在しない場合、実行しているバージョンが v0.0.3 以前であり、更新する必要があります。

------

# Amazon ECS 対応 AMI での Amazon ECS コンテナエージェントのアップデート
<a name="agent-update-ecs-ami"></a>

Amazon ECS対応AMI を使用している場合は、いくつかの方法で最新バージョンの Amazon ECS コンテナエージェントを取得できます (推奨される順に示します)。
+ 現在のコンテナインスタンスを終了して Amazon ECS 対応 Amazon Linux 2 AMI最新バージョンを起動します (手動で起動するか、最新の AMI で自動スケーリング起動設定を更新して起動します)。これにより、最新のテスト済みおよび検証済みバージョンの Amazon Linux、Docker、`ecs-init`、および Amazon ECS コンテナエージェントを備えたの新しいコンテナインスタンスが提供されます。詳細については、「[Amazon ECS に最適化された Linux AMI](ecs-optimized_AMI.md)」を参照してください。
+ インスタンスに SSH で接続し、`ecs-init` パッケージ (および依存関係) を最新バージョンに更新します。このオペレーションにより、Amazon Linux リポジトリで最新のテスト済みおよび検証済みバージョンの Docker と `ecs-init`、およびAmazon ECS コンテナエージェントの最新バージョンが提供されます。詳細については、「[Amazon ECS対応 &AMI; の `ecs-init` パッケージを更新するには](#procedure_update_ecs-init)」を参照してください。
+ コンソールまたは AWS CLI や AWS SDK 経由で `UpdateContainerAgent` API オペレーションを使用し、コンテナエージェントを更新します。詳細については、「[`UpdateContainerAgent` API オペレーションで Amazon ECS コンテナエージェントを更新する](#agent-update-api)」を参照してください。

**注記**  
エージェント更新は Windows コンテナインスタンスに適用されません。Windows クラスター内のエージェントバージョンを更新するには、新しいコンテナインスタンスを起動することをお勧めします。<a name="procedure_update_ecs-init"></a>

**Amazon ECS対応 &AMI; の `ecs-init` パッケージを更新するには**

1. SSH 経由でコンテナインスタンスにログインします。

1. 次のコマンドを使用して、`ecs-init` パッケージを更新します。

   ```
   sudo yum update -y ecs-init
   ```
**注記**  
`ecs-init` パッケージと Amazon ECS コンテナエージェントが即座に更新されます。ただし、新しいバージョンの Docker は、Docker デーモンを再起動するまでロードされません。インスタンスを再起動するか、インスタンスで次のコマンドを実行して、再起動します。  
Amazon ECS に最適化された Amazon Linux 2 AMI  

     ```
     sudo systemctl restart docker
     ```
Amazon ECS に最適化された Amazon Linux AMI  

     ```
     sudo service docker restart && sudo start ecs
     ```

## `UpdateContainerAgent` API オペレーションで Amazon ECS コンテナエージェントを更新する
<a name="agent-update-api"></a>

**重要**  
-`UpdateContainerAgent`API は、Amazon ECS に最適化された AMI の Linux バリアントでのみサポートされます。ただし、Amazon ECS に最適化された Amazon Linux 2 (arm64) AMI は例外です。Amazon ECS に最適化された Amazon Linux 2 (arm64) AMI を使用するコンテナインスタンスの場合、`ecs-init`パッケージを使用してエージェントを更新します。他のオペレーティングシステムを実行しているコンテナインスタンスについては、「[Amazon ECS コンテナエージェントの手動更新（Amazon ECS 最適化以外の AMI の場合）](manually_update_agent.md)」を参照してください。Windows コンテナインスタンスを使用している場合は、新しいコンテナインスタンスを起動して、Windows クラスター内のエージェントバージョンを更新することをお勧めします。

`UpdateContainerAgent`API 処理は、コンソールまたは AWS CLI または AWS SDKを使ってエージェントのアップデートを要求したときに始まります。Amazon ECS は、現在のエージェントバージョンと使用可能な最新バージョンを比較し、更新が可能かどうかを確認します。更新が利用できない場合 (例えばすでに最新バージョンがエージェントで実行されている場合) は、`NoUpdateAvailableException` が返されます。

上に示した更新プロセスのステージは、次のとおりです。

`PENDING`  
エージェントを更新できます。更新プロセスが開始されました。

`STAGING`  
エージェントで、エージェントの更新のダウンロードが開始されています。エージェントで更新をダウンロードできない場合や、更新の内容が正しくないか破損している場合、エージェントは失敗通知を送信し、更新は `FAILED` 状態に遷移します。

`STAGED`  
エージェントのダウンロードが完了し、エージェントの内容が確認されました。

`UPDATING`  
`ecs-init` サービスが再起動され、新しいエージェントバージョンが取得されます。エージェントが何らかの理由で再起動できない場合、更新は `FAILED` 状態に遷移します。それ以外の場合は、エージェントから Amazon ECS に更新完了のシグナルが送信されます。

**注記**  
エージェント更新は Windows コンテナインスタンスに適用されません。Windows クラスター内のエージェントバージョンを更新するには、新しいコンテナインスタンスを起動することをお勧めします。

**Amazon ECSに最適化されたAMIのAmazon ECS コンテナエージェントをコンソールでアップデートするには**

1. コンソール ([https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)) を開きます。

1. ナビゲーションバーから、外部インスタンスが存在するリージョンを選択します。

1. ナビゲーションペインで、[**Clusters**] を選択し、クラスターを選択します。

1. **[Cluster : *name*]** (クラスター: 名前) のページで、**[Infrastructure]** (インフラストラクチャ) タブを選択します。

1. **[コンテナインスタンス]** で、更新するインスタンスを選択し、**[アクション]**、**[エージェントの更新]** を選択します。

# Amazon ECS コンテナエージェントの手動更新（Amazon ECS 最適化以外の AMI の場合）
<a name="manually_update_agent"></a>

場合によっては、バグの修正や新機能を取得するために Amazon ECS コンテナエージェントを更新する必要があります。Amazon ECS コンテナエージェントの更新によって、コンテナインスタンスで実行中のタスクやサービスが中断されることはありません。
**注記**  
エージェント更新は Windows コンテナインスタンスに適用されません。Windows クラスター内のエージェントバージョンを更新するには、新しいコンテナインスタンスを起動することをお勧めします。

1. SSH 経由でコンテナインスタンスにログインします。

1. エージェントが `ECS_DATADIR` 環境変数を使用して状態を保存しているかどうかを確認します。

   ```
   ubuntu:~$ docker inspect ecs-agent | grep ECS_DATADIR
   ```

   出力:

   ```
   "ECS_DATADIR=/data",
   ```
**重要**  
前のコマンドで `ECS_DATADIR` 環境変数が返されない場合は、エージェントを更新する前に、このコンテナインスタンスで実行されているタスクをすべて停止する必要があります。より新しいエージェントは `ECS_DATADIR` 環境変数を使用して状態を保存するため、タスクが実行中でも問題なく更新できます。

1. Amazon ECS コンテナエージェントを停止します。

   ```
   ubuntu:~$ docker stop ecs-agent
   ```

1. エージェントコンテナを削除します。

   ```
   ubuntu:~$ docker rm ecs-agent
   ```

1. `/etc/ecs` ディレクトリと Amazon ECS コンテナエージェント設定ファイルが `/etc/ecs/ecs.config` に存在することを確認します。

   ```
   ubuntu:~$ sudo mkdir -p /etc/ecs && sudo touch /etc/ecs/ecs.config
   ```

1. `/etc/ecs/ecs.config` ファイルを編集して、少なくとも以下の変数宣言が必ず含まれるようにします。コンテナインスタンスをデフォルトのクラスターに登録しない場合は、クラスター名を `ECS_CLUSTER` の値として指定します。

   ```
   ECS_DATADIR=/data
   ECS_ENABLE_TASK_IAM_ROLE=true
   ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST=true
   ECS_LOGFILE=/log/ecs-agent.log
   ECS_AVAILABLE_LOGGING_DRIVERS=["json-file","awslogs"]
   ECS_LOGLEVEL=info
   ECS_CLUSTER=default
   ```

   これらや他のエージェントランタイムオプションの詳細については、「[Amazon ECS コンテナエージェントの設定](ecs-agent-config.md)」を参照してください。
**注記**  
オプションで、エージェント環境変数を Amazon S3 に保存できます (これらの環境変数は、Amazon EC2 ユーザーデータを使用して、起動時にコンテナインスタンスにダウンロードできます)。これは、プライベートリポジトリの認証情報のような機密情報の場合に推奨されます。詳細については、「[Amazon S3 に Amazon ECS コンテナインスタンスの設定を保存する](ecs-config-s3.md)」および「[Amazon ECS での AWS 以外のコンテナイメージの使用](private-auth.md)」を参照してください。

1. Amazon Elastic Container Registry Public から最新の Amazon ECS コンテナエージェントイメージを取得します。

   ```
   ubuntu:~$ docker pull public.ecr.aws/ecs/amazon-ecs-agent:latest
   ```

   出力:

   ```
   Pulling repository amazon/amazon-ecs-agent
   a5a56a5e13dc: Download complete
   511136ea3c5a: Download complete
   9950b5d678a1: Download complete
   c48ddcf21b63: Download complete
   Status: Image is up to date for amazon/amazon-ecs-agent:latest
   ```

1. コンテナインスタンスで最新の Amazon ECS コンテナエージェントを実行します。
**注記**  
Docker 再起動ポリシーまたはプロセスマネージャー (**upstart** または **systemd** など) を使用してコンテナエージェントをサービスまたはデーモンとして扱い、終了後に確実に再起動されるようにします。Amazon ECS に最適化された AMI はこのために `ecs-init` RPM を使用します。この[[RPM のソースコード](https://github.com/aws/amazon-ecs-init)]は、GitHub で参照できます。

   次のエージェント実行コマンドの例は、各オプションを示すために複数の行に分けられています。これらや他のエージェントランタイムオプションの詳細については、「[Amazon ECS コンテナエージェントの設定](ecs-agent-config.md)」を参照してください。
**重要**  
SELinux 対応オペレーティングシステムでは、**docker run** コマンドに `--privileged` オプションが必要です。さらに、SELinux 対応コンテナインスタンスの場合は、`/log` および `/data` ボリュームマウントに `:Z` オプションを追加することをお勧めします。ただし、コマンドを実行する前に、これらのボリュームのホストマウントが存在する必要があります。存在しないと、`no such file or directory` エラーが発生します。SELinux 対応コンテナインスタンスで Amazon ECS エージェントの実行に問題が発生する場合は、次のアクションを実行します。  
コンテナインスタンスにホストボリュームマウントポイントを作成します。  

     ```
     ubuntu:~$ sudo mkdir -p /var/log/ecs /var/lib/ecs/data
     ```
`--privileged` オプションを次の **docker run** コマンドに追加します。
以下の **docker run** コマンドで、`/log` および `/data` コンテナボリュームマウントに `:Z` オプションを追加します (`--volume=/var/log/ecs/:/log:Z` など)。

   ```
   ubuntu:~$ sudo docker run --name ecs-agent \
   --detach=true \
   --restart=on-failure:10 \
   --volume=/var/run:/var/run \
   --volume=/var/log/ecs/:/log \
   --volume=/var/lib/ecs/data:/data \
   --volume=/etc/ecs:/etc/ecs \
   --volume=/etc/ecs:/etc/ecs/pki \
   --net=host \
   --env-file=/etc/ecs/ecs.config \
   amazon/amazon-ecs-agent:latest
   ```
**注記**  
`Error response from daemon: Cannot start container` メッセージが表示された場合は、**sudo docker rm ecs-agent** コマンドを使用して障害のあるコンテナを削除し、再度エージェントの実行を試みることができます。