Amazon ECS で Windows タスクが失敗する理由を知りたいです。

所要時間1分
0

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

解決策

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

停止したタスクをトラブルシューティングするには、AWS マネジメントコンソールまたは AWS CLI を使用して停止したタスクのエラーを確認します。DescribeTasks を使用しても、停止したタスクに関する情報を取得できます。

重要: 停止したタスクについて DescribeTasks が取得する情報にアクセスできるのは、タスクが失敗してから 1 時間以内に限られます。このデータをより長く保持するには、GitHub のウェブサイトの amazon-ecs-stopped-tasks-cwlogs にある AWS CloudFormation テンプレートを使用します。このテンプレートを使用すると、タスクが停止したときに Amazon EventBridge が生成する Amazon CloudWatch ログをキャプチャできます。

表示されたエラーメッセージに応じて、次のトラブルシューティング手順を実行します。

一般的な停止タスクエラー

コンテナインスタンスのヘルスチェックの問題など、一般的な停止タスクエラーのトラブルシューティングについては、「Amazon ECS タスクが停止する理由を知りたいです」を参照してください。

CannotPullContainerError: API エラーが発生した場合は、「Amazon ECS で発生する Amazon Elastic Container Registry (Amazon ECR) の CannotPullContainerError: API エラーを解決する方法を教えてください」を参照してください。

OutOfMemory エラーが返された場合は、「Amazon ECS での OutOfMemory エラーをトラブルシューティングする方法を教えてください」を参照してください。

「チェーンに有効なプロバイダがありません」というエラー

インスタンスに ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE が設定されていない場合、次に示すようなエラーが発生します。「CannotStartContainerError: デーモンからの応答にエラーがあります。ログ記録ドライバーを初期化できませんでした。CloudWatch ログストリームを作成できませんでした。 NoCredentialProviders: チェーンに有効なプロバイダーがありません」

この問題を解決するには、コンテナインスタンスで ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE を有効にする必要があります。PowerShell スクリプトの例:

<powershell>
[Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine")
Initialize-ECSAgent -Cluster cluster-name -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]'
</powershell>

注: cluster-name は、実際のクラスター名に置き換えます。

「コンテナのオペレーティングシステムがホストのオペレーティングシステムと一致しません」というエラー

ホストのオペレーティングシステム (OS) が Windows コンテナインスタンスのベースイメージ OS と一致しない場合、次に示すようなエラーが発生します。「CannotStartContainerError: ResourceInitializationError: 新しいコンテナランタイムタスクを作成できませんでした。shim タスクを作成できませんでした: hcs::CreateComputeSystem abcdxyz: コンテナのオペレーティングシステムがホストのオペレーティングシステムと一致しません」

この問題を解決するには、AWS Fargate または Amazon Elastic Compute Cloud (Amazon EC2) のホストがコンテナインスタンスと同じ OS を使用していることを確認してください。

「ロールを引き受けることができません」というエラー

コンテナインスタンスが AWS Identity and Access Management (IAM) ロールを引き受けられない場合、「ロール "arn:aws:iam::abcdefxyz123:role/yyyyyyyy" を引き受けられません」という形式のエラーが発生します。

次のコマンドを実行し、ユーザーデータスクリプトに -EnableTaskIAMRole オプションが設定されていることを確認します。

<powershell>
Import-Module ECSTools
Initialize-ECSAgent -Cluster 'windows' -EnableTaskIAMRole
</powershell>

Windows インスタンスの構成要件を満たしていることを確認してください。

関連情報

Amazon ECS Windows コンテナインスタンスをブートストラップしてデータを渡す

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