不幸的是,无服务器框架不支持本地自定义 API 网关默认响应(目前)。如果您有兴趣关注它,存储库中存在一个现有问题。
目前,您必须使用 CloudFormation 来实现这一点。您可以使用许多选项来自定义错误响应。您将想具体了解要更改的ResponseType 。
对于您的用例,看起来MISSING_AUTHENTICATION_TOKEN
响应类型就是您要查找的内容。这是一个您可以调整并添加到您的示例serverless.yml
(通过该resources
部分):
resources:
Resources:
MissingAuthenticationTokenGatewayResponse: # Custom name, you can change it
Type: 'AWS::ApiGateway::GatewayResponse'
Properties:
ResponseType: MISSING_AUTHENTICATION_TOKEN # The Response Type to customize
RestApiId:
Ref: 'ApiGatewayRestApi'
StatusCode: '403' # The returned HTTP code
ResponseParameters:
# Set CORS
gatewayresponse.header.Access-Control-Allow-Origin: "'*'"
gatewayresponse.header.Access-Control-Allow-Headers: "'*'"
ResponseTemplates:
application/json: |
{
"error": "$context.authorizer.customErrorMessage"
}
在ResponseTemplates
中,您可以根据需要设置 JSON 输出。此示例只是设置一个error
属性,该属性将包含customErrorMessage
Lambda 授权方输出context
属性的属性值。您可以在此处了解更多信息。如果需要,您也可以将其设置为静态字符串,但是能够动态更改代码中的错误消息相当不错。