docker - 如何在 Terraform 中声明和引用 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 destroy
作为开发周期的一部分运行时,Terraform 会删除这个存储库——或者当它有图像时会失败。这会很糟糕,因为terraform destroy
这样要么永远不会完成,要么我必须清除 ECR 存储库才能成功完成该命令。
如何最好地引用已经存在但我似乎不希望 Terraform 管理的 ECR 存储库,因为 Terraform 可能会破坏存在于 Terraform 之外的数据,即发布 CI 作业上传的 Docker 图像?
解决方案
如果您不希望 Terraform 管理它,请使用数据源。这使您可以像这样获取数据:
data "aws_ecr_repository" "example" {
name = "example"
}
然后引用如下网址:
${data.aws_ecr_repository.example.repository_url}
推荐阅读
- javascript - 使用 react-datepicker 仅在选定的 div 中选择和更新日期
- c# - 使用 C# 的 Azure REST Api 身份验证
- typescript - EmptyError:在角度保护中使用 takeWhile 时没有序列中的元素
- html - 在Angular 6中折叠/展开嵌套的div
- mdx - MDX 将集合除以度量
- solr - 使用 Solr 自定义预输入
- bash - 如何在 sed 中处理 UTF-8 表情符号?
- javascript - 如何在按钮按下时触发警报功能?
- php - PHP/SQL - 查询关系数据库的 ID,但能够使用 ORDER BY 在单独的数据库中查询这些 ID
- java - Docker 上的 SpringBoot AMPQ 无法始终连接到队列