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

开启ECS软件版本一致性后,AWS任务定义如何实现镜像热切换?

恢复ECS「软件版本一致性」前的镜像拉取行为

针对你的Dev环境需求,完全可以恢复到之前的ECS镜像拉取行为,不用每次更新镜像都修改任务定义,具体方法如下:

一、CloudFormation模板层面永久配置

在Dev环境的ECS服务CloudFormation资源中,添加ResolveImageDigests属性并设置为false。这个配置会让ECS不再将镜像标签解析为固定的镜像摘要(digest),而是每次启动新任务时重新拉取标签对应的最新镜像,和「软件版本一致性」更新前的行为完全一致。

示例模板片段:

Resources:
  DevECSService:
    Type: AWS::ECS::Service
    Properties:
      Cluster: !Ref DevECSCluster
      ServiceName: dev-my-service
      TaskDefinition: !Ref DevTaskDefinition
      # 开启旧版镜像拉取行为
      ResolveImageDigests: false
      # 其他原有配置(比如容量提供者、部署配置等)
      CapacityProviderStrategy:
        - CapacityProvider: FARGATE
          Weight: 1
      DeploymentConfiguration:
        MaximumPercent: 200
        MinimumHealthyPercent: 100

更新CloudFormation栈后,后续只要你更新ECR中latest或dev标签的镜像,重启服务或者触发任务重建时,ECS就会自动拉取最新的镜像,无需修改任务定义。

二、临时手动调整(用于快速测试)

如果只是临时需要验证镜像更新,不想修改CloudFormation模板,可以用AWS CLI执行服务更新命令,强制开启旧版行为并触发新部署:

aws ecs update-service \
  --cluster <你的Dev集群名> \
  --service <你的Dev服务名> \
  --resolve-image-digests false \
  --force-new-deployment

注意事项

  • 仅建议在Dev环境使用该配置,Prod和Staging环境保持默认的ResolveImageDigests=true,确保每次部署的镜像版本固定,符合「软件版本一致性」的要求,避免意外引入未验证的镜像。
  • 设置ResolveImageDigests=false后,ECS在服务扩容、任务重启、部署时都会重新拉取镜像标签对应的最新版本,和你之前的开发流程完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:22:44