Динамодб точная причина для кода ответа 400 - PullRequest
0 голосов
/ 08 января 2020

Есть ли способ узнать точную причину для кода ответа 400 от DynamoDB? Возникли проблемы при экспериментировании с DynamoDB. Мой первичный ключ - Topi c, а PostedTimeStamp - это ключ сортировки, и я создал LSI для категории. Ниже приведена команда для создания таблицы.

aws dynamodb create-table --debug --table-name Topics  --attribute-definitions AttributeName=Topic,AttributeType=S AttributeName=PostedTimeStamp,AttributeType=S AttributeName=Category,AttributeType=S AttributeName=SubCategory,AttributeType=S --key-schema AttributeName=Topic,KeyType=HASH AttributeName=PostedTimeStamp,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 --local-secondary-indexes IndexName=TopicCategory,KeySchema=["{AttributeName=Topic, KeyType=HASH}","{AttributeName=Category, KeyType=RANGE}"],Projection="{ProjectionType=KEYS_ONLY}" IndexName=TopicSubCategory,KeySchema=["{AttributeName=Topic,KeyType=HASH }","{AttributeName=SubCategory,KeyType=RANGE}"],Projection="{ProjectionType=KEYS_ONLY"}

Ниже приводится запрос, который я пытаюсь выполнить.

  {
    "TableName": "Topics",
    "IndexName": "TopicCategory",
    "ConsistentRead": false,
    "KeyConditionExpression": "Topic = :v1 and Category = :v2",

    "ExpressionAttributeValues": {
        ":v1": {
            "S": "DyanmoDB"
        }
        ":v2": {
            "S": "LSI"
        }
    }
}

Получение следующего ответа ... что характерно для ряда ошибок ... таких как InvalidAction, InvalidParameterCombination, InvalidQueryParameter, et c.

"Received response. Status: 400, Integration latency: 6 ms

1 Ответ

0 голосов
/ 11 января 2020

Разделяйте ExpressionAttributeValues запятой, чтобы решить вашу проблему.

  {
    "TableName": "Topics",
    "IndexName": "TopicCategory",
    "ConsistentRead": false,
    "KeyConditionExpression": "Topic = :v1 and Category = :v2",

    "ExpressionAttributeValues": {
        ":v1": {
            "S": "DyanmoDB"
        }

        ,

        ":v2": {
            "S": "LSI"
        }
    }
}

Я предлагаю вам сначала протестировать ваш код Mapping Templates в локальном DynamodB, он даст вам больше объяснений ошибок.

...