#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, чтобы узнать, не выдает ли ваша лямбда-функция ошибки?