У меня есть следующая лямбда-функция, которую я использую по запросу DynamoDB:
def lambda_handler(event, context):
#query vars
coursenameVar = event['query']['coursenameVar']
lessonVar = event['query']['lessonVar']
# make the connection to dynamodb
dynamodb = boto3.resource('dynamodb')
# select the table
table = dynamodb.Table("testai")
# query and response
response = table.query(
KeyConditionExpression=Key('coursename').eq(coursenameVar) & Key('lesson').eq(lessonVar))
data = response['Items']
return data
В таблице БД есть два ключа:
Primary partition key coursename (String)
Primary sort key lesson (Number)
Функция проста; он берет два параметра запроса из URL через API-шлюз и использует их в качестве ключей KeyConditionExpression для запроса следующим образом:
KeyConditionExpression=Key('coursename').eq(coursenameVar) & Key('lesson').eq(lessonVar))
Проблема:
Все работает, пока я В запросе используется только первичный ключ раздела:
KeyConditionExpression=Key('coursename').eq(coursenameVar)
Но как только я добавляю ключ сортировки следующим образом:
KeyConditionExpression=Key('coursename').eq(coursenameVar) & Key('lesson').eq(lessonVar))
Я получаю следующую ошибку:
"errorMessage": "An error occurred (ValidationException) when calling the Query operation: One or more parameter values were invalid: Condition parameter type does not match schema type",
"errorType": "ClientError",
Примечание: мой ключ сортировки - цифра c - я где-то пропустил объявление типа? Любые другие мысли приветствуются.