免费工具

DynamoDB 保留字检查器

粘贴你的属性名,查看哪些与 DynamoDB 的保留字冲突,并复制一份能安全为它们设置别名的 ExpressionAttributeNames 映射。

属性名

每行输入一个属性名(逗号和空格也可以)。每个名称都会不区分大小写地与完整的 DynamoDB 保留字列表进行核对。

6 个名称中有 4 个是保留字,必须使用别名。
  • name#name保留字
  • status#status保留字
  • timestamp#timestamp保留字
  • userId可用
  • count#count保留字
  • email可用
ExpressionAttributeNames
{
  "#name": "name",
  "#status": "status",
  "#timestamp": "timestamp",
  "#count": "count"
}

在表达式中通过每个保留名称的 # 别名来引用它,并将此映射作为 ExpressionAttributeNames 传入。

为什么保留字很重要

DynamoDB 维护着一长串保留关键字,它不接受把这些词作为表达式内裸露的属性名。日常名称 — name、status、size、count、timestamp、year — 都在其中。直接引用其中之一,请求就会以 ValidationException 失败,而且通常是在运行时而非代码评审时。

修复方法是使用表达式属性名:一个代替真实名称的 # 占位符,搭配一份 ExpressionAttributeNames 映射。本检查器会不区分大小写地将你的名称与完整列表匹配,并自动为其中的保留字构建该映射,因此你可以直接把它粘贴到 GetItem、Query、Update 或 Delete 请求中。

设置别名是一个能避免一整类错误的小习惯 — 表达式属性名与值 深入讲解了这些占位符,而 Expression Builder 会在你构建时为你为每个名称设置别名。

常见问题

什么是 DynamoDB 保留字?

DynamoDB 保留了一大批关键字 — 大约 573 个 — 它们不能在表达式内直接用作属性名。像 name、status、timestamp、size 和 count 这样的名称都是保留字。如果你在投影、筛选、条件或更新表达式中直接引用其中之一,DynamoDB 会返回一个带有 “Attribute name is a reserved keyword” 消息的 ValidationException。

如何将保留字用作属性名?

用表达式属性名为它设置别名 — 一个以 # 开头并映射到真实名称的占位符。例如,在表达式中引用 #name,并传入 { "#name": "name" } 作为 ExpressionAttributeNames。本工具会为你输入的每个保留名称生成该映射,可直接粘贴到你的请求中。

保留字列表区分大小写吗?

不区分。DynamoDB 的保留字列表不区分大小写,因此 Name、name 和 NAME 都会被视为保留字 NAME。本检查器会不区分大小写地匹配,与 DynamoDB 完全一致。

我必须为每个属性名都设置别名吗?

只有保留字才需要别名,但许多团队习惯性地为每个名称都设置别名,这样就永远不会遇到该错误,表达式的读写也保持一致。为非保留名称设置别名始终是安全的。本工具会准确标出你的哪些名称是保留字,以便你自行决定。

无需控制台即可使用 DynamoDB

DynoTable 是面向 DynamoDB 的快速桌面客户端 —— 浏览表、运行 SQL 风格的查询,并在本地编辑项。