想象一下,您拥有一个带有Appsync,Aurora RDS和Cognito的简单AWS堆栈。
很明显,Cognito管理着用户注册过程,其中每个用户都有一些属性,比如email
,first_name
和last_name
。
Aurora RDS中还有一个名为users
的表,除其他各列外,还有一个cognito_id
列,用于存储对Cognito用户ID的引用。
最后一件事是AppSync GraphQL查询,该查询将列出所有可用用户,其字段应同时来自users
RDS表和Cognito属性。这就是问题所在。
如果仅需要从users
表中获取属性,则可以通过将一些小的整洁的SQL查询放入AppSync VTL请求模板中来解决该问题。但是由于还需要从Cognito用户池中获取属性,所以事情变得复杂了。
如何以有效且可扩展的方式完成此类任务?还是设计不好,有更好的方法吗?
答案 0 :(得分:0)
我的经验告诉我,当我们使用Cognito时,没有表Users。我们可以保存在Cognito属性中的所有数据。但是也许这对您来说是必需的。但是,您可以将Lambda函数用作AppSync数据源。并通过Lambda函数从Cognito获取数据。
答案 1 :(得分:0)
过去对我有用的是将用户管理委托给 Cognito。因此 Cognito 将处理身份验证和授权。我设置了一个确认后 lambda,它在数据库的用户表中创建了一条记录。 users 表有一个用于 cognito_sub 的列,可用于引用它。