Amazon web services 内部服务器错误AWS API网关与自定义授权程序

Amazon web services 内部服务器错误AWS API网关与自定义授权程序,amazon-web-services,aws-lambda,aws-api-gateway,aws-serverless,Amazon Web Services,Aws Lambda,Aws Api Gateway,Aws Serverless,我试图在AWSAPI网关上使用自定义授权程序(用于验证jwt)来保护lambda函数。我还希望将任何queryStringParameters传递到lambda函数中,因此我希望将集成请求保留为lambda代理 自定义授权器已设置、测试并工作 问题: 当我调用这个端点时(在部署之后),我会收到一个HTTP500响应 { "message": "Internal server error" } 当我删除自定义授权器或取消选择lambda代理集成时,我从lambda接收正常输出 def

我试图在AWSAPI网关上使用自定义授权程序(用于验证jwt)来保护lambda函数。我还希望将任何
queryStringParameters
传递到lambda函数中,因此我希望将集成请求保留为lambda代理

自定义授权器已设置、测试并工作

问题:

当我调用这个端点时(在部署之后),我会收到一个
HTTP500
响应

{
    "message": "Internal server error"
}
当我删除自定义授权器或取消选择lambda代理集成时,我从lambda接收正常输出

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

有人见过这个吗?AWS关于这个问题的文档很少:/


谢谢大家!

在这之后,我的头都被打中了。原因是我的lambda函数返回了什么。应该是

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

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

如果AWS文档更好/i没有那么迟钝:D

自定义授权人的代码是什么?
def处理程序(事件,上下文):token=event['authorizationToken'].split(“”)[1]访问者={hidden}certificateFile=open(“hidden”,'r')certificateLines=certificateFile.readlines()certificate='.join(certificateLines)尝试:decoded=jwt.decode(令牌、公钥、算法='RS256',观众=观众)返回generatePolicy(decoded['sub'],'Allow'),除了:return generatePolicy(None,'Deny')
对不起,Marcin,我似乎无法在注释中正确格式化代码。但是,我的auth函数会返回一个包含正确ARN的正确策略。我确信这一点,因为如果我禁用Lambda代理,那么我的auth函数将正确地检查jwt令牌,并调用我的Lambda function(没有事件对象的属性,如queryStringParameters),通过控制台测试Lambda授权者,看看是否获得了正确的策略。500由于authorizer函数导致的错误可能是因为API没有调用该函数的权限,或者该函数没有以正确的格式返回策略。