如何使用Terraform和CodeBuild部署/定义ECS(Fargate)实例

如何使用Terraform和CodeBuild部署/定义ECS(Fargate)实例,terraform,amazon-ecs,terraform-provider-aws,aws-codepipeline,aws-codebuild,Terraform,Amazon Ecs,Terraform Provider Aws,Aws Codepipeline,Aws Codebuild,我在ECS Fargate上运行了一个服务,它由CodePipeline/CodeBuild部署 地形: 定义ECS Fargate任务 定义代码管道 定义代码构建步骤 代码管道: 从GitHub获取更改 运行代码构建 使用代码构建构件部署到ECS 代码构建: 构建新的Docker映像 将其推至ECR回购 作为工件返回imagedefinitions.json 问题是,在提交到GitHub后,CodePipeline会部署一个新版本(这也会创建任务定义的新版本),这反过来会导致地形状

我在ECS Fargate上运行了一个服务,它由CodePipeline/CodeBuild部署

地形:

  • 定义ECS Fargate任务
  • 定义代码管道
  • 定义代码构建步骤
代码管道:

  • 从GitHub获取更改
  • 运行代码构建
  • 使用代码构建构件部署到ECS
代码构建:

  • 构建新的Docker映像
  • 将其推至ECR回购
  • 作为工件返回
    imagedefinitions.json
问题是,在提交到GitHub后,CodePipeline会部署一个新版本(这也会创建任务定义的新版本),这反过来会导致地形状态不同步(任务定义是
aws\u ecs\u service
的必需参数)

我认为有两种可能的解决办法:

  • 引入共享的地形状态,并使CodeBuild/CodePipeline写入其中。(对于简单的设置来说似乎过于复杂)
  • 使用
    ignore_changes
    忽略对任务定义的任何更改(我想这意味着在更新任务定义时需要注释掉,这在某些时候会被忘记)

有没有更好的解决办法?如果没有,哪种方法更可取?

此处还提供了关于如何处理任务定义的讨论:此处还提供了关于如何处理任务定义的讨论: