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

Terraform调用DynamoDB模块报错:无法获取name和arn属性求助

Terraform报错:module.test_table不存在name和arn属性的排查方案

问题核心

你调用的dynamodb模块没有对外暴露name和arn这两个输出属性,导致外部代码无法直接引用module.test_table.name和module.test_table.arn,触发了Terraform的属性不存在错误。

排查与解决步骤

  1. 检查模块内部的输出定义
    打开你引用的git@github.com:test/terraform-modules.git//dynamodb模块目录,查看其中的outputs.tf文件:

    • 如果文件里没有name和arn的输出,需要在模块中添加以下内容(替换your_table_name为模块内实际的DynamoDB表资源名称):
      output "name" {
        value       = aws_dynamodb_table.your_table_name.name
        description = "DynamoDB表的名称"
      }
      
      output "arn" {
        value       = aws_dynamodb_table.your_table_name.arn
        description = "DynamoDB表的ARN"
      }
      
    • 如果模块已有输出,但属性名不是name/arn(比如叫table_name/table_arn),需要修改你代码中的引用,匹配模块实际输出的属性名。
  2. 锁定模块版本
    如果引用的是Git模块,默认拉取的是默认分支的最新代码,若分支近期变更移除了输出属性,需指定固定的tag或commit来引用稳定版本:

    module "test_table" {
      source = "git@github.com:test/terraform-modules.git//dynamodb?ref=v1.0.0" # 替换为实际的tag或commit hash
      # 其余参数保持不变
    }
    
  3. 临时替代方案(不推荐,破坏模块封装)
    如果暂时无法修改模块代码,可以通过数据源直接查询DynamoDB表的信息:

    data "aws_dynamodb_table" "test_table" {
      name     = "dynamo-${local.environment}" # 与你传给模块的name参数一致
      provider = aws.east
    }
    
    resource "aws_ssm_parameter" "table_name" {
      provider = aws.east
      name     = "${local.prefix}/new/table-name"
      type     = "String"
      value    = data.aws_dynamodb_table.test_table.name
    }
    
    resource "aws_ssm_parameter" "table_arn" {
      provider = aws.east
      name     = "${local.prefix}/new/table-arn"
      type     = "String"
      value    = data.aws_dynamodb_table.test_table.arn
    }
    

内容的提问来源于stack exchange,提问作者learner00

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:05:16