AWS ECS 运行最新的任务定义

时间:2021-01-09 17:28:44

标签: amazon-web-services amazon-ec2 amazon-ecs

我正在尝试运行从 GitHub 部署 (CD) 构建的最新任务定义映像。似乎在 AWS 上它创建了一个任务定义,例如“task-api:1”、“task-api:2”,我的集群是否仍在运行task-api: 1 即使有最新的任务,因为已经构建了新映像。到目前为止,我必须手动停止旧的并开始新的。我怎样才能让它自动化?

2 个答案:

答案 0 :(得分:1)

从你在评论中所说的来看:

<块引用>

我通过 AWS 控制台创建了我的任务,我只运行了自己的任务定义,没有服务和服务,通过 EC2 启动的任务定义不针对它们,所以在我的 Github 上的任务定义 JSON 文件中存储库,它们与任务的修订相关联(这可能是一个问题吗?)。

很难确切了解您是如何进行此设置的,最好返回并使用您所遵循的指南或 AWS 文档更好地了解您正在使用的服务。推送新的任务定义不会自动更新服务以使用新定义。

也就是说,我的猜测是您需要更新 ECS 中的服务以使用最新的任务定义。您可以通过多种方式做到这一点:

这可以自动化,但您需要设置一个流程来自动化。

我建议您阅读一些有关如何使用 CDK 自动部署和更新的指南。亚马逊为您提供了很好的入门指南https://docs.aws.amazon.com/cdk/latest/guide/ecs_example.html

答案 1 :(得分:1)

您必须将您的任务包装在一个服务中,并使用滚动更新进行自动化部署。

当滚动更新 (ECS) 部署类型用于您的服务时,在启动新服务部署时,Amazon ECS 服务调度程序会用新任务替换当前正在运行的任务。

阅读:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html

这是 DevOps,因此您需要一个 CI/CD 管道来为您进行滚动更新。查看 CodeBuild、CodeDeploy 和 CodePipeline(以及 CodeCommit,如果您将 AWS 中的代码存储库与 CI/CD 集成)

阅读:https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-ecs-ecr-codedeploy.html

这是一个复杂的话题,但最终会得到回报。