【问题标题】:DynamoDB ExclusiveStartKey error The provided starting key is invalidDynamoDB ExclusiveStartKey error 提供的启动键无效
【发布时间】:2022-01-24 18:15:38
【问题描述】:

你好,伙计们,我从 dynamodb 开始,当我想使用 ExclusiveStartKey 时我有一些误解。目前我正在使用 GSI,这就是我如何获得查询的参数

{
   TableName: 'Search',
   IndexName: 'GSI1',
   ExclusiveStartKey: {
     GSI1PK: { S: '8a2bb021182ffff' },
     GSI1SK: { S: '5#182854f0-c4ea-39c7-a3f5-4b0b0d947cea' }
   },
   KeyConditionExpression: 'GSI1PK = :gsiHk AND begins_with(GSI1SK, :entityType)',
   ExpressionAttributeValues: { ':gsiHk': { S: '8a2bb021182ffff' }, ':entityType': {S:'5'}},
  Limit: 500
 }

这会返回一个错误

ValidationException: The provided starting key is invalid

这是正确的使用方法还是我该如何解决??

【问题讨论】:

  • 没有ExclusiveStartKey可以执行查询吗?

标签: dynamodb-queries aws-sdk-js amazon-dynamodb


【解决方案1】:

显式设置ExclusiveStartKey 并不常见

来自docs

ExclusiveStartKey 这个第一项的主键 操作将评估。使用返回的值 上一个操作中的 LastEvaluatedKey。

所以 Query 的正常使用,因为它的 1MB 读取限制是在一个循环中,如下面的伪代码所示

do 
  result=Query(parms);
  //process results
  parms.ExclusiveStartKey = results.LastEvaluatedKey;
until results.LastEvaluatedKey is null; 

我认为您没有理由不能明确设置它,但我没有看到任何地方都记录了该格式。您必须检查 LastEvaluatedKey 中返回的内容

【讨论】:

  • 谢谢,解决了我的问题,我只使用 LastEvaluatedKey 的 2 个参数明确设置了 ExclusiveStartKey。我不知道你需要使用完整的对象
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 2018-05-18
  • 1970-01-01
  • 2021-01-18
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 2020-12-27
相关资源
最近更新 更多