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

自動化タスクとイメージのクリーンアップ

タスクがコンテナインスタンスに配置されるたびに、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 分まで短くできます。

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 変数で指定された最大数までイメージを削除します。最後に参照された日時が最も古いイメージから順に削除されます。イメージが削除されると、エージェントは次の間隔まで待ってから、再度プロセスを繰り返します。