【问题标题】:Updating Task Definitions in ECS在 ECS 中更新任务定义
【发布时间】:2017-06-17 04:53:49
【问题描述】:

我目前正在尝试通过 CodePipeline 自动化我的构建和部署过程。在我的代码在 codebuild 中完成构建后,我想通过 CodeBuild 通过 aws cli 更新我的任务定义并更新我的服务。

我在更新服务时遇到问题,因为我无法跟踪修订号。有没有办法让更新的服务知道使用最新的版本?我知道你可以指定一个 json,但我怎样才能操纵修订号,以便服务指向我的注册表中的正确图像?

【问题讨论】:

  • 您可以在任务定义中去掉修订号(和冒号)以强制您的服务使用最新的。

标签: docker amazon-ecs aws-codebuild amazon-ecr


【解决方案1】:

阅读一点亚马逊的api文档,并没有告诉你最后上传的图片是哪张。我建议在上传的过程中捕获版本以便能够在服务中设置它。

当您列出图像时,我将 api 的响应留给您。

响应语法:

{
   "imageIds": [ 
      { 
         "imageDigest": "string",
         "imageTag": "string"
      }
   ],
   "nextToken": "string"
}

一个可能的过程可以是:

  • 获取你的仓库的标签:

TAG=$(git describe --always)

  • 用这个标签构建镜像:

docker build . -t [acount].dkr.ecr.[zone].amazonaws.com/[app]:TAG

  • 推图:

docker push [acount].dkr.ecr.[zone].amazonaws.com/[app]:TAG

  • 用图片更新任务:

  • 使用任务更新服务

希望对你有帮助

【讨论】:

  • 非常感谢您的帮助,我最终使用了带有全局环境变量中提供的修订号的 CodeBuild,这使得跟踪每个图像变得非常容易!
  • 您可以使用此命令 aws ecs describe-task-definition --task-definition web-server | egrep "修订" | tr "/" " " | awk '{打印 $2}' | sed 's/"$//'
猜你喜欢
  • 1970-01-01
  • 2020-07-22
  • 1970-01-01
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 2020-03-21
  • 1970-01-01
  • 2019-12-15
相关资源
最近更新 更多