【问题标题】:DynamoDB BatchGetItemRequest without providing Primary KeyDynamoDB BatchGetItemRequest 不提供主键
【发布时间】:2022-01-18 15:48:15
【问题描述】:

AWS DynamoDB 表有:

  • 客户端(主键),
  • folder_location(非关键属性),
  • script_name(非键属性)

我想使用 BatchGetItemRequest 使用 Client 和 folder_location 属性检索记录。

但出现以下错误:

无法检索 items.com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException:提供的关键元素与架构不匹配(服务:AmazonDynamoDBv2;状态代码:400;错误代码:ValidationException;

有没有办法只处理BatchGetItemRequest

【问题讨论】:

  • 你能分享一些关于你的 BatchGetItemRequest 的细节吗?您可以通过指定主键来检索多个项目。
  • 您的表是否有分区和排序键(复合主键)或者客户端真的是唯一的分区/主键?
  • 客户端是唯一的主键。但我需要结合客户端和文件夹位置的详细信息。 BatchGetItemRequest 会发生这种情况吗?

标签: amazon-web-services amazon-dynamodb dynamodb-queries aws-dynamodb


【解决方案1】:

您可以改用QueryScan 操作并指定Filter Expression 以根据folder_location 限制结果。

要使用BatchGetItemRequest,您必须提供密钥,每个https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html

BatchGetItem 操作返回一个或多个项目的属性 从一张或多张桌子。您通过主键识别请求的项目。

Keys - 定义特定的主键属性值的数组 表中的项目。对于每个主键,您必须提供所有 关键属性。例如,使用简单的主键,您只需要 提供分区键值。对于复合键,您必须 提供分区键值和排序键值。

我建议您仔细检查您提供的键是否与表中定义的键匹配(名称和数据类型)。如果是这样,请尝试使用 FilterExpression 的其他选项之一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2021-08-26
    • 2021-04-03
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多