Aws lambda Lambda,排序键添加导致失败

Aws lambda Lambda,排序键添加导致失败,aws-lambda,Aws Lambda,我使用的查询DynamoDB具有以下Lambda函数: def lambda_handler(event, context): #query vars coursenameVar = event['query']['coursenameVar'] lessonVar = event['query']['lessonVar'] # make the connection to dynamodb dynamodb = boto3.resource('dyn

我使用的查询DynamoDB具有以下Lambda函数:

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
DB表有两个键:

Primary partition key   coursename (String)
Primary sort key    lesson (Number)
功能简单;它通过API网关从URL获取两个查询参数,并将其用作查询的KeyConditionExpression键,如下所示:

KeyConditionExpression=Key('coursename').eq(coursenameVar) & Key('lesson').eq(lessonVar))
问题是:

只要我在查询中只使用主分区键,一切都可以按需工作,如下所示:

KeyConditionExpression=Key('coursename').eq(coursenameVar)
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",

注意:我的排序键是数字的-我是否缺少某个类型声明?如有其他想法,我们将不胜感激

看起来您可能需要将lessonVar字段从字符串转换为整数,如下所示:

Key('lesson').eq(int(lessonVar)))

看起来您可能需要将lessonVar字段从字符串转换为整数,如下所示:

Key('lesson').eq(int(lessonVar)))

这消除了错误,但现在我的响应是空的,这使我相信现在没有传递参数。添加一些日志以查看参数值是什么。另外,在AWS DynamoDB控制台中尝试相同的查询以验证是否应该有响应。添加一些日志记录。您需要能够进行一些基本的调试,以解决此类问题。例如,log
lessonVar
value以及
int(lessonVar)
value来验证传递给查询的值是否正确。这消除了错误,但现在我的响应为空,这使我相信现在没有传递参数。添加一些日志以查看参数值是什么。另外,在AWS DynamoDB控制台中尝试相同的查询以验证是否应该有响应。添加一些日志记录。您需要能够进行一些基本的调试,以解决此类问题。例如,log
lessonVar
value以及
int(lessonVar)
value来验证传递给查询的值是否正确。