如何将AWS Cognito用户池迁移至另一个AWS账户?
AWS Cognito用户池跨账户迁移方案
首先明确:AWS没有原生的一键导出用户池到另一个账户的机制,而且你不可能获取到用户的明文密码——Cognito从设计上就只存储哈希后的密码(比如PBKDF2、BCrypt格式),不会保留明文,任何API都拿不到原始密码。
下面是几种可行的迁移方式:
1. 批量导入式迁移(适合一次性迁移全量用户)
- 在源账户用
ListUsersAPI遍历所有用户,收集关键信息:用户名、邮箱/手机号、自定义属性、哈希后的密码(从UserPasswordHash字段获取)、对应的盐值(如果有UserPasswordSalt字段) - 把这些信息整理成符合Cognito导入规范的CSV文件,格式要匹配目标账户用户池的导入模板
- 到目标账户的Cognito控制台,通过「批量导入用户」功能上传CSV完成迁移
- 注意:如果目标池的密码哈希算法和源池不一致,直接导入哈希密码会验证失败,这种情况只能让用户后续通过重置密码流程设置新密码
2. 渐进式实时迁移(适合分批迁移或用户自主触发)
给目标账户的用户池配置用户迁移Lambda触发器:
- 用户第一次在目标池登录时,Lambda会调用源账户的Cognito接口验证用户账号密码
- 验证通过后,自动将用户信息同步到目标池,之后用户可直接在目标池登录
额外注意点
- 自定义属性要提前在目标池配置好,否则迁移时会丢失相关信息
- 用户的MFA设备信息无法直接迁移,迁移后需要用户重新绑定MFA设备
- 如果源池开启了临时密码等特殊设置,迁移后要确保目标池配置一致,避免用户登录异常
内容的提问来源于stack exchange,提问作者BntMrx
相关产品推荐
相关产品推荐

