Javascript 无服务器自定义授权程序结果未定义
我遵循在线教程和示例,了解如何为lambda函数实现自定义授权程序。不幸的是,我在访问函数中的授权者上下文时遇到问题。执行Javascript 无服务器自定义授权程序结果未定义,javascript,aws-lambda,serverless-framework,aws-serverless,Javascript,Aws Lambda,Serverless Framework,Aws Serverless,我遵循在线教程和示例,了解如何为lambda函数实现自定义授权程序。不幸的是,我在访问函数中的授权者上下文时遇到问题。执行console.log(event.requestContext.authorizer)仅结果为未定义。我错过什么了吗?这里有一些片段 # serverless.yml ... myAuthorizer: handler: src/functions/myAuthorizer/index.handler someFunction: handler: src/fun
console.log(event.requestContext.authorizer)代码>仅结果为未定义
。我错过什么了吗?这里有一些片段
# 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
导出异步函数处理程序(
事件:AWSLambda.customauthorizervent,
上下文:AWSLambda.context
):承诺{
const user={id:1,电子邮件:'user@test.com'};
//一些逻辑。。。
返回{
principalId:user.id,
政策文件:{
版本:“2012-10-17”,
声明:[
{
行动:'*',
效果:“允许”,
资源:'*',
},
],
},
上下文:{user},
};
}
//someFunction.ts
导出异步函数处理程序(
事件:AWSLambda.APIGatewayEvent,
上下文:AWSLambda.context
):承诺{
console.log(event.requestContext.authorizer);//在myAuthorizer
处理程序函数中,使用callback
样式,而不是使用async/await
样式
export async function handler(
event: AWSLambda.CustomAuthorizerEvent,
context: AWSLambda.Context
): Promise<void> { // change to void
const user = { id: 1, email: 'user@test.com' };
// some logic...
context.succeed({ // instead of return policy object
principalId: user.id,
policyDocument: {
Version: '2012-10-17',
Statement: [
{
Action: '*',
Effect: 'Allow',
Resource: '*',
},
],
},
context: { user },
});
}
导出异步函数处理程序(
事件:AWSLambda.customauthorizervent,
上下文:AWSLambda.context
):承诺{//更改为无效
const user={id:1,电子邮件:'user@test.com' };
//一些逻辑。。。
success({//而不是返回策略对象
principalId:user.id,
政策文件:{
版本:“2012-10-17”,
声明:[
{
行动:'*',
效果:“允许”,
资源:'*',
},
],
},
上下文:{user},
});
}
但是你知道为什么回调有效而不是async/await
?在任何情况下,他们都应该在文档中明确提到这一点。:(对不起,我不知道:(,我面临着同样的问题,我也是这样做的。也许async/await
可以在Lambda
环境下正常工作,但对本地环境来说不行,callback
stype可以为两个环境工作。是的。不过他们应该向我们解释一下。:)再次感谢!