首页 > 解决方案 > 如何使用 Cognito 构建 AWS DynamoDB 表

问题描述

我正在尝试为关系数据库做一些相对简单的事情,但我不知道如何为非关系数据库做一些事情。

我正在尝试在 AWS 上制作一个简单的任务 Web 应用程序,人们可以在其中发布他们的任务。

我有一个名为 tasks 的表,它使用 AWS Cognito 提供的身份验证令牌中的用户 ID。我想知道如何返回用户信息。我不想通过每次用户发送请求时简单地调用 Cognito 来依赖它。所以,我的想法是创建另一个表来存储所有用户信息。然而,这并不是一种非常不相关的做事方式,因为 JOINS 非常糟糕。

所以,我想知道我是否应该执行以下任何操作
a) 使用 RDS
b) 不使用 Cognito 并设置我自己的 Auth 系统
c) 只使用包含所有用户信息的表进行 JOIN
d) 执行请求每次到 Cognito

标签: amazon-web-servicesaws-lambdaamazon-dynamodbrelational-databaseamazon-cognito

解决方案


虽然我个人喜欢 cognito 的想法,但目前它有一些主要缺点......

  1. 您无法在不丢失密码的情况下备份/恢复用户池,您还必须实施自己的备份/恢复。一种解决方法是将用户密码保存在 cognito 自定义属性中。

  2. 我希望通过使用 api gateway/lambda 授权器将所有用户数据都放在 lambda 上下文中,但它不存在。或者我在使用 api 网关模板映射做错了什么

好东西 api gateway/lambda 授权器,最多可以缓存一个小时,不会再次调用授权器函数,这似乎是一个顶级功能。

  1. 不适用于 cloudformation,每次属性更新都会重新创建用户池而不恢复用户,从而失去用户。

我只在一个实现中使用了它,最终也复制了 DynamoDB 中的用户。

从那以后我一直在避免它。我希望他们能解决这些问题,因为它看起来像是每个项目都包含的一项服务,可以节省大量时间。

读了你的帖子,我问了自己同样的问题,也不确定答案

定价似乎是公平的。

获取用户信息的默认 5 个请求/秒似乎很奇怪,因为它会被执行多个 ajax api 请求的一页加载消耗。


推荐阅读