AWS Cognito用户池备份恢复及迁移场景下应选用什么作为主键
AWS Cognito用户主键选型方案
核心推荐:使用内置username属性作为主键
方案优势完全匹配需求:
username支持在用户导入、跨用户池迁移时主动指定固定值,不会像sub一样由AWS自动生成且无法修改,彻底解决用户池迁移、灾难恢复场景下主键变更导致的数据关联失效问题。username默认内置在Access Token、ID Token的标准载荷中,无需添加自定义属性即可直接从Access Token中解析获取,完全兼容需要从Access Token获取groups信息的使用场景。
适配业务登录习惯的优化方案
如果业务原本使用邮箱、手机号作为用户登录标识,不想让用户感知全局唯一ID的存在,可以做如下配置:
- 后台为每个用户生成全局唯一的业务ID作为
username的取值 - 开启Cognito用户池的别名功能,将邮箱、手机号设置为登录别名,用户仍然可以使用邮箱/手机号完成登录,前端使用体验不受任何影响
迁移阶段兼容方案
当前迁移过程中可以通过Lambda迁移触发器做如下处理,避免业务断层:
- 新用户池创建用户时,直接将旧用户池的
username赋值给新用户的username字段,保持主键一致 - 可将旧用户池的
sub值存入新用户的自定义属性做历史数据映射,用于兼容旧有业务数据的关联查询
内容的提问来源于stack exchange,提问作者HMilbradt
相关产品推荐
相关产品推荐

