我正在构建一个 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 destroy
作为开发周期的一部分运行时,Terraform 会删除这个存储库——或者当它有图像时会失败。这会很糟糕,因为terraform destroy
这样要么永远不会完成,要么我必须清除 ECR 存储库才能成功完成该命令。
如何最好地引用已经存在但我似乎不希望 Terraform 管理的 ECR 存储库,因为 Terraform 可能会破坏存在于 Terraform 之外的数据,即发布 CI 作业上传的 Docker 图像?