从AppSync访问Cognito用户属性



想象一下,您与Appsync,Aurora RDS和Cognito有一个简单的AWS堆栈。

显然,Cognito管理用户注册过程,每个用户都有一些属性,例如emailfirst_namelast_name

也有一个在Aurora RDS中的表,称为users,在其他列中,它具有cognito_id列,其中存储了Cognito用户IDS的引用。

最后一件事是Appsync GraphQl查询,它将列出所有可用的用户,这些用户既应该来自users RDS表和Cognito属性。这就是问题的出现。

如果仅需要从users表中获取属性,则可以用一些可以将一些小而整洁的SQL查询来解决问题,这些查询可以放入AppSync VTL请求模板中。但是,由于也需要从Cognito用户池中获取属性,因此情况变得复杂。

如何以高效且可扩展的方式完成类似的事情?还是一个不好的设计,还有更好的方法可以做到?

我的经验告诉我,当我们使用cognito时不要有桌子用户。我们可以在Cognito属性中持有的所有数据。但是也许它需要你。但是,您可以将lambda函数用作AppSync数据源。并从lambda函数中的Cognito获取数据。

过去对我有用的是将用户管理委派给cognito。因此,Cognito将处理身份验证和授权。我设置了一个确认后的lambda,该lambda在数据库中的用户表中创建记录。用户表有一个用于Cognito_Sub的列,可用于引用它。

最新更新