Javascript 无服务器自定义授权程序结果未定义

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

我遵循在线教程和示例,了解如何为lambda函数实现自定义授权程序。不幸的是,我在访问函数中的授权者上下文时遇到问题。执行
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可以为两个环境工作。是的。不过他们应该向我们解释一下。:)再次感谢!