AWS Cognito用户+关系数据库表。如何查询/整合两者?

时间:2016-11-30 12:04:23

标签: mysql amazon-web-services lambda amazon-rds amazon-cognito

我是AWS的新手,我真的需要帮助。我有一个现有的RDS Schema with Users表,还有我自己的用户身份验证算法/系统使用JWT。一切都很好,直到我开始上传文件到S3。我发现上传到S3时。我们不能传递额外的参数,只能传递body,key,contentType和哪个存储桶。我想传递额外的参数,例如当前登录用户的访问令牌(用于用户验证安全性),user_id,照片标题和标题。但这是不可能的。

我该怎么办?我应该使用AWS Cognito用户池而不是使用RDS用户吗?如果我使用Cognito用户池,是否可以执行SQL查询,如加入Cognito用户和另一个RDS表?我很困惑。如果我听起来像个白痴,我很抱歉。但我真的需要一些帮助。

我希望有人可以。我真的很感激。非常感谢你提前。

1 个答案:

答案 0 :(得分:2)

我假设你的上传逻辑是在Lambda中。在这种情况下,您可以在Lambda函数中对上传进行授权。允许Lambda函数通过将IAM策略附加到Lambda使用的IAM角色来将数据上载到S3。

如果直接从客户端上传到S3,则可以在没有身份验证/授权的情况下执行此操作,也可以使用联合身份。在这种情况下,您可以将所有用户导出到Cognito用户池(并使其保持同步)或创建自己的身份提供商并为Cognito身份池注册用户。

最干净但也可能最难的方法是保持身份验证,通过OpenID,SAML或您自己的方法与Cognito Identity Pool集成(请参阅http://docs.aws.amazon.com/cognito/latest/developerguide/developer-authenticated-identities.html)。

只有在a)您的身份验证真的很好并且b)您已经验证让Cognito Identity Pool中的用户真正符合您的要求/业务规则时,您才应该采用这种方式。