在 Lamba 中检索已知用户 ID

Retrieving cognito user ID in Lamba

我正在为我的认知池上的 pre-sign up 触发器编写一个 lambda 函数。

我想在用户注册时将用户详细信息复制到 mongodb。

因此,我需要访问 context.authorizer.claims.sub,用户的 Cognito ID。

到目前为止,我已经创建了一个授权者:

还有一个 ANY 方法。

阅读此文档后,我似乎需要在 body 映射模板中添加 context.authorizer.claims.sub。

https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-enable-cognito-user-pool.html

但是,在集成请求中似乎没有添加 body 映射模板的选项

可能有更好的方法来访问用户的 Cognito ID,但这似乎应该有效。

编辑

我的 Lambda 配置

console.log(context)

2021-05-13T13:02:56.188Z    75c67d1e-0f2e-49c5-be2f-d19affb2dd2b    INFO    {
  callbackWaitsForEmptyEventLoop: [Getter/Setter],
  succeed: [Function (anonymous)],
  fail: [Function (anonymous)],
  done: [Function (anonymous)],
  functionVersion: '$LATEST',
  functionName: 'AuthUtils',
  memoryLimitInMB: '128',
  logGroupName: '/aws/lambda/AuthUtils',
  logStreamName: '2021/05/13/[$LATEST]920d08ed47584c16abd89ffd5c6c12da',
  clientContext: undefined,
  identity: undefined,
  invokedFunctionArn: 'arn:aws:lambda:eu-west-2:022228979186:function:AuthUtils',
  awsRequestId: '75c67d1e-0f2e-49c5-be2f-d19affb2dd2b',
  getRemainingTimeInMillis: [Function: getRemainingTimeInMillis]
}

您不能将集成请求映射添加到 lambda 代理集成。您可以在处理程序中以 event.requestContext 的形式访问请求上下文。

子值可以访问为event.requestContext.authorizer.claims.sub