为何AWS Cognito admin-get-user无法查询外部用户?
AWS Cognito
admin-get-user 返回UserNotFoundException的解决方案 你遇到的核心问题是混淆了用户的Username和email属性,以下是具体原因和解决办法:
admin-get-user需要的是用户实际的Username,而非邮箱
很多时候,即使用户用邮箱注册,Cognito用户池也会自动生成一个随机UUID作为用户的Username(而非直接用邮箱),邮箱只是用户的一个属性字段。你在控制台看到的user@email.com是email属性,但admin-get-user接口要求传入的是用户的Username值,不是邮箱。解决步骤:
- 在你的
list-users代码中,打印完整的用户对象,提取目标用户的Username字段:for user in response['Users']: print(user) # 输出包含Username、Attributes等的完整用户数据 - 将这个
Username值替换到admin-get-user的调用参数中:response = client.admin_get_user( UserPoolId='user-pool-id', Username='实际的Username值' # 比如类似"a1b2c3d4-xxxx-xxxx-xxxx-1234567890ab"的UUID )
- 在你的
其他可能的排查方向
- 检查用户状态:确认控制台中该用户的状态为
ENABLED,如果是ARCHIVED或其他异常状态,可能导致admin-get-user无法查询(不过这种情况控制台会明确显示状态)。 - 验证权限和配置:确保调用接口的IAM实体(用户/角色)拥有
cognito-idp:AdminGetUser权限,同时确认代码中的region_name和UserPoolId与控制台完全一致。
- 检查用户状态:确认控制台中该用户的状态为
内容的提问来源于stack exchange,提问作者KapilDev Neupane
相关产品推荐
相关产品推荐

