如何解决AWS ECS 运行最新的任务定义
我正在尝试运行从 GitHub 部署 (CD) 构建的最新任务定义映像。似乎在 AWS 上它创建了一个任务定义,例如“task-api:1”、“task-api:2”,我的集群是否仍在运行task-api: 1 即使有最新的任务,因为已经构建了新映像。到目前为止,我必须手动停止旧的并开始新的。我怎样才能让它自动化?
解决方法
从你在评论中所说的来看:
我通过 AWS 控制台创建了我的任务,我只运行了自己的任务定义,没有服务和服务,通过 EC2 启动的任务定义不针对它们,所以在我的 Github 上的任务定义 JSON 文件中存储库,它们与任务的修订相关联(这可能是一个问题吗?)。
很难确切了解您是如何进行此设置的,最好返回并使用您所遵循的指南或 AWS 文档更好地了解您正在使用的服务。推送新的任务定义不会自动更新服务以使用新定义。
也就是说,我的猜测是您需要更新 ECS 中的服务以使用最新的任务定义。您可以通过多种方式做到这一点:
- 通过控制台 (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-service-console-v2.html)。
- 通过 CLI (https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html)。
- 通过 IaC,如 CDK (https://docs.aws.amazon.com/cdk/api/latest/docs/aws-ecs-readme.html)。
这可以自动化,但您需要设置一个流程来自动化。
我建议您阅读一些有关如何使用 CDK 自动部署和更新的指南。亚马逊为您提供了很好的入门指南https://docs.aws.amazon.com/cdk/latest/guide/ecs_example.html。
,您必须将您的任务包装在一个服务中,并使用滚动更新进行自动化部署。
当滚动更新 (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
这是一个复杂的话题,但最终会得到回报。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。