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

使用Pulumi配置DynamoDB时L类型报错:仅支持S/N/B类型

问题

尝试通过Pulumi配置DynamoDB表,查阅官方文档后以为配置正确,但收到数据类型无效的报错:

error: aws:dynamodb/table:Table resource 'table-name' has a problem: expected type to be one of ["S" "N" "B"], got L. Examine values at 'table-name.attributes'.

希望使用L(列表)数据类型存储数组值,这是在官方文档中看到的用法。请问出现该报错的原因是什么?是普遍问题还是流程中未知的规则导致?

相关代码:

const tableName = `table-name`;
const dynamoDbTable = new DynamoDBTable(tableName, {
  name: tableName,
  hashKey: "ID",
  attributes: [
    {
      name: "ID",
      type: "S",
    },
    ...
    {
      name: "RESULTS",
      type: "L"
    }
  ],
  ...
});
回答

报错原因是你混淆了DynamoDB表结构定义和数据存储的类型规则:

  • 表配置里的attributes字段仅用于声明主键(Hash/Rangekey)以及全局/本地二级索引的属性,这些属性只能是S(字符串)、N(数字)、B(二进制)三种基础标量类型——因为DynamoDB的主键和索引不支持列表(L)、映射(M)这类复杂类型。
  • L类型是写入数据时的属性值类型,DynamoDB是无Schema数据库,不需要在表结构里提前声明非主键的字段类型。直接在写入数据时把RESULTS字段设为L类型的数组即可,完全不需要在表的attributes数组里定义它。

解决方法:删除代码里attributes数组中RESULTS那一项,表结构只保留主键ID的定义,写入数据时正常存储数组值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:04:52