【发布时间】:2019-01-25 06:15:37
【问题描述】:
在构建 REST API 时,我正在尝试转向无服务器架构。我来自 Ruby on Rails 背景。
我已经成功理解和适应了 Api Gateway、Cognito、RDS 和 Lambda 函数等服务,但是我正在努力以最佳方式将它们组合在一起。
我的情况如下。当有多个与应用程序成员相关的资源(例如博客应用程序)时,我有一个简单的基于用户的平台。
我使用 Cognito 进行身份验证,使用 Aurora 作为数据库服务来保存文章和喜欢的内容。
由于数据库和 Cognito 用户池是解耦的,我很难做这样的事情:
获取喜欢特定文章的用户
获取用户 cmets
这对我来说似乎有问题,因为我需要将一些唯一的 Cognito 用户标识符(在 API 网关的授权阶段检索)传递给 lambda 函数,然后该函数将使用对该用户的外部引用保存数据库记录。另一方面,如果我要获取特定用户,首先我必须从我的关系数据库中获取他们的标识符,然后从 Cognito 用户池中请求用户详细信息。我缺乏一些在我的 lambda 函数中访问当前用户的标准方法以及轻松将数据库记录与该用户关联的机制..
我还没有找到一些令人信服的推荐模式来设计此类应用程序,尽管这似乎是一个非常常见的问题,而且如果我的方法是正确的,我很难挣扎..
我希望有一些 cmets 在设计简单的基于用户的平台时需要考虑哪些模式以及我的解决方案存在哪些缺陷。任何文章和示例也将非常有帮助。 提前致谢。
【问题讨论】:
标签: rest amazon-web-services aws-lambda aws-api-gateway amazon-cognito