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

Terraform读取DynamoDB复合主键数据报错,请求协助

问题分析与解决

错误原因

  1. 数据源选型错误:data "aws_dynamodb_table_item"仅用于读取单个完整主键匹配的DynamoDB条目,你的表采用「分区键+排序键」的复合主键结构,使用该数据源时必须同时提供两个键的完整值才能定位唯一条目,仅指定分区键会触发键结构不匹配的报错。
  2. 需求不匹配:你需要获取同一分区键下的所有条目,这属于DynamoDB的Query批量查询场景,而aws_dynamodb_table_item不支持这类批量查询操作。

解决方法

改用支持Query操作的aws_dynamodb_query数据源,该数据源可以查询同一分区键下的所有条目,具体配置如下:

1. 配置Query数据源

data "aws_dynamodb_query" "cost_centers" {
  table_name = aws_dynamodb_table.poc.name
  # 指定查询条件:匹配分区键tag_key等于CostCenter
  key_condition_expression = "tag_key = :tag_key_val"
  # 为条件占位符赋值,遵循DynamoDB的AttributeValue格式
  expression_attribute_values = <<VALUES
{
  ":tag_key_val": {
    "S": "CostCenter"
  }
}
VALUES
}

2. 提取查询结果

可以通过输出变量获取所有成本中心编号,示例:

output "all_cost_center_numbers" {
  value = [for item in data.aws_dynamodb_query.cost_centers.items : item.tag_value.S]
}

执行terraform apply后,即可得到所有分区键为CostCenter的tag_value值列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:04:54