Terraform For表达式示例中的键与值如何识别及区分?
理解Terraform For表达式中的Map键与值
一、Map键与值的判定规则
在Terraform的Map(映射)结构里:
- **键(Key)**是每个元素的唯一标识,一般是字符串类型,用于快速定位对应的内容
- **值(Value)**是键关联的具体内容,可以是字符串、列表、对象等任意Terraform支持的类型
以你定义的local.projects为例:
- 顶级的
customer_api、partner_api、internal_api就是键 - 每个键对应的
{ region = "...", environments = [...] }对象就是值
二、示例For表达式的键值解析
看你写的For表达式代码:
australiasoutheast_region = [ for k, v in local.projects : k if v.region == "australiasoutheast" && contains(v.environments, "uat") ]
这里的k和v是遍历Map时自定义的变量名(可换成任意合法名称,比如project_id和project_config),作用是分别指代:
k:每次遍历拿到的local.projects顶级键(比如customer_api)v:对应键关联的对象值(比如k=customer_api时,v就是{ region = "australiasoutheast", environments = ["dev", "uat", "prd"] })
三、表达式的执行结果
这个For表达式的逻辑是筛选同时满足两个条件的键:
- 值对象的
region字段等于australiasoutheast - 值对象的
environments列表包含uat
遍历三个项目后,只有customer_api符合要求,所以local.australiasoutheast_region最终的结果是:
["customer_api"]
内容的提问来源于stack exchange,提问作者shameera2008
相关产品推荐
相关产品推荐

