问题描述
当调用实际上是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