为什么我的 Windows 任务在 Amazon ECS 中失败?

1 分钟阅读
0

我想对 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 容器实例以传递数据

AWS 官方
AWS 官方已更新 2 个月前