Amazon ECS タスクライフサイクル - Amazon Elastic Container Service

Amazon ECS タスクライフサイクル

タスクが手動またはサービスの一部として開始されると、自己終了するか手動で停止されるまでに、複数の状態を経由します。バッチジョブとして実行され、PENDING から RUNNING、その後 STOPPED と自然に進行するタスクもあります。他のタスクの場合は、サービスの一部であることもありますが、無制限に実行され続けるか、必要に応じてスケールアップまたはスケールダウンします。

タスクの停止や、スケールアップまたはスケールダウンのためのサービスの必要数の更新など、タスクのステータスの変更がリクエストされた場合、Amazon ECS コンテナエージェントはこれらの変更をタスクの最後の既知のステータス (lastStatus) およびタスクの目的のステータス (desiredStatus) として追跡します。タスクの最後の既知のステータスと目的のステータスの両方が、コンソールでまたは API あるいは AWS CLI でタスクを記述することにより、表示できます。

以下のフローチャートは、タスクのライフサイクルのフローを示しています。

タスクのライフサイクル状態の説明図。状態には、PROVISIONING、PENDING、ACTIVATING、RUNNING、DEACTOVATING、STOPPING があります。

ライフサイクル状態

それぞれのタスクのライフサイクル状態の説明は、以下のとおりです。

PROVISIONING

Amazon ECS は、タスクを起動する前に追加のステップを実行する必要があります。例えば、awsvpc ネットワークモードを使用するタスクの場合、Elastic Network Interface をプロビジョニングする必要があります。

保留中

これは、Amazon ECS が他の操作を実行するためにコンテナエージェントで待機している遷移状態です。タスクは、そのタスクに利用可能なリソースがあるまで保留状態のままです。

アクティブ化中

これは、タスクが起動された後で、タスクが RUNNING 状態に移行する前に、Amazon ECS が追加の手順を実行する必要がある移行状態です。これは、Amazon ECS がコンテナイメージをプルし、コンテナを作成し、タスクネットワークを設定し、ロードバランサーのターゲットグループを登録し、サービス検出を設定する状態です。

RUNNING

タスクを正常に実行中です。

非アクティブ化中

これは、タスクを停止する前に Amazon ECS が追加のステップを実行する必要がある移行状態です。例えば、Elastic Load Balancings ターゲットグループを使用するように設定されたサービスの一部であるタスクの場合、この状態でターゲットグループの登録解除が行われます。

停止中

これは、Amazon ECS が他の操作を実行するためにコンテナエージェントで待機している遷移状態です。

Linux コンテナの場合、コンテナエージェントは、アプリケーションを終了してシャットダウンする必要があることを通知する SIGTERM シグナルを送信し、タスク定義で設定された StopTimeout 期間を待機した後に SIGKILL を送信します。

プロビジョン解除中

Amazon ECS は、タスクが停止された後で、タスクが STOPPED 状態に移行する前に、追加の手順を実行する必要があります。例えば、awsvpc ネットワークモードを使用するタスクの場合、Elastic Network Interface をデタッチして削除する必要があります。

停止

タスクは正常に停止しました。

エラーが原因でタスクが停止した場合は、「Amazon ECS の停止したタスクのエラーを表示する」を参照してください。

DELETED

これは、タスクが停止したときの移行状態です。この状態はコンソールには表示されませんが、describe-tasks に表示されます。