Я следовал учебным пособиям и примерам онлайн о том, как реализовать собственные средства авторизации для моей лямбда-функции. К сожалению, у меня проблемы с доступом к контексту авторизатора внутри моей функции. Выполнение console.log(event.requestContext.authorizer);
приводит только к undefined
. Я что-то пропустил? Вот небольшой фрагмент.
# serverless.yml
...
myAuthorizer:
handler: src/functions/myAuthorizer/index.handler
someFunction:
handler: src/functions/someFunction/index.handler
events:
- http:
method: GET
path: /hello-world
authorizer:
name: myAuthorizer
identitySource: method.request.header.Authorization
// myAuthorizer.ts
export async function handler(
event: AWSLambda.CustomAuthorizerEvent,
context: AWSLambda.Context
): Promise<AWSLambda.AuthResponse> {
const user = {id: 1, email: 'user@test.com'};
// some logic...
return {
principalId: user.id,
policyDocument: {
Version: '2012-10-17',
Statement: [
{
Action: '*',
Effect: 'Allow',
Resource: '*',
},
],
},
context: { user },
};
}
// someFunction.ts
export async function handler(
event: AWSLambda.APIGatewayEvent,
context: AWSLambda.Context
): Promise<AWSLambda.APIGatewayProxyResult> {
console.log(event.requestContext.authorizer); // <-- this is undefined
console.log(Object.keys(event.requestContext)); // <-- no "authorizer" property
return {
statusCode: 200,
body: JSON.stringify({hello: 'world'}),
};
}
Заранее спасибо!