You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS ECS更新服务报错:容器backend不存在,改名称后正常,是否为Bug?

Why does AWS ECS UpdateService throw "The container backend does not exist" when container name is "csharp"?

这不是AWS ECS的Bug,而是你的ECS服务与任务定义之间的容器名称关联不匹配导致的预期行为。

问题根源分析

当你首次创建ECS服务时,服务会和任务定义中的特定容器建立绑定关系——比如负载均衡目标组的容器端口映射、服务的健康检查配置等,这些配置都会依赖容器的名称。如果你的服务最初是基于**容器名称为backend**的任务定义创建的,之后你更新任务定义将容器名称改为csharp,但服务的底层配置依然在寻找名为backend的容器,此时调用update-service就会触发InvalidParameterException错误,因为服务找不到匹配的容器。

为什么修改容器名称为backend后能成功?

当你把skeleton.json中的容器名称改回backend时,任务定义里的容器名称和服务配置中预期的容器名称重新匹配,ECS服务就能正常识别并关联这个容器,部署流程自然可以顺利完成。

如果你想保留csharp作为容器名称的解决方法

如果不想改回原容器名称,你需要同步更新ECS服务中所有依赖容器名称的配置:

  • 若服务关联了负载均衡,需要更新目标组的容器名称配置,将其指向csharp
  • 若服务配置了容器级别的健康检查,需要将健康检查的目标容器名称改为csharp
  • 可以通过以下命令更新服务时同步调整这些配置(示例):
aws ecs update-service \
  --cluster "${PROJECT_NAME}" \
  --service "${PROJECT_NAME}" \
  --task-definition "${TASK_DEFINITION_ARN}" \
  --force-new-deployment \
  --deployment-configuration "maximumPercent=200,minimumHealthyPercent=100" \
  --desired-count ${DESIRED_COUNT} \
  --load-balancers targetGroupArn=arn:aws:elasticloadbalancing:...:targetgroup/...,containerName=csharp,containerPort=80

简单来说,ECS服务与任务定义的容器名称需要保持一致(或者服务配置明确指定要使用的新容器名称),否则就会出现找不到容器的错误。

内容的提问来源于stack exchange,提问作者Gianmarco Carrieri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 19:02:40