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

AWS Fargate重启任务未拉取ECR最新镜像问题排查

Fargate重启任务未拉取latest镜像的排查与临时解决办法

我长期使用latest标签向ECR推送镜像,此前停止Fargate任务后自动重启都会拉取最新镜像,但近期出现异常——重启后的任务仍使用旧镜像。查阅AWS官方文档得知:

每个Fargate任务都运行在专属的一次性单租户实例上。在Fargate上运行Linux容器时,实例不会缓存容器镜像或镜像层。因此,任务中定义的每个容器镜像都需要为每个Fargate任务从容器镜像仓库完整拉取。

但文档并未提及任务层面是否存在缓存逻辑。如果删除ECR中的旧镜像,会触发CannotPullContainerError错误。目前已知的临时解决方案包括:修改任务定义,用镜像SHA值替换latest标签;或者执行「强制部署」。不过我希望先排查自身操作是否存在问题。

排查步骤

  • 核对任务定义的镜像配置:确认任务定义里的镜像URI确实是[你的账号ID].dkr.ecr.[区域].amazonaws.com/[仓库名]:latest,没有误写成固定的镜像SHA或其他版本标签。
  • 验证镜像推送结果:使用AWS CLI命令aws ecr describe-images --repository-name [你的仓库名] --image-ids image-tag=latest,查看ECR中latest标签对应的镜像SHA,和本地推送的镜像SHA是否一致,排除推送失败或推错仓库的可能。
  • 检查ECS服务部署配置:如果任务由ECS服务管理,查看服务的部署策略——是否「最小健康百分比」设置过高,导致滚动部署时复用了旧任务实例?或者服务的启动类型、网络配置是否有变更,影响了镜像拉取逻辑?
  • 确认任务重启的触发逻辑:如果是手动停止单个任务,要确认ECS服务的期望任务数是否正常,重启的任务是否是服务基于最新任务定义启动的。如果服务没有触发新部署,可能还是沿用旧的任务定义配置。
  • 检查任务执行角色权限:确认Fargate任务的执行角色是否保有拉取ECR镜像的权限,避免因IAM策略变更导致拉取最新镜像失败,进而出现异常 fallback 情况。

临时解决方案

  • 改用镜像SHA值:在任务定义中直接指定镜像的完整SHA(例如[仓库URI]@sha256:xxxxxx),确保每次都拉取确定的镜像版本。
  • 执行强制部署:在ECS服务控制台选择「强制部署」,强制服务使用最新任务定义启动新任务,替换旧任务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 15:52:43