You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 01:00:57