我已经设置了要部署到 ECS (EC2) 的一项服务。我已通过 terraform 配置了服务和任务定义,然后为了部署,我使用了 Github 操作,似乎我需要再次定义任务定义。
似乎两者都是必需的,什么是正确的工作流程,以便我可以删除重复的任务定义?
还有一个问题是,一旦这个任务定义通过 Github 操作部署,图像就会被更新,而 Terraform 想要恢复。
答案1
这是一个旧的,但可供将来参考。
第一个是为了最初启动服务所必需的(在创建预配置集群时)。
你可以考虑第二个作为更新你的服务在 GitHub Actions 部署期间,使用新版本映像覆盖初始版本(因为您可以更改映像 ID 以及任务定义中配置选项中的所有内容)。
对于 Terraform,您可以添加生命周期规则以忽略对预配置 image_id 的任何更改,如下所示aws_ecs_service:
lifecycle {
ignore_changes = [task_definiton]
}
有相当老的问题在 terraform-provider-aws 项目中,关于它如何处理任务定义更改。请查看此评论为您的用例提供可能的解决方法(评论作者关于该主题的博客文章)。