在 AWS API Gateway 中,我有一个调用 lambda 函数的 GET 方法。
当我在 API Gateway 仪表板中测试该方法时,lambda 函数成功执行,但 API Gateway 并未将 context.success() 调用映射到 200 结果,尽管默认映射设置为 yes。
相反,我收到此错误:
Execution failed due to configuration error: No match for output mapping and no default output mapping configured
基本上我希望 API 网关能够识别成功的 lambda 执行,然后默认将其映射到 200 响应,但是 这不会发生。
有谁知道为什么这不起作用?
我在使用无服务器框架上传 api 时遇到同样的问题。您只需按照以下步骤即可解决我的问题。
1-导航到 aws api 网关
2-找到您的 api 并单击方法(Post、Get、Any 等)
3-点击方法响应
4- 添加具有 200 个响应的方法。
5-保存并测试
我遇到了类似的问题,通过添加方法响应 200 解决了问题
2. 在创建的 OPTIONS 方法下的 Method Response 部分添加 200 OK
3. 选择Option方法并从菜单中启用CORS
这对我来说效果很好。作为参考,我的 lambda 函数如下所示...
def lambda_handler(event, context:
# Get params
param1 = event['queryStringParameters']['param1']
param2 = event['queryStringParameters']['param2']
# Do some stuff with params to get body
body = some_fn(param1, param2)
# Return response object
response_object = {}
response_object['statusCode'] = 200
response_object['headers'] = {}
response_object['headers']['Content-Type']='application/json'
response_object['body'] = json.dumps(body)
return response_object
/
。例如,如果这是定义:
{
"openapi": "3.0.1",
"info": {
"title": "some api",
"version": "2021-04-23T23:59:37Z"
},
"servers": [
{
"url": "https://api-gw.domain.com"
}
],
"paths": {
"/api/{version}/intelligence/topic": {
"get": {
"parameters": [
{
"name": "username",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "version",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "x-api-key",
"in": "header",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "X-AWS-Cognito-Group-ID",
"in": "header",
"schema": {
"type": "string"
}
}
],
...
删除端点末尾的任何
/
:
/api/{version}/intelligence/topic
。在 swagger + api gw 扩展 json 的 apigateway-integration 部分也执行相同操作。确保您的角色
(而不是策略等)。 我将其添加到我的 Cloudformation 模板中然后成功: