在 Cognito 或 AppSync 中存储用户属性?

Ben*_*nck 2 amazon-web-services amazon-cognito aws-appsync aws-amplify

我正在使用 AWS Amplify,我想知道最好将用户属性存储为自定义 Cognito 属性还是 AppSync 的用户表?

认知方法:

'username': 'jdoe',
'password': 'mysecurepassword#123',
'attributes': {
    'email': 'me@domain.com',
    'phone_number': '+12135555555',
    'custom:favorite_flavor': 'Cookie Dough'  // custom attribute, not standard
}
Run Code Online (Sandbox Code Playgroud)
  • 优点:单一的事实来源
  • 缺点:不是 API 的一部分

AppSync 方法:

type User 
    @model 
    @auth(
        rules: [
          {allow: owner, ownerField: "owner", operations: [create, update, delete, read]},
        ])
{
    id: ID!
    owner: String
    favoriteFlavor: String
}
Run Code Online (Sandbox Code Playgroud)
  • 优点: API 的所有功能
  • 缺点:每个人有两个“用户”(一个 Cognito 用户和一个表用户)

如果 AppSync 方法是最好的,其他字段是否应该保留到表中(例如姓名或电子邮件)?

谢谢!

Pha*_*iệt 6

根据我的经验,两者都使用是最好的。

  1. 与认证相关的字段(电子邮件、用户名、电话等),将其保存在 Cognito 和 DB 上。1 Cognito 自定义属性“custom:id”映射到数据库中的用户“id”。
  2. 其他属性,保存到数据库更灵活。因为无法搜索到 cognito 自定义属性,并且 Cognito APIs Limit(每秒请求数)不适合经常使用:https : //docs.aws.amazon.com/cognito/latest/developerguide/limits.html,所以从数据库保存和获取更好。
  3. 当用户更新相关字段的身份验证时,您必须在 Cognito 和 DB 上进行更新。

希望这对你有帮助。