Col*_*ean 1 docker terraform aws-ecs aws-ecr terraform-provider-aws
我正在构建 Terraform 配置以将一些容器部署到 AWS ECS。显然,我必须将 Docker 镜像推送到 ECR。我在 ECR 中创建了一个存储库并推送了图像。
现在我正在自动化。如果我这样声明aws_ecr_repository:
data "aws_ecr_repository" "service" {
name = "myrepository"
}
Run Code Online (Sandbox Code Playgroud)
然后 Terraform 将管理它。我最终可以用类似的东西来引用它
image = "${aws_ecr_repository.myrepository.repository_url}"
Run Code Online (Sandbox Code Playgroud)
在构建 ECS 任务定义的过程中。
我的印象是,当我terraform destroy作为开发周期的一部分运行时,Terraform 会删除这个存储库——或者当它有图像时会失败。这会很糟糕,因为terraform destroy要么永远不会完成,要么我必须清除 ECR 存储库才能成功完成该命令。
如何最好地引用已经存在但我似乎不希望 Terraform 管理的 ECR 存储库,因为 Terraform 可能会破坏位于 Terraform 之外的数据,即发布 CI 作业上传的 Docker 图像?
如果您不想让 Terraform 管理它,请使用数据源。这可以让你得到这样的数据:
data "aws_ecr_repository" "example" {
name = "example"
}
Run Code Online (Sandbox Code Playgroud)
然后引用如下网址:
${data.aws_ecr_repository.example.repository_url}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2600 次 |
| 最近记录: |