使用 Cognito 凭据从 API 网关调用的 Lambda 获取用户

Getting user from Lambda called by API Gateway using Cognito credentials

使用 Cognito 凭据从浏览器调用我的 API 端点不会为发出请求的用户提供 lambda 函数。

我正在为端点使用 AWS_IAM 身份验证

这是我的 lambda 中的请求:

module.exports.addItem = (event, context, done) => { console.log(event.identity); /** accountId: "", apiKey: "", caller: "", cognitoAuthenticationProvider: "", cognitoAuthenticationType: "", cognitoIdentityId: "", cognitoIdentityPoolId: "", sourceIp: "213.229.49.108", user: "", userAgent: "Mozilla/5.0 (X11; Linux x86_6....", userArn: "" */ };

我想为用户执行一些dynamodb 操作。如何获取用户?

您有 2 个选项来获取您的 Lambda 函数的 Cognito 身份 ID:

  1. 在控制台的 API 方法上检查 "use caller credentials"。这将告诉 API Gateway 使用 Cognito 凭证调用 Lambda,这意味着您的 Lambda 函数的 context.identity 将包含该信息。 注意您的 Cognito 角色需要权限才能调用您的 Lambda 函数才能正常工作。

  2. 使用 mapping template 将值映射到您的事件负载中。

您似乎在尝试执行 #2,但您尚未包含映射模板,请确保其中包含所需的值。此外,确保您已部署启用 IAM 身份验证的更改,并且您正确地签署了请求。