我有一个架构,其中我将 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/