Amazon web services AWS使用更新的映像部署ECS

Amazon web services AWS使用更新的映像部署ECS,amazon-web-services,continuous-deployment,amazon-ecs,Amazon Web Services,Continuous Deployment,Amazon Ecs,似乎必须为每个服务更新提供新的完整任务定义。即使在大多数情况下,新部署只包括对底层docker映像之一的更新 虽然这可以理解为一个核心架构选择。这相当麻烦。由于任务定义的完整JSON规范非常复杂,是否有一个命令行选项可以使这一过程变得更简单 现在,开发人员需要提供复杂的脚本和部署编排,以在其CI/CD流程中实现这一相对常规的任务 我看到有人试图这样做。这些解决方案似乎并不适用于所有情况(例如,Fargate发射) 我知道,如果更新后的图像使用重复使用相同的标记,这个问题会变得更容易,但是在开发人

似乎必须为每个服务更新提供新的完整任务定义。即使在大多数情况下,新部署只包括对底层docker映像之一的更新

虽然这可以理解为一个核心架构选择。这相当麻烦。由于任务定义的完整JSON规范非常复杂,是否有一个命令行选项可以使这一过程变得更简单

现在,开发人员需要提供复杂的脚本和部署编排,以在其CI/CD流程中实现这一相对常规的任务

我看到有人试图这样做。这些解决方案似乎并不适用于所有情况(例如,Fargate发射)

我知道,如果更新后的图像使用重复使用相同的标记,这个问题会变得更容易,但是在开发人员文化中,重视再现性和可听性并不是一个合理的选择

除了利用AWS API和JSON操纵库之外,没有其他选择了吗


编辑看来这个项目做得相当不错

我找到了一些方法

  • 正如我在评论中提到的,在Github链接上使用ecs部署脚本

  • 通过awscli上的
    --generate cli skeleton
    选项创建任务定义。 填写除执行规则arn、任务角色arn图像之外的所有详细信息

  • 无法填写这些内容,因为它们将随提交或您要部署到的环境而更改

    将此框架提交到git,因此它是CI上工作区的一部分

    然后使用JSON遍历/解析库或实用程序,例如在构建CI时替换roleArn和image名称

    如果只想更新现有任务的标记:

    ecs deploy <CLUSTER NAME> <SERVICE NAME> --region <REGION NAME> --tag <NEW TAG>
    
    并在任务上使用相同的标记:

    ecs deploy default web-service --region us-east-1 --tag $(git rev-parse HEAD)
    
    ecs deploy default web-service --region us-east-1 --tag $(git rev-parse HEAD)