简体   繁体   English

具有自定义授权方的内部服务器错误 AWS API Gateway

[英]Internal server error AWS API Gateway with custom authorizer

I am trying to protect a lambda function using a custom authorizer (which validates a jwt) on AWS API Gateway.我正在尝试使用 AWS API Gateway 上的自定义授权方(验证 jwt)来保护 lambda 函数。 I also want to pass any queryStringParameters into my lambda function, so I want to keep my Integration request to be Lambda Proxy.我还想将任何queryStringParameters传递到我的 lambda 函数中,因此我想将我的集成请求保留为 Lambda 代理。

在此处输入图片说明

The custom authorizer is set, tested and working自定义授权器已设置、测试和工作

在此处输入图片说明

Problem:问题:

When I call this endpoint (after deploying), I receive a HTTP 500 response.当我调用此端点时(部署后),我收到HTTP 500响应。

{
    "message": "Internal server error"
}

When I remove my custom authorizer OR deselect the lambda Proxy integration, I receive a normal output from my lambda当我删除自定义授权方或取消选择 lambda 代理集成时,我会收到来自 lambda 的正常输出

def lambda_handler(event, context):
    return {
        'status': 400,
        'body' : json.dumps('hello World'),
        'headers': {
            'Access-Control-Allow-Origin': "*"
        },
        'isBase64Encoded': 'false'
    }

Has anyone come across this?有没有人遇到过这个? AWS documentation on this issue is sparse :/关于此问题的 AWS 文档很少:/

Thank you!谢谢!

I'm hitting myself in the head after this.在这之后我正在打自己的头。 The reason is because of what my lambda function was returning.原因是因为我的 lambda 函数返回了什么。 It should've been应该是

def lambda_handler(event, context):
    return {
        'statusCode': 400,
        ...

As opposed to

def lambda_handler(event, context):
    return {
        'status': 400,
     ...

If the AWS docs were better/i wasn't as obtuse :D如果 AWS 文档更好/我没有那么迟钝:D

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM