Я создал несколько лямбда-функций и развернул их с помощью SAM. Развертывание прошло успешно, но при попытке достичь конечных точек я всегда получаю
{ message: "Unauthorized" }
Даже я отправляю правильный токен на предъявителя с использованием заголовка Authentication
. Затем, если я go отправлю авторизатору и запускаю тест, он проходит хорошо и генерирует журналы в CloudWatch, но когда я запускаю запрос от моего клиентского приложения или клиентского приложения REST к конечной точке, я получаю неавторизованное сообщение и проверяю CloudWatch , не выполняется функция авторизатора.
Кроме того, проверяя функцию авторизатора из конфигурации Lambda, я вижу, что в API Gateway Trigger
есть ошибка, но не знаю, что это значит.
Я создал функцию авторизации, используя руководство, предоставленное AWS: https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html#api -gateway-lambda-authorizer-lambda-function-create
Совместное использование конфигурации SAM
Resources:
SomeAPI:
Type: AWS::Serverless::Api
Properties:
StageName: Prod
TracingEnabled: true
Auth:
DefaultAuthorizer: MyLambdaTokenAuthorizer
Authorizers:
MyLambdaTokenAuthorizer:
FunctionArn: !GetAtt AuthorizerFunction.Arn
GetActivityStreamFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: get-activity-stream/
Handler: index.handler
Layers:
- !Ref DepencenciesLayer
- !Ref DatabaseLayer
Events:
GetActivityStream:
Type: Api
Properties:
RestApiId: !Ref SomeAPI
Path: /activity-stream
Method: get
## Authorizer Function
AuthorizerFunction:
Type: AWS::Serverless::Function
Properties:
Layers:
- !Ref DepencenciesLayer
CodeUri: authorizer/
Handler: index.handler
Что касается ответа, отправленного обратно авторизатором, он отправляет все параметры, запрошенные API-шлюзом
{
principalId: decoded.sub,
policyDocument: getPolicyDocument("Allow", params.methodArn),
context: { scope: decoded.scope }
}
Время выполнения, которое я использую, составляет nodejs12.x
, и вот некоторые скриншоты того, что я получаю с консоли AWS.