У меня есть следующий стек CloudFormation.2 лямбда-выражения (приветствие и аутентификация) с API-шлюзом, настроенным для использования лямбда-адреса авторизации для авторизации.
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Resources:
GreetingsApiGateway:
Type: AWS::Serverless::Api
Properties:
StageName: Prod
Auth:
DefaultAuthorizer: MyAuthorizer
Authorizers:
MyAuthorizer:
FunctionArn: !GetAtt AuthLambda.Arn
GreetingsLambda:
Type: AWS::Serverless::Function
Properties:
CodeUri: "s3://<bucket-name>/code.zip"
Handler: src/index.greeting
Events:
GetRoot:
Type: Api
Properties:
RestApiId: !Ref GreetingsApiGateway
Path: /hello
Method: get
AuthLambda:
Type: AWS::Serverless::Function
Properties:
CodeUri: "s3://<bucket-name>/code.zip"
Handler: src/index.auth
Globals:
Function:
Runtime: nodejs8.10
# check whether I can use resources within globals
Outputs:
ApiURL:
Description: "OUR API URL"
Value: !Sub "https://${GreetingsApiGateway}.execute-api.${AWS::Region}.amazonaws.com/Prod/"
Код для лямбда-кодов следующий:
exports.greeting = async () => ({ statusCode: 200, body: "Hello Beautiful World!" });
exports.auth = async () => ({ statusCode: 200, body: "I wanna do the authorisation!" });
Я ожидал авторизациювсе время терпеть неудачу, но также видеть журналы из Auth lambda в моих журналах CloudWatch.
Что происходит:
Вызывается изнутриAPI Gateway
Если я попал в тест без каких-либо заголовков из консоли API Gateway, я получу результат "Hello Beautiful World".В моих шаблонах CloudWatch нет лямбда-аутентификационных журналов.
Вызван из POSTMAN
Я попытался отправить этот ввод в заголовках запроса GET.Ответ был «не авторизован» без каких-либо журналов в журналах Auth lambda CloudWatch.
{
"type":"TOKEN",
"authorizationToken":"<caller-supplied-token>",
"methodArn":"arn:aws:execute-api:<regionId>:<accountId>:<apiId>/<stage>/<method>/<resourcePath>"
}
Что происходит?