

# Amazon ECS EC2 コンテナインスタンス
<a name="ecs-agent-versions"></a>

Amazon ECS エージェントは、クラスターに登録されているすべてのコンテナインスタンスで実行されるプロセスです。これにより、コンテナインスタンスと Amazon ECS の間の通信が容易になります。

**注記**  
Linux コンテナインスタンスでは、エージェントコンテナは `/lib`、`/lib64`、`/proc` などの最上位ディレクトリをマウントします。これは、Amazon EBS ボリューム、`awsvpc` ネットワークモード、Amazon ECS Service Connect、FireLens – Amazon ECS といった、ECS の様々な機能を利用するために必要です。

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

Amazon ECS コンテナエージェントには `amazon-ecs-pause` イメージが含まれています。Amazon ECS は、`awsvpc` ネットワークモードを使用するタスクにこのイメージを使用します。

どの機能と拡張が各エージェントリリースに含まれているか確認するには、[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 のサポートが廃止されました。

## ライフサイクル
<a name="container-lifecycle"></a>

Amazon ECS コンテナエージェントが Amazon EC2 インスタンスをクラスターに登録すると、Amazon EC2 インスタンスのステータスは、`ACTIVE` として、エージェントの接続ステータスは、`TRUE` としてレポートされます。このコンテナインスタンスはタスクの実行リクエストを受けることができます。

コンテナインスタンスを (終了ではなく) 停止した場合、ステータスは `ACTIVE` のままになりますが、エージェント接続ステータスは数分以内に `FALSE` になります。コンテナインスタンスで実行されていたタスクはすべて停止します。コンテナインスタンスを再び開始すると、コンテナエージェントは、Amazon ECS サービスと再接続し、インスタンスでタスクを再実行できるようになります。

コンテナインスタンスのステータスを `DRAINING` に変更すると、新しいタスクはそのコンテナインスタンスに配置されません。そのコンテナインスタンスで実行されているサービスタスクは、可能な場合は削除され、システム更新を実行できるようになります。詳細については、「[Amazon ECS コンテナインスタンスをドレインする](container-instance-draining.md)」を参照してください。

コンテナインスタンスを登録解除または終了した場合、コンテナインスタンスのステータスは直ちに `INACTIVE` に変わり、コンテナインスタンスを一覧表示しても、そのコンテナインスタンスはレポートされなくなります。ただし、終了後 1 時間は、コンテナインスタンスの内容を表示できます。1 時間後、インスタンスの内容は表示できなくなります。

インスタンスを手動でドレインさせるか、Auto Scaling グループのライフサイクルフックを構築して、インスタンスの状態を `DRAINING` にさせます。Auto Scaling ライフサイクルフックの詳細については、「[Amazon EC2 Auto Scaling ライフサイクルフック](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html)」を参照してください。

## Docker サポート
<a name="docker-support"></a>

Amazon ECS は、Amazon Linux で公開された Docker の直近の 2 つの主要バージョンをサポートしています。現在、これには Docker 20.10.x と Docker 25.x が含まれます。

Amazon ECS に必要な最低限の Docker バージョンは、GitHub の [Amazon ECS エージェント仕様ファイル](https://github.com/aws/amazon-ecs-agent/blob/dev/packaging/amazon-linux-ami-integrated/ecs-agent.spec#L53)にあります。

Amazon ECS に最適化された AMI を使用する場合、Docker は Amazon ECS コンテナエージェントで動作するように事前にインストールおよび設定されています。AMI には、Amazon ECS でテストおよびサポートされている Docker バージョンが含まれています。

**注記**  
Amazon ECS は複数の Docker バージョンをサポートしていますが、最高の互換性とサポートを確保するために、Amazon ECS 最適化 AMI に付属する Docker バージョンを使用することをお勧めします。

## Amazon ECS に最適化された AMI
<a name="ecs-optimized-ami"></a>

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

## 追加情報
<a name="additional-information"></a>

次のページでは、変更に関する追加情報を説明します。
+ GitHub の [Amazon ECS Agent の変更ログ](https://github.com/aws/amazon-ecs-agent/blob/master/CHANGELOG.md)
+ [Amazon Linux 2 リリースノート](https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html)。
+ Docker ドキュメントの「[Docker Engine リリースノート](https://docs.docker.com/engine/release-notes/27/)」
+ NVIDIA ドキュメントの「[NVIDIA ドライバードキュメント](https://docs.nvidia.com/datacenter/tesla/index.html)」

# Amazon ECS コンテナエージェントの設定
<a name="ecs-agent-config"></a>

**適用対象**: EC2 インスタンス

Amazon ECS コンテナエージェントでは、多数の設定オプションがサポートされており、そのほとんどは環境変数を介して設定します。

コンテナインスタンスが Amazon ECS に最適化されたAMIの Linux バリアントを使用して起動された場合は、これらの環境変数を `/etc/ecs/ecs.config` ファイルに設定してからエージェントを再び開始できます。起動時に Amazon EC2 ユーザーデータを使用して、コンテナインスタンスにこれらの設定変数を作成することもできます。詳細については、「[Amazon ECS Linux コンテナインスタンスをブートストラップしてデータを渡す](bootstrap_container_instance.md)」を参照してください。

コンテナインスタンスが Amazon ECS に最適化された AMI の Windows バリアントを使用して起動された場合は、PowerShell SetEnvironmentVariable コマンドを使用して、これらの環境変数を設定してからエージェントを再び開始できます。詳細については、「*Amazon EC2 ユーザーガイド*」の「[ユーザーデータ入力を使用して EC2 インスタンスを起動するときにコマンドを実行する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)」および「[Amazon ECS Windows コンテナインスタンスをブートストラップしてデータを渡す](bootstrap_windows_container_instance.md)」を参照してください。

Amazon ECS コンテナエージェントを手動で開始する場合 ( Amazon ECSに最適化されていない AMI い場合)、これらの環境変数は、エージェントの起動に使用する **docker run** コマンドで使用できます。これらの変数は構文 `--env=VARIABLE_NAME=VARIABLE_VALUE` で使用します。プライベートリポジトリの認証情報など、機密性の高い情報の場合は、エージェントの環境変数をファイルに保存し、`--env-file path_to_env_file` オプションを使用して、それらすべてを一度に渡す必要があります。以下のコマンドを使用して変数を追加できます。

```
sudo systemctl stop ecs
sudo vi /etc/ecs/ecs.config 
# And add the environment variables with VARIABLE_NAME=VARIABLE_VALUE format.
sudo systemctl start ecs
```

## ホスト PID 名前空間を使用した Amazon ECS エージェントの実行
<a name="ecs-agent-pid-namespace"></a>

デフォルトで、Amazon ECS エージェントは独自の PID 名前空間で実行されます。以下の設定で、ホスト PID 名前空間で実行するように Amazon ECS エージェントを設定できます。
+ SELinux 強制モードが有効になっています。
+ Docker の SELinux セキュリティポリシーが true に設定されています。

この動作を設定するには、`/etc/ecs/ecs.config` ファイルで `ECS_AGENT_PID_NAMESPACE_HOST` 環境変数を `true` に設定します。この変数を有効にすると、`ecs-init` はホストの PID 名前空間 (`--pid=host`) で Amazon ECS エージェントコンテナを起動します。これにより、エージェントは SELinux 強制環境で適切に自身をブートストラップできます。この機能は、Amazon ECS エージェントバージョン `1.94.0` 以降で使用できます。

この機能を有効にするには、`/etc/ecs/ecs.config` ファイルに次の行を追加します。

```
ECS_AGENT_PID_NAMESPACE_HOST=true
```

この変更を行った後に、Amazon ECS エージェントを再起動して変更を有効にします。

```
sudo systemctl restart ecs
```

以下の機能は、SELinux 強制モードが有効で、Docker セキュリティポリシーが true に設定されている場合でも、`ECS_AGENT_PID_NAMESPACE_HOST=true` が設定されていても動作しません。
+ Amazon ECS Exec
+ Amazon EBS タスクアタッチ
+ Service Connect
+ Amazon ECS の FireLens

## 使用できるパラメータ
<a name="ecs-agent-availparam"></a>

使用可能な Amazon ECS コンテナエージェントの設定パラメータについては、GitHub の「[Amazon ECS コンテナエージェント](https://github.com/aws/amazon-ecs-agent/blob/master/README.md)」を参照してください。

# Amazon S3 に Amazon ECS コンテナインスタンスの設定を保存する
<a name="ecs-config-s3"></a>

Amazon ECS コンテナエージェントの設定は、環境変数によって制御されます。Amazon ECS に最適化されたAMIの Linux バリアントは、コンテナエージェントの起動時に `/etc/ecs/ecs.config` でこれらの変数を検索し、見つかった変数に応じてエージェントを設定します。`ECS_CLUSTER` などの機密性の低い環境変数は、Amazon EC2 のユーザーデータを経由して起動時にコンテナインスタンスに渡され、そのままこのファイルに書き込まれます。ただし、AWS 認証情報や `ECS_ENGINE_AUTH_DATA` 変数など機密性の高い情報は、ユーザーデータでインスタンスに渡したり、`.bash_history` ファイルに表示される可能性のある方法で `/etc/ecs/ecs.config` に書き込んだりしないでください。

設定情報を Amazon S3 のプライベートバケットに保存し、コンテナインスタンスの IAM ロールに読み取り専用アクセス権限を付与するのが、コンテナインスタンスの起動時に設定を許可する安全で便利な方法です。`ecs.config` ファイルのコピーはプライベートバケットに保存できます。その後、AWS CLI Amazon EC2 ユーザーデータを使用してをインストールし、インスタンスの起動時に設定情報を `/etc/ecs/ecs.config` にコピーできます。

**`ecs.config` Amazon S3 のファイルを保存するには**

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

1. 次の形式を使用して、有効な Amazon ECS エージェントの設定変数を含む `ecs.config` ファイルを作成します。この例では、プライベートレジストリ認証を設定しています。詳細については、「[Amazon ECS での AWS 以外のコンテナイメージの使用](private-auth.md)」を参照してください。

   ```
   ECS_ENGINE_AUTH_TYPE=dockercfg
   ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"zq212MzEXAMPLE7o6T25Dk0i","email":"email@example.com"}}
   ```
**注記**  
利用可能な Amazon ECS エージェントの設定変数の完全なリストについては、GitHub の「[Amazon ECS コンテナエージェント](https://github.com/aws/amazon-ecs-agent/blob/master/README.md)」を参照してください。

1. 設定ファイルを保存するには、Amazon S3 内にプライベートバケットを作成します。詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)」を参照してください。

1. `ecs.config` ファイルを S3 バケットにアップロードします。詳細については、*Amazon Simple Storage Service 開発者ガイド*の「[オブジェクトのアップロード](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)」を参照してください。

**起動時に `ecs.config` ファイルを Amazon S3 からロードするには**

1. このセクションの上記の手順を完了して、読み取り専用 Amazon S3 アクセス権限をコンテナインスタンスに許可し、 `ecs.config` ファイルをプライベート S3 バケットに保存します。

1. 新しいコンテナインスタンスを起動し、EC2 ユーザーデータで次のサンプルスクリプトを使用します。このスクリプトは AWS CLI をインストールし、設定ファイルを `/etc/ecs/ecs.config` にコピーします。詳細については、「[Amazon ECS Linux コンテナインスタンスの起動](launch_container_instance.md)」を参照してください。

   ```
   #!/bin/bash
   yum install -y aws-cli
   aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config
   ```

# Amazon ECS コンテナエージェントをインストールする
<a name="ecs-agent-install"></a>

Amazon ECS クラスターに Amazon EC2 インスタンスを登録する必要があり、そのインスタンスが Amazon ECS に最適化された AMI に基づく AMI を使用していない場合は、次の手順を使用して Amazon ECS コンテナエージェントを手動でインストールできます。これを行うには、リージョンの Amazon S3 バケットのいずれかから、または Amazon Elastic Container Registry Public からエージェントをダウンロードできます。リージョンの Amazon S3 バケットのいずれかからダウンロードする場合は、必要に応じて、PGP 署名を使用してコンテナエージェントファイルの有効性を検証できます。

**注記**  
Amazon ECS と Docker サービスの両方の `systemd` ユニットには、両方のサービスを開始する前に `cloud-init` が終了するのを待つディレクティブがあります。Amazon EC2ユーザーデータの実行が終了するまで、`cloud-init` プロセスは終了したと見なされません。したがって、Amazon EC2 ユーザーデータを介して Amazon ECS または Docker を起動すると、デッドロックが発生する可能性があります。Amazon EC2 ユーザーデータを使用してコンテナエージェントを起動するには、`systemctl enable --now --no-block ecs.service` を使用できます。

## 非 Amazon Linux EC2 インスタンスに Amazon ECS コンテナエージェントをインストールする
<a name="ecs-agent-install-nonamazonlinux"></a>

Amazon EC2 インスタンスに Amazon ECS コンテナエージェントをインストールするには、リージョンの Amazon S3 バケットのいずれかからエージェントをダウンロードしてインストールできます。

**注記**  
Amazon Linux AMI 以外を使用する場合、Amazon ECS エージェントがタスクレベルのリソース制限をサポートするためには、Amazon EC2 インスタンスは `cgroup` ドライバーの `cgroupfs` サポートが必要です。詳細については、[GitHub で Amazon ECS エージェントについて](https://github.com/aws/amazon-ecs-agent)参照してください。

各システムアーキテクチャの最新 Amazon ECS コンテナエージェントファイルは、リージョン別に参考として以下に示します。


| リージョン | リージョン名 | Amazon ECS init deb ファイル | Amazon ECS init rpm ファイル | 
| --- | --- | --- | --- | 
| us-east-2 | 米国東部 (オハイオ) |  [Amazon ECS init amd64](https://s3.us-east-2.amazonaws.com/amazon-ecs-agent-us-east-2/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS init arm64](https://s3.us-east-2.amazonaws.com/amazon-ecs-agent-us-east-2/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS init x86\$164](https://s3.us-east-2.amazonaws.com/amazon-ecs-agent-us-east-2/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS init aarch64](https://s3.us-east-2.amazonaws.com/amazon-ecs-agent-us-east-2/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| us–east–1 | 米国東部 (バージニア北部) |  [Amazon ECS init amd64](https://s3.us-east-1.amazonaws.com/amazon-ecs-agent-us-east-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS init arm64](https://s3.us-east-1.amazonaws.com/amazon-ecs-agent-us-east-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS init x86\$164](https://s3.us-east-1.amazonaws.com/amazon-ecs-agent-us-east-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS init aarch64](https://s3.us-east-1.amazonaws.com/amazon-ecs-agent-us-east-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| us-west-1 | 米国西部 (北カリフォルニア) |  [Amazon ECS init amd64](https://s3.us-west-1.amazonaws.com/amazon-ecs-agent-us-west-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS init arm64](https://s3.us-west-1.amazonaws.com/amazon-ecs-agent-us-west-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS init x86\$164](https://s3.us-west-1.amazonaws.com/amazon-ecs-agent-us-west-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS init aarch64](https://s3.us-west-1.amazonaws.com/amazon-ecs-agent-us-west-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| us-west-2 | 米国西部 (オレゴン) |  [Amazon ECS init amd64](https://s3.us-west-2.amazonaws.com/amazon-ecs-agent-us-west-2/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS init arm64](https://s3.us-west-2.amazonaws.com/amazon-ecs-agent-us-west-2/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS init x86\$164](https://s3.us-west-2.amazonaws.com/amazon-ecs-agent-us-west-2/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS init aarch64](https://s3.us-west-2.amazonaws.com/amazon-ecs-agent-us-west-2/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| ap-east-1 | アジアパシフィック (香港) |  [Amazon ECS init amd64](https://s3.ap-east-1.amazonaws.com/amazon-ecs-agent-ap-east-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS init arm64](https://s3.ap-east-1.amazonaws.com/amazon-ecs-agent-ap-east-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS init x86\$164](https://s3.ap-east-1.amazonaws.com/amazon-ecs-agent-ap-east-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS init aarch64](https://s3.ap-east-1.amazonaws.com/amazon-ecs-agent-ap-east-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| ap-northeast-1 | アジアパシフィック (東京) |  [Amazon ECS init amd64](https://s3.ap-northeast-1.amazonaws.com/amazon-ecs-agent-ap-northeast-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS init arm64](https://s3.ap-northeast-1.amazonaws.com/amazon-ecs-agent-ap-northeast-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS init x86\$164](https://s3.ap-northeast-1.amazonaws.com/amazon-ecs-agent-ap-northeast-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS init aarch64](https://s3.ap-northeast-1.amazonaws.com/amazon-ecs-agent-ap-northeast-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| ap-northeast-2 | アジアパシフィック (ソウル) |  [Amazon ECS init amd64](https://s3.ap-northeast-2.amazonaws.com/amazon-ecs-agent-ap-northeast-2/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS init arm64](https://s3.ap-northeast-2.amazonaws.com/amazon-ecs-agent-ap-northeast-2/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS init x86\$164](https://s3.ap-northeast-2.amazonaws.com/amazon-ecs-agent-ap-northeast-2/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS init aarch64](https://s3.ap-northeast-2.amazonaws.com/amazon-ecs-agent-ap-northeast-2/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| ap-south-1 | アジアパシフィック (ムンバイ) |  [Amazon ECS init amd64](https://s3.ap-south-1.amazonaws.com/amazon-ecs-agent-ap-south-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS init arm64](https://s3.ap-south-1.amazonaws.com/amazon-ecs-agent-ap-south-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS init x86\$164](https://s3.ap-south-1.amazonaws.com/amazon-ecs-agent-ap-south-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS init aarch64](https://s3.ap-south-1.amazonaws.com/amazon-ecs-agent-ap-south-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| ap-southeast-1 | アジアパシフィック (シンガポール) |  [Amazon ECS init amd64](https://s3.ap-southeast-1.amazonaws.com/amazon-ecs-agent-ap-southeast-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS init arm64](https://s3.ap-southeast-1.amazonaws.com/amazon-ecs-agent-ap-southeast-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS init x86\$164](https://s3.ap-southeast-1.amazonaws.com/amazon-ecs-agent-ap-southeast-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS init aarch64](https://s3.ap-southeast-1.amazonaws.com/amazon-ecs-agent-ap-southeast-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| ap-southeast-2 | アジアパシフィック (シドニー) |  [Amazon ECS init amd64](https://s3.ap-southeast-2.amazonaws.com/amazon-ecs-agent-ap-southeast-2/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS init arm64](https://s3.ap-southeast-2.amazonaws.com/amazon-ecs-agent-ap-southeast-2/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS init x86\$164](https://s3.ap-southeast-2.amazonaws.com/amazon-ecs-agent-ap-southeast-2/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS init aarch64](https://s3.ap-southeast-2.amazonaws.com/amazon-ecs-agent-ap-southeast-2/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| ca-central-1 | カナダ (中部) |  [Amazon ECS init amd64](https://s3.ca-central-1.amazonaws.com/amazon-ecs-agent-ca-central-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS init arm64](https://s3.ca-central-1.amazonaws.com/amazon-ecs-agent-ca-central-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS init x86\$164](https://s3.ca-central-1.amazonaws.com/amazon-ecs-agent-ca-central-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS init aarch64](https://s3.ca-central-1.amazonaws.com/amazon-ecs-agent-ca-central-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| eu-central-1 | 欧州 (フランクフルト) |  [Amazon ECS init amd64](https://s3.eu-central-1.amazonaws.com/amazon-ecs-agent-eu-central-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS init arm64](https://s3.eu-central-1.amazonaws.com/amazon-ecs-agent-eu-central-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS init x86\$164](https://s3.eu-central-1.amazonaws.com/amazon-ecs-agent-eu-central-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS init aarch64](https://s3.eu-central-1.amazonaws.com/amazon-ecs-agent-eu-central-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| eu-west-1 | 欧州 (アイルランド) |  [Amazon ECS init amd64](https://s3.eu-west-1.amazonaws.com/amazon-ecs-agent-eu-west-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS init arm64](https://s3.eu-west-1.amazonaws.com/amazon-ecs-agent-eu-west-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS init x86\$164](https://s3.eu-west-1.amazonaws.com/amazon-ecs-agent-eu-west-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS init aarch64](https://s3.eu-west-1.amazonaws.com/amazon-ecs-agent-eu-west-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| eu-west-2 | 欧州 (ロンドン) |  [Amazon ECS init amd64](https://s3.eu-west-2.amazonaws.com/amazon-ecs-agent-eu-west-2/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS init arm64](https://s3.eu-west-2.amazonaws.com/amazon-ecs-agent-eu-west-2/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS init x86\$164](https://s3.eu-west-2.amazonaws.com/amazon-ecs-agent-eu-west-2/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS init aarch64](https://s3.eu-west-2.amazonaws.com/amazon-ecs-agent-eu-west-2/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| eu-west-3 | 欧州 (パリ) |  [Amazon ECS init amd64](https://s3.eu-west-3.amazonaws.com/amazon-ecs-agent-eu-west-3/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS init arm64](https://s3.eu-west-3.amazonaws.com/amazon-ecs-agent-eu-west-3/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS init x86\$164](https://s3.eu-west-3.amazonaws.com/amazon-ecs-agent-eu-west-3/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS init aarch64](https://s3.eu-west-3.amazonaws.com/amazon-ecs-agent-eu-west-3/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| sa-east-1 | 南米 (サンパウロ) |  [Amazon ECS init amd64](https://s3.sa-east-1.amazonaws.com/amazon-ecs-agent-sa-east-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS init arm64](https://s3.sa-east-1.amazonaws.com/amazon-ecs-agent-sa-east-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS init x86\$164](https://s3.sa-east-1.amazonaws.com/amazon-ecs-agent-sa-east-1/amazon-ecs-init-latest.x86_64.rpm) [Amazon ECS init aarch64](https://s3.sa-east-1.amazonaws.com/amazon-ecs-agent-sa-east-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| us-gov-east-1 | AWS GovCloud (米国東部) |  [Amazon ECS init amd64](https://s3.us-gov-east-1.amazonaws.com/amazon-ecs-agent-us-gov-east-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS init arm64](https://s3.us-gov-east-1.amazonaws.com/amazon-ecs-agent-us-gov-east-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS init x86\$164](https://s3.us-gov-east-1.amazonaws.com/amazon-ecs-agent-us-gov-east-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS init aarch64](https://s3.us-gov-east-1.amazonaws.com/amazon-ecs-agent-us-gov-east-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 
| us-gov-west-1 | AWS GovCloud (米国西部) |  [Amazon ECS init amd64](https://s3.us-gov-west-1.amazonaws.com/amazon-ecs-agent-us-gov-west-1/amazon-ecs-init-latest.amd64.deb) (amd64) [Amazon ECS init arm64](https://s3.us-gov-west-1.amazonaws.com/amazon-ecs-agent-us-gov-west-1/amazon-ecs-init-latest.arm64.deb) (arm64)  |  [Amazon ECS init x86\$164](https://s3.us-gov-west-1.amazonaws.com/amazon-ecs-agent-us-gov-west-1/amazon-ecs-init-latest.x86_64.rpm) (x86\$164) [Amazon ECS init aarch64](https://s3.us-gov-west-1.amazonaws.com/amazon-ecs-agent-us-gov-west-1/amazon-ecs-init-latest.aarch64.rpm) (aarch64)  | 

**非 Amazon Linux AMI を使用した Amazon EC2 インスタンスに Amazon ECS コンテナエージェントをインストールするには**

1. Amazon ECSへのアクセスを許可する IAM; ロールを使用して Amazon EC2インスタンスを起動します。詳細については、「[Amazon ECS コンテナインスタンスの IAM ロール](instance_IAM_role.md)」を参照してください。

1. インスタンスに接続します。

1. 最新バージョンの Docker をインスタンスにインストールします。

1. Docker のバージョンをチェックして、システムがバージョンの最小要件を満たしていることを確認します。Docker のサポートの詳細については、「[Amazon ECS EC2 コンテナインスタンス](ecs-agent-versions.md)」を参照してください。

   ```
   docker --version
   ```

1. オペレーティングシステムとシステムアーキテクチャ用の適切な Amazon ECS エージェントファイルをダウンロードし、インストールします。

   `deb` アーキテクチャの場合:

   ```
   ubuntu:~$ curl -O https://s3.us-west-2.amazonaws.com/amazon-ecs-agent-us-west-2/amazon-ecs-init-latest.amd64.deb
   ubuntu:~$ sudo dpkg -i amazon-ecs-init-latest.amd64.deb
   ```

   `rpm` アーキテクチャの場合:

   ```
   fedora:~$ curl -O https://s3.us-west-2.amazonaws.com/amazon-ecs-agent-us-west-2/amazon-ecs-init-latest.x86_64.rpm
   fedora:~$ sudo yum localinstall -y amazon-ecs-init-latest.x86_64.rpm
   ```

1. `/lib/systemd/system/ecs.service` ファイルを編集し、`[Unit]` セクションの最後に次の行を追加します。

   ```
   After=cloud-final.service
   ```

1. (オプション) インスタンスを `default` クラスター以外のクラスターに登録するには、`/etc/ecs/ecs.config` ファイルを編集して以下の内容を追加します。次の例は `MyCluster` クラスターを指定します。

   ```
   ECS_CLUSTER=MyCluster
   ```

   これらや他のエージェントランタイムオプションの詳細については、「[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. `ecs` サービスを開始します。

   ```
   ubuntu:~$ sudo systemctl start ecs
   ```

## ホストネットワークモードで Amazon ECS エージェントを実行する
<a name="container_agent_host"></a>

Amazon ECSコンテナエージェントを実行している場合、`ecs-init` は `host` ネットワークモードでコンテナエージェントのコンテナを作成します。これは、コンテナエージェントのコンテナでサポートされている唯一のネットワークモードです。

これにより、コンテナエージェントにより開始されたコンテナの [Amazon EC2 インスタンスのメタデータサービスエンドポイント](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) (`http://169.254.169.254`) へのアクセスをブロックできます。これにより、コンテナはコンテナインスタンスプロファイルから IAM ロール認証情報にアクセスできなくなります。また、タスクでは IAM タスクロールの認証情報のみが使用されます。詳細については、「[Amazon ECS タスクの IAM ロール](task-iam-roles.md)」を参照してください。

また、コンテナエージェントが `docker0` ブリッジ上の接続とネットワークトラフィックで競合しないようにもできます。

## Amazon ECS コンテナエージェントのログ設定パラメータ
<a name="agent-logs"></a>

Amazon ECS コンテナエージェントは、コンテナインスタンスのログを保存します。

コンテナエージェントバージョン 1.36.0 以降の場合、デフォルトでは、ログは Linux インスタンスの `/var/log/ecs/ecs-agent.log` および Windows インスタンスの `C:\ProgramData\Amazon\ECS\log\ecs-agent.log` にあります。

コンテナエージェントバージョン 1.35.0 以前の場合、デフォルトでは、ログは Linux インスタンスの `/var/log/ecs/ecs-agent.log.timestamp` および Windows インスタンスの `C:\ProgramData\Amazon\ECS\log\ecs-agent.log.timestamp` にあります。

デフォルトでは、エージェントログは 1 時間ごとにローテーションされ、最大 24 個のログが保存されます。

以下のコンテナエージェントの設定変数は、エージェントのデフォルトのログ記録動作を変更するために使用できます。使用可能なすべての設定パラメータの詳細については、[Amazon ECS コンテナエージェントの設定](ecs-agent-config.md) または GitHub の「[Amazon ECS Agent README](https://github.com/aws/amazon-ecs-agent/blob/master/README.md)」を参照してください。

コンテナエージェントバージョン 1.36.0 以降では、`logfmt` 形式を使用した場合のログファイルは以下の例のようになります。

```
level=info time=2019-12-12T23:43:29Z msg="Loading configuration" module=agent.go
level=info time=2019-12-12T23:43:29Z msg="Image excluded from cleanup: amazon/amazon-ecs-agent:latest" module=parse.go
level=info time=2019-12-12T23:43:29Z msg="Image excluded from cleanup: amazon/amazon-ecs-pause:0.1.0" module=parse.go
level=info time=2019-12-12T23:43:29Z msg="Amazon ECS agent Version: 1.36.0, Commit: ca640387" module=agent.go
level=info time=2019-12-12T23:43:29Z msg="Creating root ecs cgroup: /ecs" module=init_linux.go
level=info time=2019-12-12T23:43:29Z msg="Creating cgroup /ecs" module=cgroup_controller_linux.go
level=info time=2019-12-12T23:43:29Z msg="Loading state!" module=statemanager.go
level=info time=2019-12-12T23:43:29Z msg="Event stream ContainerChange start listening..." module=eventstream.go
level=info time=2019-12-12T23:43:29Z msg="Restored cluster 'auto-robc'" module=agent.go
level=info time=2019-12-12T23:43:29Z msg="Restored from checkpoint file. I am running as 'arn:aws:ecs:us-west-2:0123456789:container-instance/auto-robc/3330a8a91d15464ea30662d5840164cd' in cluster 'auto-robc'" module=agent.go
```

JSON 形式を使用した場合のログファイルは以下の例のようになります。

```
{"time": "2019-11-07T22:52:02Z", "level": "info", "msg": "Starting Amazon Elastic Container Service Agent", "module": "engine.go"}
```

# プライベート Docker イメージ用の Amazon ECS コンテナインスタンスを設定する
<a name="private-auth-container-instances"></a>

Amazon ECS コンテナエージェントは、基本認証を使用してプライベートレジストリで認証できます。プライベートレジストリ認証を有効にすると、タスク定義のプライベート Docker イメージを使用できます。この機能は、EC2 を使用するタスクでのみサポートされています。

プライベートレジストリ認証を有効にする別の方法では、AWS Secrets Manager を使用して、プライベートレジストリ認証情報を安全に保存してから、コンテナの定義で参照します。これにより、プライベートリポジトリのイメージをタスクで使用できるようになります。このメソッドは、EC2 または Fargate のいずれかを使用するタスクをサポートします。詳細については、「[Amazon ECS での AWS 以外のコンテナイメージの使用](private-auth.md)」を参照してください。

Amazon ECS コンテナエージェントでは、起動時に次の 2 つの環境変数を検索します。
+ `ECS_ENGINE_AUTH_TYPE`。送信する認証データのタイプを指定します。
+ `ECS_ENGINE_AUTH_DATA`。実際の認証情報が含まれます。

Amazon ECSに最適化されたAMIのLinuxバリアントは、コンテナインスタンスの起動時、およびサービスが開始されるたびに（**sudo start ecs** コマンドを使用して）、`/etc/ecs/ecs.config` ファイルをスキャンしてこれらの変数を探します。Amazon ECSに最適化されていないAMIは、これらの環境変数をファイルに保存し、`--env-file path_to_env_file`オプションを付けてコンテナエージェントを起動する**docker run**コマンドに渡す必要があります。

**重要**  
これらの認証環境変数を、 Amazon EC2 ユーザーデータを使用してインスタンス起動時に挿入することや、`--env` オプションを使用して **docker run** コマンドに渡すことはお勧めしません。これらの方法は、認証情報などの機密データには適していません。認証情報をコンテナインスタンスに安全に追加する方法については、「[Amazon S3 に Amazon ECS コンテナインスタンスの設定を保存する](ecs-config-s3.md)」を参照してください。

## 認証形式
<a name="docker-auth-formats"></a>

プライベートレジストリ認証には、`dockercfg` と `docker` の 2 つの形式を使用できます。

**dockercfg 認証形式**  
`dockercfg` 形式は、**docker login** コマンドの実行時に作成した設定ファイルに保存されている認証情報を使用します。このファイルを作成するには、ローカルシステムで **docker login** を実行し、レジストリのユーザー名、パスワード、および E メールアドレスを入力します。コンテナインスタンスにログインして、そこでコマンドを実行することもできます。Docker のバージョンによって、ファイルは `~/.dockercfg` または `~/.docker/config.json` として保存されます。

```
cat ~/.docker/config.json
```

出力:

```
{
  "auths": {
    "https://index.docker.io/v1/": {
      "auth": "zq212MzEXAMPLE7o6T25Dk0i"
    }
  }
}
```

**重要**  
Docker の新しいバージョンは、外部 `auths` オブジェクトを使用して、上に示したような設定ファイルを作成します。Amazon ECS エージェントは、`auths` オブジェクトを持たない、以下の形式の `dockercfg` 認証データのみをサポートします。**jq** ユーティリティをインストール済みである場合、このデータは **cat \$1/.docker/config.json \$1 jq .auths** コマンドを使用して抽出できます。

```
cat ~/.docker/config.json | jq .auths
```

出力:

```
{
  "https://index.docker.io/v1/": {
    "auth": "zq212MzEXAMPLE7o6T25Dk0i",
    "email": "email@example.com"
  }
}
```

上記の例では、以下の環境変数を、Amazon ECS コンテナエージェントが実行時にロードする環境変数ファイル ( `/etc/ecs/ecs.config` Amazon ECSに最適化された AMI の場合は ) に追加しなければなりません。Amazon ECS に最適化された AMI を使用せず、 **docker run** を使用して手動でエージェントを開始する場合は、エージェント開始時に `--env-file path_to_env_file` オプションを使用して環境変数ファイルを指定します。

```
ECS_ENGINE_AUTH_TYPE=dockercfg
ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"zq212MzEXAMPLE7o6T25Dk0i","email":"email@example.com"}}
```

次の構文を使用して複数のプライベートレジストリを設定できます。

```
ECS_ENGINE_AUTH_TYPE=dockercfg
ECS_ENGINE_AUTH_DATA={"repo.example-01.com":{"auth":"zq212MzEXAMPLE7o6T25Dk0i","email":"email@example-01.com"},"repo.example-02.com":{"auth":"fQ172MzEXAMPLEoF7225DU0j","email":"email@example-02.com"}}
```

**docker 認証形式**  
`docker` 形式は、エージェントが認証する必要があるレジストリサーバーの JSON 表現を使用します。また、そのレジストリに必要な認証パラメータ (ユーザー名、パスワード、およびそのアカウントの E メールアドレスなど) も含まれます。Docker Hub アカウントの場合、JSON 表現は次のようになります。

```
{
  "https://index.docker.io/v1/": {
    "username": "my_name",
    "password": "my_password",
    "email": "email@example.com"
  }
}
```

この例では、以下の環境変数を、Amazon ECS コンテナエージェントが実行時にロードする環境変数ファイル ( `/etc/ecs/ecs.config` Amazon ECSに最適化された AMI の場合は ) に追加する必要があります。Amazon ECS に最適化された AMI を使用せず、 **docker run** を使用して手動でエージェントを開始する場合は、エージェント開始時に `--env-file path_to_env_file` オプションを使用して環境変数ファイルを指定します。

```
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_ENGINE_AUTH_TYPE=docker
ECS_ENGINE_AUTH_DATA={"repo.example-01.com":{"username":"my_name","password":"my_password","email":"email@example-01.com"},"repo.example-02.com":{"username":"another_name","password":"another_password","email":"email@example-02.com"}}
```

## 手順
<a name="enabling-private-registry"></a>

以下の手順を使用して、コンテナインスタンスのプライベートレジストリをオン状態にします。

**Amazon ECS に最適化された AMI のプライベートレジストリを有効にするには**

1. SSH を使用してコンテナインスタンスにログインします。

1. `/etc/ecs/ecs.config` ファイルを開いて、レジストリとアカウントの `ECS_ENGINE_AUTH_TYPE` 値と `ECS_ENGINE_AUTH_DATA` 値を追加します。

   ```
   sudo vi /etc/ecs/ecs.config
   ```

   この例では Docker Hub のユーザーアカウントが認証されます。

   ```
   ECS_ENGINE_AUTH_TYPE=docker
   ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}}
   ```

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

   ```
   docker inspect ecs-agent | grep ECS_DATADIR
   ```

   出力:

   ```
   "ECS_DATADIR=/data",
   ```
**重要**  
前のコマンドで `ECS_DATADIR` 環境変数が返されない場合は、エージェントを停止する前に、このコンテナインスタンスで実行されているタスクをすべて停止する必要があります。より新しいエージェントは `ECS_DATADIR` 環境変数を使用して状態を保存するため、タスクが実行中でも問題なく停止および起動できます。詳細については、「[Amazon ECS コンテナエージェントをアップデートする](ecs-agent-update.md)」を参照してください。

1. `ecs` サービスを停止します。

   ```
   sudo stop ecs
   ```

   出力:

   ```
   ecs stop/waiting
   ```

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

     ```
     sudo systemctl restart ecs
     ```
   + Amazon ECS に最適化された Amazon Linux AMI の場合:

     ```
     sudo stop ecs && sudo start ecs
     ```

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

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

# Amazon ECS タスクとイメージの自動クリーンアップ
<a name="automated_image_cleanup"></a>

タスクがコンテナインスタンスに配置されるたびに、Amazon ECS コンテナエージェントによって、タスクが参照するイメージがリポジトリの指定されたタグの最新版であるかどうかが確認されます。そうでない場合、デフォルトの動作では、エージェントがそれぞれのリポジトリからイメージを取得します。タスクやサービスで頻繁にイメージを更新する場合は、コンテナインスタンスのストレージが、もう使用しておらず、今後使用する予定もない Docker イメージですぐにいっぱいになってしまいます。例えば、継続的な統合や継続的なデプロイ (CI/CD) パイプラインを使用している場合です。

**注記**  
Amazon ECS エージェントイメージのプル動作は、`ECS_IMAGE_PULL_BEHAVIOR` パラメータを使用してカスタマイズできます。詳細については、「[Amazon ECS コンテナエージェントの設定](ecs-agent-config.md)」を参照してください。

同様に、停止したタスクに属するコンテナも、ログ情報、データボリューム、その他の生成物でコンテナインスタンスストレージを消費します。これらの生成物は、コンテナが予期せずに停止した場合のデバッグには役に立ちますが、このストレージのほとんどが一定期間後は安全に解放できます。

デフォルトでは、Amazon ECS コンテナエージェントによって、停止したタスクとコンテナインスタンスのどのタスクでも使用されていない Docker イメージがクリーンアップされます。

**注記**  
自動イメージクリーンアップ機能には、Amazon ECS コンテナエージェントのバージョン 1.13.0 以上が必要です。エージェントを最新バージョンに更新するには、「[Amazon ECS コンテナエージェントをアップデートする](ecs-agent-update.md)」を参照してください。

以下のエージェント設定変数を使用して、タスクとイメージの自動クリーンアップの使い勝手を調整できます。コンテナインスタンスでこれらの変数を設定する方法の詳細については、「[Amazon ECS コンテナエージェントの設定](ecs-agent-config.md)」を参照してください。

`ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION`  
停止したタスクのコンテナを削除する際のデフォルトの待機時間。1 未満に設定すると、その値は無視されます。デフォルトでは、このパラメータは 3 時間に設定されていますが、アプリケーションでの必要に応じて、最短で 1 秒まで短縮できます。  
イメージクリーンアッププロセスは、そのイメージを参照するコンテナがある限りイメージを削除できません。コンテナが削除されると、参照されていない画像は、いずれも画像クリーンアップの設定パラメーターに基づいてクリーンアップの対象となります。

`ECS_DISABLE_IMAGE_CLEANUP`  
この変数を `true` に設定した場合は、コンテナインスタンスでのイメージの自動クリーンアップはオフになり、イメージの自動的な削除は実行されません。

`ECS_IMAGE_CLEANUP_INTERVAL`  
この変数は、イメージの自動クリーンアッププロセスが削除するイメージをチェックする頻度を指定します。デフォルトでは 30 分ごとですが、より頻繁にイメージを削除するには最短で 10 分まで短くできます。

`ECS_IMAGE_MINIMUM_CLEANUP_AGE`  
この変数は、イメージが取得されてから、削除の対象になるまでの期間の最短時間を指定します。これは、取得されたばかりのイメージがクリーンアップされるのを防ぐために使用されます。デフォルトは 1 時間です。

`ECS_NUM_IMAGES_DELETE_PER_CYCLE`  
この変数は、1 つのクリーンアップサイクルで削除するイメージの数を指定します。デフォルトは 5 で、最小は 1 です。

Amazon ECS コンテナエージェントが実行中でありイメージの自動クリーンアップがオフになっていない場合、エージェントは `ECS_IMAGE_CLEANUP_INTERVAL` 変数で決定された頻度で、実行中または停止されたコンテナから参照されていない Docker イメージをチェックします。使用されていないイメージが見つかり、それらが `ECS_IMAGE_MINIMUM_CLEANUP_AGE` 変数で指定された最短クリーンアップ時間よりも古い場合、エージェントは `ECS_NUM_IMAGES_DELETE_PER_CYCLE` 変数で指定された最大数までイメージを削除します。最後に参照された日時が最も古いイメージから順に削除されます。イメージが削除されると、エージェントは次の間隔まで待ってから、再度プロセスを繰り返します。