lambda - 具有 Cognito 用户池授权者和 Lambda 的 API 网关

标签 lambda aws-api-gateway amazon-cognito serverless-architecture

我有一个架构,其中我将 API Gateway 与 Cognito 用户池授权程序一起使用,并且我从客户端 ReST 调用传递授权 header 中的 IdToken。

工作正常。

我需要 Lambda 中的 cognitoIdentityId。

在 API 网关中尝试集成请求中的正文模板映射

内容类型 - application/json

{
"cognito-identity" : "$context.identity.cognitoIdentityId"
}

它不会发送identityid(在事件中或上下文中),而且它只将我的有效负载转换为这个json。

在这种情况下,如何在 Lambda 中获取 IdentityID,同时保持我的负载完好无损?

最佳答案

仅当您使用 Cognito 身份凭证时,Cognito 身份 ID 才可用。如果您想获取有关通过授权者授权的 Cognito 用户池用户的信息,可以在 context.authorizer.claims 映射中找到该信息。

参见this documentation了解更多详情。

此外,如果您希望此值在 Lambda 函数中可用,则它将位于 event.requestContext.authorizer.claims 映射中(如果您使用 Lambda 代理集成),或者您选择映射它的任何位置使用您的映射模板(如果您不使用代理集成)。

已编辑以修复拼写错误。

关于lambda - 具有 Cognito 用户池授权者和 Lambda 的 API 网关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43303797/

相关文章:

c# - Linq 将方法作为 lambda 表达式求值

Java 流 : Filter with multiple ranges

amazon-web-services - 如何仅从静态 s3 站点调用 API 网关

amazon-web-services - Cognito 登录的 Lambda 函数第一次不起作用

lambda - 在使用lambda表达式进行排序之前,请检查null值

c# - 如何抽象出此 Entity Framework IQueryable 查询中的选择?

aws-lambda - 模板包含错误。: 模板错误:Fn::GetAtt 实例引用 api 网关中未定义的资源 LambdaInvokeFunction

API Gateway POST 方法在测试期间有效,但不适用于 postman

amazon-web-services - AWS 云形成 : Cognito LambdaTrigger CustomEmailSender - Property "Not currently supported by AWS CloudFormation." and CDK usage

android - 为 Android 应用程序使用开发人员身份验证 (aws cognito) 的示例