サービスの調整ロジック - Amazon Elastic Container Service

サービスの調整ロジック

Amazon ECS サービススケジューラには、サービスタスクが繰り返し起動に失敗した場合にタスクを起動する頻度を調整するロジックがあります。

ECS サービスのタスクが繰り返し RUNNING 状態への遷移に失敗 (PENDING から直接 STOPPED に進行) する場合、その後の再起動の試行間隔は最大 15 分まで段階的に増加します。この最大期間は今後変更される可能性があり、永続的なものと見なすことはできません。この動作により、起動できないタスクが Amazon ECS クラスターのリソースまたは Fargate のインフラストラクチャのコストに与える影響が軽減されます。サービスによって調整ロジックがトリガーされると、次のサービスイベントメッセージが表示されます。

(service service-name) is unable to consistently start tasks successfully.

Amazon ECS によって失敗したサービスの再試行が停止されることはありません。また、再起動間隔を増やす以外に変更を加えることもありません。サービスの調整ロジックにはユーザーが調整できるパラメータは用意されていません。

新しいタスク定義を使用するようにサービスを更新する場合、サービスは即時通常の調整されていない状態に戻ります。詳細については、「サービスの更新」を参照してください。

このロジックをトリガーする一般的な原因を以下に示します。

  • クラスターでタスクをホストするためのリソース (ポート、メモリ、CPU ユニットなど) が不足している。この場合、不十分なリソースサービスイベントメッセージも表示されます。

  • Amazon ECS コンテナエージェントがタスクの Docker イメージをプルできない。これは、コンテナイメージ名、イメージ、またはタグが不正であったり、プライベートレジストリの認証またはアクセス権限がないためである可能性があります。この場合、停止されたタスクのエラーCannotPullContainerError も表示されます。

  • コンテナインスタンスでコンテナを作成するために十分なディスク容量が不足している。この場合、停止されたタスクのエラーCannotCreateContainerError も表示されます。詳細については、「CannotCreateContainerError: API error (500): devmapper」を参照してください。

重要

RUNNING 状態になった後で停止されたタスクは、調整ロジックまたは関連サービスイベントメッセージをトリガーしません。たとえば、サービスの Elastic Load Balancing ヘルスチェックが失敗した場合、タスクに異常のフラグが付けられ、Amazon ECS によってタスク登録が解除されて強制終了されます。調整はトリガーされません。タスクのコンテナコマンドでゼロ以外の終了コードで即時終了した場合でも、タスクはすでに RUNNING 状態に移行しています。コマンドのエラーが原因で即時失敗したタスクは、調整やサービスイベントメッセージをトリガーしません。