如何在Terraform locals中实例化object类型变量并传递给模块?
Terraform Object类型变量初始化及错误修复
核心问题:拼写失误
报错的根源是你在模块代码里把read_capacity和write_capacity拼写成了read_capactity和write_capactity(少了一个字母a),和object的初始化方式无关。
你的Object初始化方式是正确的
Terraform中,符合object结构的Map会自动被识别为对应的object类型,你在locals里定义的table_dev_configs完全匹配模块变量table的object结构,写法没问题。
修正后的模块代码
把模块里的拼写错误修正即可:
resource "aws_dynamodb_table" "my_table" { name = var.table.name read_capacity = var.table.read_capacity # 修正拼写错误 write_capacity = var.table.write_capacity # 修正拼写错误 hash_key = "id" }
可选:显式声明Local变量类型(非必需)
如果需要明确指定local变量为object类型(Terraform会自动推断,所以这一步不是必须的),可以这样写:
locals { table_dev_configs = object({ name = string read_capacity = number write_capacity = number arn = string policy_name = string }){ arn = "arn:aws:dynamodb:us-east-2:123456789:table/my-table-dev" name = "some_name" policy_name = "some_policy" read_capacity = 20 write_capacity = 20 } }
内容的提问来源于stack exchange,提问作者Hexy
相关产品推荐
相关产品推荐

