自動化タスクとイメージのクリーンアップ
タスクがコンテナインスタンスに配置されるたびに、Amazon ECS コンテナエージェントによって、タスクが参照するイメージがリポジトリの指定されたタグの最新版であるかどうかが確認されます。そうでない場合、デフォルトの動作では、エージェントがそれぞれのリポジトリからイメージを取得します。タスクやサービスで頻繁にイメージを更新する場合は、コンテナインスタンスのストレージが、もう使用しておらず、今後使用する予定もない Docker イメージですぐにいっぱいになってしまいます。例えば、継続的な統合や継続的なデプロイ (CI/CD) パイプラインを使用している場合です。
注記
Amazon ECS エージェントイメージのプル動作は、ECS_IMAGE_PULL_BEHAVIOR
パラメータを使用してカスタマイズできます。詳細については、「Amazon ECS コンテナエージェントの設定」を参照してください。
同様に、停止したタスクに属するコンテナも、ログ情報、データボリューム、その他の生成物でコンテナインスタンスストレージを消費します。これらの生成物は、コンテナが予期せずに停止した場合のデバッグには役に立ちますが、このストレージのほとんどが一定期間後は安全に解放できます。
デフォルトでは、Amazon ECS コンテナエージェントによって、停止したタスクとコンテナインスタンスのどのタスクでも使用されていない Docker イメージがクリーンアップされます。
注記
自動イメージクリーンアップ機能には、Amazon ECS コンテナエージェントのバージョン 1.13.0 以上が必要です。エージェントを最新バージョンに更新するには、「Amazon ECS コンテナエージェントをアップデートする」を参照してください。
調整可能なパラメータ
以下のエージェント設定変数を使用して、タスクとイメージの自動クリーンアップの使い勝手を調整できます。コンテナインスタンスでこれらの変数を設定する方法の詳細については、「Amazon ECS コンテナエージェントの設定」を参照してください。
ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION
-
この変数は、停止されたタスクに属するコンテナを削除するまでの待機時間を指定します。イメージクリーンアッププロセスは、そのイメージを参照するコンテナがある限りイメージを削除できません。イメージがコンテナ (停止または実行中) から参照されなくなり、そのイメージがクリーンアップの対象になります。デフォルトでは、このパラメータは 3 時間に設定されていますが、アプリケーションでの必要に応じて、最短で 1 秒まで短縮できます。値を 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
変数で指定された最大数までイメージを削除します。最後に参照された日時が最も古いイメージから順に削除されます。イメージが削除されると、エージェントは次の間隔まで待ってから、再度プロセスを繰り返します。