使用boto3.client.invoke调用lambda时,我收到一个error_message:“ Key error”

问题描述

调用实际上是API处理程序lambda的lambda时,出现Key错误。我使用以下语法调用该特定路由

invoke_payload = {
    'path': '/3d/terrain/{item_id}/{proxy+}','httpMethod': 'GET','headers': {'Accept':'application/octet-stream'},'multiValueHeaders': {},'querystringparameters': {'access_token':jwt_token},'multiValuequerystringparameters': None,'pathParameters': {'dataset_id': dataset_id,'proxy':proxy_path},'stageVariables': None,'requestContext': {
        'path': '/3d/terrain/{item_id}/{proxy+}','resourcePath': '/3d/terrain/{item_id}/{proxy+}',},'body': None,}


#syncronous call
response = client.invoke(FunctionName=arn,InvocationType='RequestResponse',Payload=json.dumps(invoke_payload))

result = json.loads(response.get('Payload').read())
return result

可能是什么。我传递了所有必需的pathParameters,我认为令牌应该不是问题。

当我在Postman中提出获取请求时,我得到以下信息:

 {
"errorMessage": "'item_id'","errorType": "KeyError","stackTrace": [
    "  File \"/var/task/chalice/app.py\",line 1040,in __call__\n    for name in route_entry.view_args}\n","  File \"/var/task/chalice/app.py\",in <dictcomp>\n    for name in route_entry.view_args}\n"
]

解决方法

在路径内,您正在使用参数item_id。但是您不能为其指定值:

'pathParameters': {'dataset_id': dataset_id,'proxy':proxy_path}

因此,在读取参数KeyError的值时会得到item_id

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...