Время ожидания AWS Custom Authorizer истекло - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть бессерверная лямбда-функция (AWS), которая создает экспресс-сервер с использованием serverless-http.Custom Authorizer, который я использую для аутентификации запросов, истекает после успешного запуска.ниже приведена политика, возвращаемая согласно журналам CloudWatch:

2019-02-27T12: 06: 49.000Z 7b138c38-b316-4ae0-97ad-36242833cefa policy [{Действие: 'execute-api: Invoke', Эффект: 'Разрешить', Ресурс: 'arn: aws: execute-api: eu-west-1: xxxx: xxxx / dev / GET / data / age'}]

После этого яполучить этот журнал:

2019-02-27T12: 06: 54.778Z 7b138c38-b316-4ae0-97ad-36242833cefa Время ожидания истекло через 6,01 секунды

Моя функция, котораядолжен был выполняться после того, как аутентификация даже не вызывается.я использую async / await, чтобы получить бизнес против токена авторизации в заголовке.

Вот мой код авторизатора:

if (business) {
  console.log(
    "policy",
    generatePolicy(business, "Allow", event.methodArn).policyDocument.Statement
  );

  callback(null, generatePolicy(business, "Allow", event.methodArn));
  return;
} else {
  callback(null, generatePolicy(null, "Deny", event.methodArn));
  return;
}

generatePolicy Функция:

const generatePolicy = function(principalId, effect, resource) {
  const authResponse = {};
  authResponse.principalId = "Business";

if (effect && resource) {
  const policyDocument = {};
  policyDocument.Version = "2012-10-17";
  policyDocument.Statement = [];
  const statementOne = {};
  statementOne.Action = "execute-api:Invoke";
  statementOne.Effect = effect;
  statementOne.Resource = resource;
  policyDocument.Statement[0] = statementOne;
  authResponse.policyDocument = policyDocument;
  authResponse.context = {
  business: principalId
  };
}

 return authResponse;
};

serverless.yml:

myData:
  handler: functions/myData.handler
  events:
    - http:
        path: /data/{proxy+}
        method: ANY
        cors: true
        authorizer: companyAuth
companyAuth:
  handler: middleware/auth.company
  cors: true

Примечание: то же самое работает, если я запускаю его локально с помощью плагина serverless-offline.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...