AWS re:Postを使用することにより、以下に同意したことになります AWS re:Post 利用規約

コンテナの終了中に Amazon ECS タスクが停止したり、開始できなかったりした場合のトラブルシューティング方法を教えてください。

所要時間1分
0

ECS クラスターで失敗した Amazon Elastic Container Service (Amazon ECS) タスクをトラブルシューティングしたいです。

簡単な説明

コンテナは、アプリケーションの問題、リソースの制約、またはその他の問題が原因で終了することがあります。

イメージの問題によるタスク失敗については、「Amazon ECS クラスターでタスクが開始されない場合の "イメージが存在しません" というエラーを解決する方法を教えてください」を参照してください。

予期せず停止した AWS Fargate タスクについては、「Amazon ECS 停止タスクのエラーメッセージ」を参照してください。

AWS Systems Manager オートメーションランブック AWSSupport-TroubleshootECSTaskFailedToStart を使用すると、ECS タスクの起動を妨げる、他の原因を分析できます。

Amazon ECS クラスターを手動でトラブルシューティングすることもできます。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

ランブックを実行してクラスターをトラブルシューティングする

AWSSupport-TroubleshootECSTaskFailedToStart ランブックを開始する前に、IAM ユーザーまたはロールに必要なアクセス許可があることを確認してください。詳細については、AWSSupport-TroubleshootECSTaskFailedToStart の「必要な IAM アクセス許可」セクションを参照してください。

ランブックを起動するには、次の手順を実行します。

  1. AWS Systems Manager コンソールで AWSSupport-TroubleshootECSTaskFailedToStart ドキュメントを開きます。
  2. [オートメーションの実行] を選択します。
  3. 入力パラメータに次の値を入力します。
    (オプション) AutomationAssumeRole: オートメーションにアクションの実行を許可する IAM ロールの ARN。ロールを指定しない場合、オートメーションはランブックを起動したユーザーのアクセス許可を使用します。
    ClusterName: タスクの開始に失敗した ECS クラスターの名前。
    (オプション) CloudwatchRetentionPeriod: AWS Lambda 関数ログをAmazon CloudWatch ログに格納する保持期間 (日単位)。
    注: 分析の結果、ネットワーク接続をテストする必要があると判断された場合は、この値を定義します。デフォルト値は 30 日です。その他の有効な値は、1、3、5、7、14、60、90です。
    TaskId: 最新の失敗したタスクの ID。
  4. [実行] を選択します。
    注: ランブックのステップに関する詳細については、AWSSupport-TroubleshootECSTaskFailedToStart の「ドキュメントステップ」セクションを参照してください。
  5. [出力] セクションで詳細な結果を確認できます。出力には次の情報が含まれます。
    TaskFailureReason: 最終の失敗したタスクに関する理由の分析。
    ExecutionLogs: Runbook が実行した各ステップの出力ログ。
    ENI_Deletion_Message.Status: ランブックがネットワーク接続をテストするために Lambda 関数を作成したときの、Lambda 仮想プライベートクラウド (VPC) エラスティックネットワークインターフェイスの削除ステータス。
    注: ENI_Deletion_Message がネットワークインターフェースが削除されていないことが示す場合は、ネットワークインターフェースを手動で削除します。

ECS クラスターを手動でトラブルシューティングする

サービスイベントログの診断情報を確認します。さらに、Amazon ECS コンソールまたは AWS CLI を使用して、停止したタスクでのエラーを確認します。

メモリ制約の問題に対処する方法については、「Amazon ECS のタスクにどのようにメモリを割り当てるかを教えてください」を参照してください。

ログドライバーを設定済みの場合は、アプリケーションログでアプリケーションの問題がないか確認してください。たとえば、awslogs ログドライバーをタスク定義で設定した場合は、Amazon CloudWatch で awslogs コンテナのログを確認します。または、タスク定義のログ設定オプションを使用して、コンテナのサポートされているログドライバーにログを送信します。

Fargate 以外の ECS タスク

Amazon Elastic Compute Cloud (Amazon EC2) 起動タイプでデフォルトの JSON ファイルログドライバーを使用している場合は、次の docker logs コマンドを実行します。

docker logs dc7240fe892a

注: dc7240fe892a は実際のコンテナ ID に置き換えます。

上記のコマンドは、ECS コンテナインスタンス上のコンテナの Docker ログをチェックします。JSON ログドライバーの詳細については、Docker のウェブサイトで「JSON ファイルロギングドライバー」を参照してください。

Fargate タスク

awslogs ログドライバーは、ログを Docker から CloudWatch Logs に渡します。ログには、コマンド出力からの STDOUT および STDERR I/O ストリームが表示されます。

関連情報

AWS Support Automation Workflows (SAW)

オートメーションを設定する

Systems Manager Automation を使用して自動操作を実行する

AWS公式
AWS公式更新しました 1ヶ月前
コメントはありません