2023.01.20  

【ESC】タスク停止: essential container in task exited

AWS    

AWS ECSのタスクが停止理由『Essential container in task exited』で停止したので、その際の対応についてメモ書きします。

ログも出力されないので、原因の特定に時間がかかりました。

結論

ECSのタスク定義に設定したECRのイメージが本来使用しようとしていたものと違っていた(※)ので、当エラーが発生していました。

※ 本来はAPIを受け付けるイメージをタスクに設定する予定だったのですが、誤ってCMD定義のない別のイメージをプッシュしていました。

基本的に、Essential container in task exited が発生しても、exitCode 0 (終了コード 0) なら特にエラーは発生していないようです。(終了コードの詳細と確認方法については下記に記載しています)

今回の事象ではexitCode 0となっていましたので、ECSの設定に間違いはなく、アプリ側の誤りかと思い調査したところ今回のミスを発見しました。

一般的な終了コード

下記はマニュアル一般的な終了コードの抜粋です。

0 – Entrypoint、success、または CMD が実行を完了しているため、コンテナが停止しています。

1 – アプリケーションエラーを表します。詳細については、アプリケーションログを確認してください。

137 – タスクがコンテナの強制終了 (SIGKILL) であった場合に発生します。
SIGKILL が送信された後、デフォルトの 30 秒以内に SIGTERM に応答できない場合、コンテナは強制停止します。デフォルトの 30 秒の期間は、ECS_CONTAINER_STOP_TIMEOUT パラメータを使用して ECS コンテナエージェントで設定できます。
これはメモリ不足 (OOM) の状況でも発生する可能性があります。CloudWatch メトリクスを確認して、OOM が発生したかどうかを確認します。

139 – セグメンテーション違反が発生した場合に発生します。使用できないメモリ領域にアプリケーションがアクセスしようとしたか、未設定または無効な環境変数がある可能性があります。

255 – コンテナ内の ENTRYPOINT CMD コマンドがエラーにより失敗した場合に発生します。CloudWatch ログを確認してください

デバッグに便利なツール

tracerコマンドを使うとECSタスクの実行状態を簡単に確認できて便利です。

上記の終了コードの確認もこちらのツールで行えます。

macの場合は下記コマンドでインストールできます。

$ brew install fujiwara/tap/tracer

コマンドは tracer "クラスターID" "タスクID"のように指定して実行します。
また、実行には環境変数AWS_REGIONに確認対象のリージョンを指定する必要があります。

$ export AWS_REGION=ap-northeast-1
$ tracer test-Cluster 1234567890abcde

2023-01-26T17:10:01.439+01:00   TASK    Created
2023-01-26T17:10:01.470+01:00   SERVICE (service test-Service) has started 1 tasks: (task 1234567890abcde).
2023-01-26T17:10:04.472+01:00   TASK    Connected
2023-01-26T17:10:14.191+01:00   TASK    Pull started
2023-01-26T17:10:28.955+01:00   TASK    Pull stopped
2023-01-26T17:10:33.143+01:00   TASK    Execution stopped
2023-01-26T17:10:43.172+01:00   TASK    Stopping
2023-01-26T17:10:43.172+01:00   TASK    StoppedReason:Essential container in task exited
2023-01-26T17:10:43.172+01:00   TASK    StoppedCode:EssentialContainerExited
2023-01-26T17:10:43.286+01:00   SERVICE (service test-Service) deregistered 1 targets in (target-group arn:aws:elasticloadbalancing:...)
2023-01-26T17:10:43.295+01:00   SERVICE (service test-Service) has begun draining connections on 1 tasks.
2023-01-26T18:05:06.763+01:00   TASK    Stopped
2023-01-26T18:05:06.763+01:00   CONTAINER:xx-xxx    STOPPED (exit code: 1)
コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信