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

Ind*_*Dan 4 lambda amazon-cognito aws-api-gateway serverless-architecture

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

它运行良好。

我需要 Lambda 中的 cognitoIdentityId。

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

内容类型 - application/json

{
"cognito-identity" : "$context.identity.cognitoIdentityId"
}
Run Code Online (Sandbox Code Playgroud)

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

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

Bob*_*ney 5

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

请参阅此文档了解更多详细信息。

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

编辑以修复拼写错误。