我正在构建Terraform配置以将一些容器部署到AWS ECS。显然,我必须将Docker镜像推送到ECR。我在ECR中创建了一个存储库并推送了图像。
现在我正在自动化。如果我这样声明aws_ecr_repository
:
data "aws_ecr_repository" "service" {
name = "myrepository"
}
然后Terraform将管理它。我最终可以用
之类的东西来引用它image = "${aws_ecr_repository.myrepository.repository_url}"
在构建ECS任务定义的过程中。
我认为Terraform将删除此存储库 - 或者当它有图像时失败 - 当我作为开发周期的一部分运行terraform destroy
时。这样做会很糟糕,因为terraform destroy
要么永远不会完成,要么我必须清除ECR存储库才能成功完成该命令。
我怎样才能最好地引用已存在的ECR存储库,但我似乎不希望Terraform管理,因为Terraform可能会破坏Terraform之外的数据,即发布CI作业上传的Docker图像?
答案 0 :(得分:3)
如果您不想让Terraform管理它,请使用data source。这样可以获得如下数据:
data "aws_ecr_repository" "example" {
name = "example"
}
然后引用网址:
${data.aws_ecr_repository.example.repository_url}