DynamoDB GSI条目数显示为0,serverless待办应用问题求助
问题诊断与解决思路
以下是几个可能导致GSI条目数为0的核心排查方向:
1. GSI属性定义与写入数据不匹配
- 核对GSI创建时的主键属性名:确保GSI的分区键是
gsi1pk、排序键是status,DynamoDB属性名区分大小写,不能出现GSI1PK或Status这类大小写错误。 - 检查GSI排序键的类型:确认GSI的
status被定义为字符串类型(S),和你写入的status: { S: todo.status }类型完全一致。如果GSI排序键被设为其他类型(比如数字N),字符串类型的status值不会被同步到GSI中。
2. GSI未完成初始化
- DynamoDB创建GSI需要后台部署时间,即使是空表也可能存在短暂延迟。等待10-15分钟后再查看GSI条目数,同时在控制台GSI详情页确认状态为ACTIVE,如果是
CREATING或UPDATING状态,说明还未就绪。
3. 写入数据的字段异常
- 直接查看DynamoDB表中的已插入条目:确认
gsi1pk值为emma1#todo、status值为pending,两个字段都存在且值正确。 - 排查代码逻辑:确认
todo.status没有为空值,gsi1pk的拼接逻辑(${todo.userId}#todo)没有出错。
4. GSI投影配置问题
- 检查GSI的投影设置:确保是
ALL、KEYS_ONLY,或是包含gsi1pk和status的INCLUDE模式。虽然GSI主键属性会被强制投影,但极端情况下的错误配置可能导致同步失败。
内容的提问来源于stack exchange,提问作者Michael H
相关产品推荐
相关产品推荐

