добавлен aws apigateway lambda authorizer, выдает ошибку 500

#amazon-web-services #aws-lambda #authorization #aws-api-gateway

#amazon-web-services #aws-lambda #авторизация #aws-api-gateway

Вопрос:

Создан лямбда-авторизатор для шлюза HTTP API AWS

  • Формат полезной нагрузки: 2.0
  • Режим ответа: политика IAM
  • Источники идентификации: $request.header.Авторизация
  • Разрешение на вызов: автоматически предоставляет шлюзу API разрешение на вызов вашей лямбда-функции

И вот функция lambda, которая имеет API Gateway в качестве триггера

 exports.handler =  function(event, context, callback) {
    var token = event.authorizationToken;
    switch (token) {
        case 'allow':
            callback(null, generatePolicy('user', 'Allow', event.methodArn));
            break;
        case 'deny':
            callback(null, generatePolicy('user', 'Deny', event.methodArn));
            break;
        case 'unauthorized':
            callback("Unauthorized");   // Return a 401 Unauthorized response
            break;
        default:
            callback("Error: Invalid token"); // Return a 500 Invalid token response
    }
};

var generatePolicy = function(principalId, effect, resource) {
    var authResponse = {};
    
    authResponse.principalId = principalId;
    if (effect amp;amp; resource) {
        var policyDocument = {};
        policyDocument.Version = '2012-10-17'; 
        policyDocument.Statement = [];
        var statementOne = {};
        statementOne.Action = 'execute-api:Invoke'; 
        statementOne.Effect = effect;
        statementOne.Resource = resource;
        policyDocument.Statement[0] = statementOne;
        authResponse.policyDocument = policyDocument;
    }
    
    // Optional output with custom properties of the String, Number or Boolean type.
    authResponse.context = {
        "stringKey": "stringval",
        "numberKey": 123,
        "booleanKey": true
    };
    return authResponse;
}
  

Я получаю следующий ответ:

 {"message":"Internal Server Error"}
  

Вот журнал из CloudWatch для API Gateway

 {
    "requestId":"TpdEqgAZhcwEJtg=",
    "ip": "103.121.69.2",
    "requestTime":"29/Sep/2020:21:35:00  0000",
    "httpMethod":"POST",
    "routeKey":"POST /auth/otp",
    "status":"500","protocol":"HTTP/1.1",
    "responseLength":"35"
}
  

Как мне устранить эту ошибку 500?

Комментарии:

1. Проверяли ли вы журналы CloudWatch, чтобы узнать, не выдает ли ваша лямбда-функция ошибки?