AmazonDynamoDBv2 Запрос не распознает GSI

Моя реализация AmazonDynamoDBv2 AmazonDynamoDBAsync.queryAsync с QueryRequest возвращает код 400 "Элемент схемы ключа пропущенного условия запроса...", когда я запрашиваю GSI.

Я попытался использовать как имя DynamoDBAttribute ("myAttr"), так и фактическое имя индекса GSI ("idx_global_myAttr") и получить тот же код ошибки. Это работает против образа Docker "amazon/ динамод-локальный".

Я прочитал документы DynamoDB по GSI, но не могу понять, как нацелить вторичный индекс в этом запросе. Кажется, реагирует только на первичный индекс.

Описание таблицы: `

tableDescription: {
  attributeDefinitions: {
    {
      "attributeName": "myAttr",
      "attributeType": "S"
    },
    {
      "attributeName": "id",
      "attributeType": "S"
    }
  },
...
  "tableName": "myTable",
...
  "globalSecondaryIndexes": [
    {
      "indexName": "idx_global_ myAttr",
      "keyType": "HASH"
    }
  ]
...
}

`

QueryRequest:

`
var attributeValue = new AttributeValue().withS(value);
var expressionAttributeValueMap = Map.of(":v1", attributeValue);
var queryRequest = new QueryRequest("myTable")
  .withExpressionAttributeValues(expressionAttributeValeMap)
  .withKeyConditionExpression("myAttr = :v1");
`

1 ответ

РЕШИТЬ:

Укажите индекс для QueryRequest, добавив .withIndex("idx_global_myAttr")в построитель QueryRequest и используйте имя атрибута ("myAttr") в выражении KeyCondidtionExpression.

Другие вопросы по тегам