我想对 Amazon Elastic Container Service (Amazon ECS) 集群中已停止的 Windows 任务进行故障排除。
解决方案
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
要对已停止的任务进行故障排除,请使用 AWS 管理控制台或 AWS CLI 查看已停止的任务错误。或者,使用 DescribeTasks 获取有关已停止任务的信息。
**重要事项:**您只能在任务失败后的 1 小时内访问 DescribeTasks 提取的有关已停止任务的信息。要将这些数据保留更长时间,请使用 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”问题?。
“No valid providers in chain”(链中没有有效的提供商)错误
如果您的实例没有设置 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 替换为您的集群名称。
“The container operating system does not match the host operating system”(容器操作系统与主机操作系统不匹配)错误
如果主机操作系统 (OS) 与 Windows 容器实例的基础映像操作系统不匹配,则您会收到看起来类似于以下内容的错误:“CannotStartContainerError: ResourceInitializationError:无法创建新的容器运行时任务:无法创建 shim 任务:hcs::CreateComputeSystem abcdxyz: 容器操作系统与主机操作系统不匹配”。
要解决此问题,请验证 AWS Fargate 或 Amazon Elastic Compute Cloud (Amazon EC2) 主机是否使用与容器实例相同的操作系统。
“Unable to assume the role”(无法代入角色)错误
如果容器实例无法代入 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 容器实例以传递数据