如何在Python中使用Amplify React在确认后Lambda触发器中获取Cognito标识Id?

如何在Python中使用Amplify React在确认后Lambda触发器中获取Cognito标识Id?,python,amazon-web-services,amazon-cognito,aws-amplify,Python,Amazon Web Services,Amazon Cognito,Aws Amplify,我正在做一个ReactJS项目,并使用Amplify进行注册/登录。在注册时,我在Python中有一个post-confirmation lambda触发器,它将用户信息(用户名、cognitoid等)存储在On-prem数据库中。我也想存储标识id,但似乎在事件或上下文变量中找不到它。我可以在用户登录后调用React中的Auth.currentCredentials()来查找标识id,但希望在注册过程中获取此信息 在此方面的任何帮助都将不胜感激。谢谢。我也遇到了同样的问题,发现auth触发器中

我正在做一个ReactJS项目,并使用Amplify进行注册/登录。在注册时,我在Python中有一个post-confirmation lambda触发器,它将用户信息(用户名、cognitoid等)存储在On-prem数据库中。我也想存储标识id,但似乎在事件或上下文变量中找不到它。我可以在用户登录后调用React中的Auth.currentCredentials()来查找标识id,但希望在注册过程中获取此信息


在此方面的任何帮助都将不胜感激。谢谢。

我也遇到了同样的问题,发现auth触发器中确实没有该问题,因为正如您所说,用户必须进行身份验证才能检索它。也没有一种方法(我可以找到)使用AWS admin SDK获取此信息

我求助于在用户登录到应用程序后运行一个小检查,然后打电话将identityId保存在我需要的地方。目的是允许其他用户在登录后访问用户的媒体,方法是使用用户自己的identityId with amplify来提取配置文件图片


希望这会有所帮助。

您可以在自定义属性中保存标识ID

是的,客户端应用程序可以通过Auth.currentCredentials()获取标识ID,但这并不安全,因为任何人都可以覆盖客户端应用程序中的任何代码,因此,如果您依赖客户端应用程序作为您的identityId真实来源,那么任何人都可以将identityId设置为其他用户的identityId,例如,然后以他们的身份登录

在确认后触发lambda函数中获取identityId的一种方法是调用托管在Amazon API网关上的API-确认后lambda调用发送新确认用户凭据的API,API后面有lambda,该lambda的代码可以访问绑定到传入请求“req”的变量中调用API的人的标识ID,即:

req.apiGateway.event.requestContext.identity.cognitoIdentityId

因此,在确认后lambda函数中获取identityId的一种安全方法是调用API并要求API在该变量中返回identityId——所有操作都在服务器上完成


但是,请注意,目前存在一个关于确认后lambda未获得API许可的未决问题(403个错误)-这只发生在您通过Amplify设置所有内容时,而不是手动设置。如果使用Amplify设置所有lambda函数,则必须等待此问题得到解决:在尝试此处描述的策略以在确认后触发lambda函数中获取identityId之前。

欢迎使用stackoverflow。请注意改进你的答案。这听起来是解决这个问题的好办法。关于如何开始实施这一点,有什么建议吗?我在概念上理解解决方案,但不确定从何处开始实施。我是Sig4自己签署API请求吗?这听起来很简单,但恐怕实现起来并不简单。任何指点都将不胜感激!在post确认触发器中,我从用户池中获得了用户的sub。我不太清楚如何使用这些信息向带有用户凭据的API端点提交请求。