使用aws cognito-idp list-users能否按邮箱域名后缀过滤Cognito用户
AWS Cognito list-users 邮箱后缀匹配问题解答
结论
目前aws cognito-idp list-users的原生过滤语法不支持直接筛选邮箱后缀为@gmail.com的用户。
过滤规则说明
AWS Cognito 用户池的list-users接口仅支持以下几种过滤运算符,暂不支持后缀匹配、任意子串匹配能力:
^=:前缀匹配,即你当前用来筛选john@前缀邮箱的运算符=:精确值匹配!=:不等值匹配>/</>=/<=:大小比较运算符,多用于数字、日期类型的属性筛选
替代实现方案
你可以根据使用场景选择以下两种方案实现需求:
- 全量拉取后本地过滤
如果你的用户池规模不大,可先拉取所有用户的邮箱属性,再通过本地工具做后缀筛选,常用的是配合jq命令实现,示例如下:
aws cognito-idp list-users --user-pool-id my-pool --attributes-to-get email | jq '.Users[] | select( .Attributes[] | select(.Name == "email").Value | endswith("@gmail.com") )'
如果用户量较大需要分页,可配合--starting-token参数循环拉取所有分页数据后再统一过滤即可。
2. 新增自定义属性预存后缀(适合高频需求)
如果后缀筛选是你经常需要用到的功能,可以在Cognito用户池新增email_suffix自定义属性,在用户注册、修改邮箱时自动将邮箱后缀写入该属性,之后就可以用原生过滤语法直接高效匹配,示例命令如下:
aws cognito-idp list-users --user-pool-id my-pool --filter "email_suffix = \"@gmail.com\"" --limit 20
内容的提问来源于stack exchange,提问作者Sam Luther
相关产品推荐
相关产品推荐

