API 网关响应未显示 Lambda 错误响应

问题描述 投票:0回答:1

我有以下 lambda 异常片段:

    except Exception as e:
        response['statusCode'] = 500
        response['body'] = "Fatal Error"
        
        raise Exception(json.dumps(response))

但是我从 API GW 得到的回复是:

{
    "code": "...",
    "description": "...",
    "log_trace": "..."
}

在...中包含消息

但它不显示我自己的正文信息。我怎样才能通过它或让它响应,例如“致命错误”

它似乎正确映射到我的集成响应,但我的 400 错误的映射模板如下:

$input.path('$.errorMessage');
amazon-web-services aws-lambda aws-api-gateway
1个回答
0
投票

不要引发异常,而是从 Lambda 返回结构化响应:

except Exception as e:
    return {
        "statusCode": 500,
        "body": json.dumps({
            "message": "Fatal Error",
            "details": str(e)
        })
    }

然后更新您的 API 网关映射模板:

#set($errorMessageObj = $util.parseJson($input.path('$.body')))
{
    "message": "$errorMessageObj.message",
    "details": "$errorMessageObj.details"
}

这样,您就可以通过 API Gateway 传递结构化错误,从而允许您包含自定义消息。然后,映射模板将其格式化为最终响应。

© www.soinside.com 2019 - 2024. All rights reserved.