在CLI中执行DynamoDB PutItem命令遇ValidationException报错求助
解决DynamoDB PutItem ValidationException报错
问题根源分析
你的报错信息明确指出缺少键"Team Name",但你提到分区键是City,这说明存在以下两种核心矛盾点:
- 你可能记错了表的实际主键配置,表的分区键其实是
Team Name(而非你以为的City) - 当前
put-item命令里完全未包含City字段——如果分区键真的是City,报错应该提示缺少City而非Team Name,这进一步验证表的主键实际为Team Name
修复方案
步骤1:确认表的真实主键配置
先通过CLI命令查看表的结构,明确实际主键信息:
aws dynamodb describe-table --table-name NBATeams --region us-east-1
在返回结果的KeySchema模块中,HASH类型的字段就是分区键,核对其名称是否与你的认知一致。
步骤2:根据真实主键修正PutItem命令
- 如果确认分区键是
Team Name:修改item的键名,注意空格需正确匹配表定义:
aws dynamodb put-item \ --table-name NBATeams \ --item '{"Team Name": {"S": "Phoenix Suns"}, "Title": {"S": "Suns"}}' \ --region us-east-1
- 如果确认分区键是
City:在item中强制添加City字段(必须包含主键字段才能写入):
aws dynamodb put-item \ --table-name NBATeams \ --item '{"City": {"S": "Phoenix"}, "Team": {"S": "Suns"}, "Title": {"S": "Suns"}}' \ --region us-east-1
额外注意:避免JSON转义异常
你原命令中使用"转义双引号,在部分终端环境下可能导致解析错误,建议直接用单引号包裹外层JSON,内层用双引号(无需转义),降低解析异常概率。
核心规则提醒
DynamoDB写入item时,必须包含表的所有主键字段(分区键+排序键,若存在),且键名需与表定义严格一致(区分大小写、空格)。
内容的提问来源于stack exchange,提问作者Kyle M
相关产品推荐
相关产品推荐

