amazon-web-services - 如何在 Terraform 中输出一种类型的所有资源?
问题描述
aws_ecr_repositories
我在 Terraform 代码中定义了一堆:
resource "aws_ecr_repository" "nginx_images" {
name = "nginx-test"
}
resource "aws_ecr_repository" "oracle_images" {
name = "oracle-test"
}
我希望能够有一个可以将所有aws_ecr_repository
资源列出到一个输出中的输出。这是我尝试过的:
output "ecr_repository_urls" {
value = "[${aws_ecr_repository.*.repository_url}]"
}
这不起作用,因为 Terraform 似乎不允许在资源名称上使用通配符。有可能有这样的输出吗?我目前的解决方案是只列出定义的每个资源的输出。
解决方案
Terraform 的 splat 语法用于使用count
元参数跟踪资源创建的每一件事。
如果您希望能够获取所有存储库 URL,您可以拥有一个aws_ecr_repository
资源并使用count
meta 参数,如下所示:
variable "images" {
default = [
"nginx-test",
"oracle-test",
]
}
resource "aws_ecr_repository" "images" {
count = "${length(var.images)}"
name = "${var.images[count.index]}"
}
output "ecr_repository_urls" {
value = "[${aws_ecr_repository.images.*.repository_url}]"
}
推荐阅读
- c++ - C++ 与 MATLAB 中的 Sin 和 cos 函数
- jenkins - 具有多个命名空间的 Kubernetes 集群上下文
- r - 从多个数据帧列表中提取特定列并将它们组合成r中的新数据帧
- c# - 如何在 3d 模型上移动轴
- python - Python 在主代码中调用本地函数会破坏测试中的导入?
- javascript - 通过 chrome 控制台从页面保存/复制到剪贴板图像
- angular - json-server在发布请求后出现错误
- c# - 有没有办法检查调用者是否正在丢弃 out 参数?
- c# - 调用 this() 构造函数和不同的 base() 构造函数
- c# - UWP 使用 JSON 数据创建列表