Global outage event
If you're experiencing issues with your AWS services, then please refer to the AWS Health Dashboard. You can find the overall status of ongoing outages, the health of AWS services, and the latest updates from AWS engineers.
为什么我的 Amazon ECS 任务停止了?
我想对已停止的 Amazon Elastic Container Service (Amazon ECS) 任务进行故障排除。
解决方法
对已停止的任务进行故障排除
使用 DescribeTasks API 调用查看已停止任务的详细信息。然后,根据任务详细信息中的停止原因和退出代码,对任务进行故障排除。
已停止任务的详细信息仅在 API 结果中显示 1 小时。要长时间查看已停止任务的详细信息,请使用 GitHub 网站上的 amazon-ecs-stopped-tasks-cwlogs 模板。
任务中的基本容器已退出
如果基本容器已退出,请通过以下退出代码之一解决您的问题:
- 当入口点操作完成、执行成功或 CMD 命令完成,且 Amazon ECS 停止容器时,将会出现退出代码 0。
- 当出现应用程序错误时,将会出现退出代码 1。要对此退出代码进行故障排除,请查看您的应用程序日志。
- 当您在 30 秒时间段内未对 SIGTERM 做出响应,且 Amazon ECS 使用 SIGKILL 停止容器时,将会出现退出代码 137。要更改默认的 30 秒时间段,请使用 ECS_CONTAINER_STOP_TIMEOUT 参数来更新 Amazon ECS 容器代理。
**注意:**此退出代码也会由于内存不足错误而出现。要检查您的资源使用情况,请查看 Amazon ECS 的 Amazon CloudWatch 指标。 - 当应用程序尝试访问不可用的内存区域时,将会出现退出代码 139。当未设置环境占位符或环境占位符无效导致分段错误时,也会出现此退出代码。要对此问题进行故障排除,请查看 Amazon ECS 任务的 CloudWatch 日志。
- 当容器收到正常关闭警告,且 Amazon ECS 关闭该容器时,将会出现退出代码 143。
- 当容器中的 ENTRYPOINT CMD 命令由于错误而失败时,将会出现退出代码 255。要确认您的容器是否由于错误而失败,请查看您的 CloudWatch 日志。
有关详细的故障排除步骤,请参阅如何对 Amazon ECS 任务在容器退出时停止或无法启动的问题进行故障排除?
CannotPullContainerError
当任务因 Amazon ECS 无法检索指定的容器映像而无法启动时,将会出现此错误。
对于 Amazon Elastic Compute Cloud (Amazon EC2) 启动类型的任务,要解决此问题,请参阅如何解决在 Amazon ECS 中启动 EC2 任务时出现的 "CannotPullContainerError" 错误?
对于使用 AWS Fargate 启动类型的 Amazon ECS 任务,要解决此问题,请参阅如何解决 Fargate 上 Amazon ECS 任务的 "cannotpullcontainererror" 错误?
任务未通过弹性负载均衡器运行状况检查
对于使用 EC2 启动类型的任务,要解决此问题,请参阅如何让使用 Amazon EC2 启动类型的 Amazon ECS 任务通过应用程序负载均衡器运行状况检查?
对于使用 Fargate 启动类型的任务,要解决此问题,请参阅如何对 Fargate 上 Amazon ECS 任务的运行状况检查失败问题进行故障排除?
容器运行状况检查失败
您可以在 HealthCheck API 或 Dockerfile 中定义运行状况检查。有关详细信息,请参阅 Docker 网站上的 HEALTHCHECK。
要对容器运行状况检查错误进行故障排除,请参阅如何对 Amazon ECS 任务的容器运行状况检查失败问题进行故障排除?
端口运行状况不佳
当运行状况不佳的 Amazon EC2 实例无法对指定端口上的运行状况检查做出响应时,将会出现包含 "Instance i-## port # is unhealthy" 的错误。
要对此问题进行故障排除,请执行以下操作:
- 验证附加到容器实例的安全组是否允许所需的流量。
- 运行以下命令,确认后端是否能够无延迟地响应:
**注意:**请将 container-port 替换为您的容器端口,并将 path 替换为运行状况检查路径。` curl -iv localhost:container-port/path` - 将响应超时值从默认的 30 秒增加。使用 ECS_CONTAINER_STOP_TIMEOUT 参数来更新 Amazon ECS 容器代理。
有关此错误消息的详细信息,请参阅网络负载均衡器的访问日志。
Amazon ECS 正在托管任务的底层基础设施上执行维护
当 Amazon ECS 对运行您的应用程序容器的 Fargate 服务器进行维护时,将会出现此错误。因此,您的 Amazon ECS 服务会暂时不可用。
有关详细信息,请参阅 Amazon ECS 上的 AWS Fargate 的任务停用和维护。
对于独立任务,请参阅如何对在 Fargate 上运行的任务的 Amazon ECS 任务停用通知执行操作?
已激活 Amazon ECS 服务扩缩事件
在 Amazon ECS 服务扩缩事件期间,任务会停止,原因是扩缩策略减少了在服务中运行的任务数量。然后,Amazon ECS 会停止任务以达到新指定的数量。当需求降低,Amazon ECS 需要较少的任务来处理工作负载时,通常会发生此操作。
要解决此问题,请执行以下操作:
- 为您的服务或任务的更改创建 CloudWatch 警报。
- 查看可能会影响您的任务的计划部署。
要防止任务因服务自动扩缩或部署引发的缩容事件而终止,请使用 Amazon ECS 任务缩容保护。
有关详细信息,请参阅如何查看和管理 Amazon ECS 服务的计划扩展操作?
用户停止的任务
要确定发起 StopTask API 调用的用户,请在 AWS CloudTrail 中查看 StopTask 以获取 userIdentity 信息。
ResourceInitializationError
有关不同的 ResourceInitialization 错误消息及解决步骤,请参阅对 Amazon ECS ResourceInitializationError 错误进行故障排除。
要对 "ResourceInitializationError: unable to pull secrets or registry auth" 错误进行故障排除,请参阅如何解决尝试为 ECS 任务拉取密钥或检索 Amazon ECR 身份验证信息时出现的 "ResourceInitializationError"?
要对 "ResourceInitializationError: failed to validate logger args" 错误进行故障排除,请参阅如何解决 Amazon ECS 中的 "ResourceInitializationError: failed to validate logger args" 错误?
SpotInterruptionError
有关 SpotInterruptionError 的详细信息,请参阅对 Amazon ECS SpotInterruption 错误进行故障排除。
要对此错误进行故障排除,请参阅如何处理 AWS Fargate Spot 任务中的 Spot 终止通知?
OutOfMemoryError
当由于容器内的进程使用的内存超过在任务定义中分配的内存而导致容器退出时,将会出现此错误。
要对此错误进行故障排除,请参阅如何对 Amazon ECS 中的 OutOfMemory 错误进行故障排除?
对任务停止时收到的错误消息进行故障排除
如果您在任务停止时收到错误消息,请根据错误执行以下故障排除操作。
未在集群中找到任何容器实例
要解决此问题,请启动容器实例。
要查看集群的实例,请完成以下步骤:
- 打开 Amazon ECS 控制台。
- 在导航窗格中,选择 Clusters(集群)。
- 选择您的集群。
- 选择 Infrastructure(基础设施)选项卡。
- 查看 Container instances(容器实例)部分。
如果没有容器实例,请参阅为什么我的 Amazon EC2 实例无法加入 Amazon ECS 集群?
InvalidParameterException
要解决此错误消息,请检查 TaskDefinition 中的参数是否存在以及是否具有正确的 Amazon 资源名称。验证任务角色和任务执行角色是否具有所需的权限。
您已达到可以并行运行的任务数量的限制
当您超出 Amazon ECS 服务配额时,将会出现此错误。要对此问题进行故障排除,请参阅如何解决 Amazon ECS 服务配额问题?
相关信息
- 语言
- 中文 (简体)

相关内容
AWS 官方已更新 1 年前
