【问题标题】:Retrieving cognito user ID in Lamba在 Lamba 中检索认知用户 ID
【发布时间】:2021-08-03 16:19:24
【问题描述】:

我正在为我的认知池上的预注册触发器编写一个 lambda 函数。

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

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

到目前为止,我已经做了一个 Authorizer:

还有一个 ANY 方法。

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

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

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

可能有更好的方法来访问用户的 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]
}

【问题讨论】:

  • 找出在哪里寻找它的最简单方法就是 console.log(input); 看看它在哪里
  • @LLL 我添加了 console.log(context)
  • @Toby 这是错误的上下文。您需要的将作为第一个参数传递给您的处理程序。
  • 输入不是上下文

标签: amazon-web-services aws-lambda amazon-cognito


【解决方案1】:

您无法将集成请求映射添加到 lambda 代理集成。您可以在处理程序中以 event.requestContext 的身份访问请求上下文。

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

【讨论】:

  • 我收到了event.requestContext is undefined。如果我尝试event.requestContext.authorizor.claims.sub,我也会不确定。我已经启用了 CORS。我添加了我的 lambda 设置的屏幕截图
  • 您无法在OPTIONS 方法上启用授权方。预检请求未经身份验证。将其更改为 NONE 授权方。
  • 好的,我已经改了
  • 这里不能真正使用 ANY 方法处理程序,因为不同的方法需要不同的授权者。
  • 应该是GET吗?
猜你喜欢
  • 2017-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2012-01-06
  • 2013-12-11
  • 2020-08-21
相关资源
最近更新 更多