如何在不损害其内容的情况下在Terraform中声明和引用ECR存储库?

时间:2018-06-05 17:14:43

标签: docker terraform aws-ecs terraform-provider-aws aws-ecr

我正在构建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图像?

1 个答案:

答案 0 :(得分:3)

如果您不想让Terraform管理它,请使用data source。这样可以获得如下数据:

data "aws_ecr_repository" "example" {
  name = "example"
}

然后引用网址:

${data.aws_ecr_repository.example.repository_url}