Terraform中lookup函数的作用是什么?如何正确使用?
Terraform lookup 函数详解
核心作用与适用类型
lookup 是 Terraform 内置的取值函数,仅支持对 map 类型的数据进行查询,不支持 list 类型。
它的核心作用是从指定 map 中根据输入的 key 获取对应的 value,支持配置兜底默认值,无需提前判断 key 是否存在,避免 key 不存在时直接抛出执行错误。
基础语法
lookup(<目标map>, <要查询的key>, <可选: 默认值>)
参数说明:
- 第一个参数:需要查询的 map 对象
- 第二个参数:目标查询 key 的名称
- 第三个参数:可选配置,当查询的 key 不存在于 map 中时,会返回该值;如果不填该参数,查询不存在的 key 时会直接报错终止执行
实际使用示例
先定义一个 map 类型的变量用于演示:
variable "env_instance_type" { type = map(string) default = { prod = "c5.large" test = "t3.micro" } }
- 查询存在的 key
# 运行结果返回 "c5.large" lookup(var.env_instance_type, "prod")
- 查询不存在的 key,配置默认值
# map 中不存在 dev 这个key,运行结果返回默认值 "t2.micro" lookup(var.env_instance_type, "dev", "t2.micro")
- 查询不存在的 key,未配置默认值
# 直接抛出错误,提示 key "dev" does not exist in map lookup(var.env_instance_type, "dev")
补充说明:Terraform 0.12 及更高版本支持方括号语法
var.env_instance_type["prod"]直接取值,但该语法不支持默认值配置,key 不存在时会直接报错,适合确认 key 一定存在的场景;lookup 更适合存在可选 key、需要兜底默认值的场景。
内容的提问来源于stack exchange,提问作者ray8888
相关产品推荐
相关产品推荐

