如何使用Terraform和CodeBuild部署/定义ECS(Fargate)实例
我在ECS Fargate上运行了一个服务,它由CodePipeline/CodeBuild部署 地形:如何使用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任务
- 定义代码管道
- 定义代码构建步骤
- 从GitHub获取更改
- 运行代码构建
- 使用代码构建构件部署到ECS
- 构建新的Docker映像
- 将其推至ECR回购
- 作为工件返回
imagedefinitions.json
aws\u ecs\u service
的必需参数)
我认为有两种可能的解决办法:
- 引入共享的地形状态,并使CodeBuild/CodePipeline写入其中。(对于简单的设置来说似乎过于复杂)
- 使用
忽略对任务定义的任何更改(我想这意味着在更新任务定义时需要注释掉,这在某些时候会被忘记)ignore_changes
有没有更好的解决办法?如果没有,哪种方法更可取?此处还提供了关于如何处理任务定义的讨论:此处还提供了关于如何处理任务定义的讨论: