0

调用实际上是 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+}',
        'httpMethod': 'GET',
    },
    '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

会是什么呢。我通过了所有必需的路径参数,我认为令牌应该不是问题。

当我在 Postman 中发出 get 请求时,我得到以下信息:

 {
"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\", line 1040, in <dictcomp>\n    for name in route_entry.view_args}\n"
]
4

1 回答 1

0

在您的路径中,您正在使用参数item_id。但是你没有为它指定一个值:

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

因此,您会花一些KeyError时间阅读参数的值item_id

于 2020-10-25T15:17:19.543 回答