Я пытаюсь изменить пример лямбда-микросервиса, чтобы отправить запрос GET в Dynamodb из шлюза aws-api.Я получил пример для работы, но он выполняет сканирование таблицы, а не запрос.
Запрос не удается установить выражение KeyConditionExx со следующим сообщением: «Лямбда-выполнение не выполнено со статусом 200 из-за ошибки функции клиента:Название «Ключ» не определено ».
Соответствующий питон находится здесь:
operations = {
'GET': lambda dynamo, x: dynamo.query(**x),
}
dynamodb = boto3.resource('dynamodb')
params = {
'KeyConditionExpression': Key('flight').eq("2002")
}
table = dynamodb.Table('Test')
response = table.query(params)
Эта форма запроса та же, что и в этой публикации:
[Working query][1]
, и я получил ту же ошибку выше.
В качестве альтернативы, я получаю другую ошибку, когда пытаюсь установить KeyConditions: «Сбой выполнения лямбды со статусом 200 из-за ошибки функции клиента: Произошла ошибка (ValidationException) при вызове операции запроса: Либо KeyConditionsили параметр KeyConditionExpression должен быть указан в запросе .. "
Здесь находится соответствующий питон:
params = {
'TableName': 'Test',
'KeyConditions': {
"flight": {
'ComparisonOperator': "EQ",
'AttributeValueList': [{'S': '2002'}]
}
}
}
Моя таблица (Test) имеет индекс GSI, индекс полета, с полетом какключ раздела и элементы (все типы строк) - это просто:
В другом сообщении сказано: «KeyConditionExpression не поддерживается с nodejs SDK."Есть ли схожие проблемы с моим использованием Python 3.7?
Также я не использую локальный DynamoDB.(Я хватаюсь за соломинку за подсказками.)
Как бы ни был прост весь этот контрольный пример, я, должно быть, упускаю что-то ужасно простое, но я боролся в течение нескольких дней и прочитал десятки постов, чтобы найти это.
Может ли кто-нибудь помочь реализовать любой из этих способов определения цели запроса?