Terraform模块中使用for_each动态访问Map对象的语法问题
解决Terraform中通过each.key动态获取Map值的语法问题
你的问题出在动态访问Map键的语法错误,Terraform中不能在点符号链里用${each.key}这种插值语法,正确的方式是用方括号[]来包裹动态键。
修正后的模块代码
module "dynamo_create" { source = "../modules/dynamodb" for_each = toset(var.dynamo_without_index) read_capacity = var.accounts[terraform.workspace].dynamodb[each.key].read_capacity }
语法说明
- Terraform的Map访问规则:
- 静态键可以用点符号:比如
var.accounts.dev.dynamodb - 动态键(如
each.key这种变量)必须用方括号索引:dynamodb[each.key]
- 静态键可以用点符号:比如
- 修正后,当
each.key为employee时,表达式会正确定位到var.accounts.dev.dynamodb.employee.read_capacity,取值为2。
内容的提问来源于stack exchange,提问作者Nats
相关产品推荐
相关产品推荐

