如何在 AWS Lambda 函数中获取 Cognito 身份验证的用户信息?

Vin*_*oft 3 amazon-web-services aws-sdk aws-lambda aws-cognito

我正在为我的 Angular 应用程序开发无服务器后端。

用户使用 AWS Cognito 进行身份验证,并且可以通过 API Gateway(使用通过 API Gateway 控制台生成的开发工具包)访问 AWS Lambda 函数。

问题:如何获取有关哪个用户正在调用 Lambda 函数的信息?Lambda 函数正在使用 python 和 boto3。

用例:我需要为 GDPR 合规性记录用户活动,因此我需要知道哪个用户正在调用 Lambda 函数。

har*_*ley 5

API Gateway 最近推出了对 Cognito 用户池授权器的支持。使用 Cognito 用户池授权器配置 API 方法后,您可以将授权标头中未过期的 ID 令牌传递给 API 方法。

如果它是您的用户池用户的有效 ID 令牌,则您可以使用“$context.authorizer.claims”访问 API 中 ID 令牌的所有声明。

例如,'$context.authorizer.claims.email' 将返回用户的电子邮件地址,而 '$context.authorizer.claims.sub' 将返回您用户的唯一标识符。

如果 ID 令牌已过期或无效,Cognito 用户池授权方将向调用方发送未授权 (401) 响应。

正如您可以从他们的出版物中读取的那样,您可以从授权标头的未过期 ID 令牌中获取声明。