停止されたタスクでのエラーの確認 - Amazon Elastic Container Service

停止されたタスクでのエラーの確認

タスクの開始に問題がある場合、エラーのためにタスクが停止している可能性があります。たとえば、タスクを実行するとタスクが PENDING ステータスを表示して消えるとします。停止されたタスクを表示し、エラーメッセージを検査することで、Amazon ECS コンソールでこのような停止されたタスクでのエラーを表示できます。タスク定義で awslogs ログドライバーを使用している場合、Amazon CloudWatch Logs に書き込まれるアプリケーションログは、停止したタスクが表示されている限り、Amazon ECS コンソールの [Logs] (ログ) タブに表示されます。

重要

停止されたタスクは Amazon ECS コンソール、AWS CLI、および AWS SDK に、タスクが停止されてから少なくとも 1 時間は表示されます。その後、停止したタスクの詳細は期限切れになり、Amazon ECS では利用できなくなります。

また Amazon ECS は、タスク状態変更イベントを Amazon EventBridge に送信します。イベントブリッジではイベントを見ることはできません。代わりに、Amazon CloudWatch Logs などの他の永続ストレージにイベントを送信するルールを作成します。ストレージを使用して、Amazon ECS コンソールで期限切れになって表示されなくなったタスクの詳細を見ることができます。詳細については、「タスク状態変更イベント」を参照してください。

Amazon ECS イベントを Amazon CloudWatch Logs にアーカイブする EventBridge 設定のサンプルについては、GitHub ウェブサイトの「CloudWatch Logs 内の ECS 停止タスク」を参照してください。

New console

新しい AWS Management Console

次の手順に従って、新しい AWS Management Console を使用して停止されたタスクにエラーがないかどうかを見ることができます。

  1. Amazon ECS コンソール (https://console.aws.amazon.com/ecs/) を開きます。

  2. ナビゲーションペインで [Clusters] (クラスター) を選択します。

  3. [Clusters] (クラスター) ページで、クラスターを選択します。

  4. [Cluster: name] (クラスター: 名前) ページで、[Tasks] (タスク) タブを選択します。

  5. 停止したタスクを選択して検査します。

  6. [Status] (ステータス) セクションで、[Stopped reason] (停止理由) フィールドを検査してタスクが停止された理由を確認します。

Classic console
  1. Amazon ECS コンソール (https://console.aws.amazon.com/ecs/) を開きます。

  2. [クラスター]の ページで、停止されたタスクが存在するクラスターを選択します。

  3. [クラスター: clustername] ページで、[タスク] を選択します。

  4. [必要なタスクのステータス] テーブルのヘッダーで、[停止] を選択して停止されたタスクを表示し、その中から検査するタスクを選択します。直近の停止されたタスクが先頭に表示されます。

  5. [詳細] セクションで、[停止理由] フィールドを検査して、タスクが停止された理由を確認します。

    
                                    タスクが停止された理由

    考えられる理由とその説明を以下に示します。

    タスクが ELB ヘルスチェックに失敗 (elb elb-name)

    現在のタスクは、タスクのサービスに関連付けられたロードバランサーの Elastic Load Balancing ヘルスチェックに失敗しました。詳細については、「サービスロードバランサーのトラブルシューティング」を参照してください。

    (デプロイメント デプロイメント ID) によって開始されるスケーリングアクティビティ

    安定したサービスの必要数を減らすと、必要数に達するまでいくつかのタスクを停止する必要があります。それが理由で、ダウンスケーリングサービスによってタスクが停止されます。

    ホスト EC2 (インスタンス id) が停止/終了

    実行中のタスクでコンテナインスタンスを停止または終了した場合、それが理由でタスクが停止されます。

    ユーザーによって強制的に登録解除されたコンテナインスタンス

    実行中のタスクでコンテナインスタンスを強制的に登録解除した場合、それが理由でタスクが停止されます。

    タスクの必須コンテナが終了

    タスク定義で essential とマークされたコンテナが終了するか停止した場合、タスクは停止される場合があります。必須のコンテナの終了が停止したタスクの原因である場合、「ステップ 6」で、コンテナが停止した詳細な診断情報を得られます。

  6. 停止されたコンテナがある場合は、コンテナを展開し、[Status reason (状況の理由)] 行を検査して、タスクの状態が変わった原因を確認します。

    
                                    停止されたコンテナのエラー

    上記の例では、コンテナイメージ名が見つかりませんでした。イメージ名のスペルが正しくない可能性があります。

    この検査で十分な情報が得られない場合は、SSH でコンテナインスタンスに 接続し、Docker コンテナをローカルで検査できます。詳細については、「Docker コンテナを検査する」を参照してください。

AWS CLI
  1. クラスターで停止したタスクを一覧表示します。出力には、タスクの Amazon リソースネーム (ARN) が含まれますが、この名前は、タスクを説明するものである必要があります。

    aws ecs list-tasks \ --cluster cluster_name \ --desired-status STOPPED \ --region us-west-2
  2. 停止したタスクを記述して、レスポンスで stoppedReason を取得します。

    aws ecs describe-tasks \ --cluster cluster_name \ --tasks arn:aws:ecs:us-west-2:account_id:task/cluster_name/task_ID \ --region us-west-2

その他のリソース

次のページでは、エラーコードに関する追加情報が記載されています。