terraform - 使用变量中定义的键对本地地图进行 Terraform 插值
问题描述
使用变量中定义的键对本地地图进行 Terraform 插值
目标:在变量中定义预设尺寸标签,资源供应使用本地地图中的预设值。
var "define_size" {
description = "Select either small, medium, large"
default = "large"
}
locals {
small = {
volume_gb = 1
volume_count = 1
}
medium = {
volume_gb = 20
volume_count = 5
}
large = {
volume_gb = 500
volume_count = 10
}
}
resource "aws_ebs_volume" "example" {
availability_zone = var.availability_zone
size = ??????
}
尝试:
size = local.$var.define_size.volume_gb
. 明显的错误语法会导致“错误:无效字符”。和“错误:无效的属性名称”指的是 $ 字符。size = local.${var.define_size}.volume_gb
. 明显的错误语法会导致“错误:无效字符”。和“错误:无效的属性名称”指的是 $ 字符。size = "${local[var.define_size].volume_gb}"
. “错误:无效引用。对资源类型的引用必须后跟至少一个属性访问,指定资源名称。”size = tostring("local.${var.define_size}.volume_gb")
这正确呈现,但作为字符串而不是资源引用"local.large.volume_gb"
format("%#v",tostring("local.${var.define_size}.volume_gb"))
这部分正确呈现,但作为带有转义字符而不是资源的字符串"\"local.large.volume_gb\""
解决方案
如果您想要基于键的访问,您应该使locals
定义与键一起使用,例如map
:
locals {
sizes = {
small = {
volume_gb = 1
volume_count = 1
}
medium = {
volume_gb = 20
volume_count = 5
}
large = {
volume_gb = 500
volume_count = 10
}
}
}
然后使用local.sizes[var.define_size].volume_gb
推荐阅读
- java - 计算多行用户输入的单词和字符数
- css - 将背景的起始位置偏移 50%?
- c - 为什么在声明之前没有主体调用此函数,“2”到底在做什么?
- json - 如果键值等于 True,则打印所有 JSON 结果
- postgresql - 当postgress返回“重复键值违反唯一约束”时,如何在golang/gorm中获取重复的字段名称?
- javascript - 进入object1.object2,写一个变量而不是object 2
- c++ - 数组中的元素似乎在变化,数组的前半部分已排序,后半部分是随机的
- javascript - D3 V6 - 缩放和拖动功能
- react-native - React Native,TouchableOpacity 警报一无所获
- javascript - __proto__ 和原型的区别