AWS Cognito用户池托管UI日志能否上报到CloudTrail/CloudWatch?
我一直在查看CloudTrail中的Cognito事件,仅能获取到部分事件而非全部。在查阅相关文档后,文中明确说明:托管UI和联合身份调用目前未纳入CloudTrail日志事件范围。
如果该功能目前仍未支持,是否有合适的替代方案,可以统计通过托管UI完成的登录、注册等操作的次数?
我了解可以使用Lambda触发器实现该需求,但我不希望仅为了将登录/注册事件日志录入CloudWatch就额外新增Lambda函数,且现阶段我也不想自行开发注册页面。
以下三种原生方案均不需要新增Lambda函数、无需自定义开发注册页面,开箱即可使用:
方案1:使用Cognito内置CloudWatch指标(最简单,无需额外配置)
Cognito用户池默认会将核心操作指标自动推送至CloudWatch,托管UI触发的登录、注册操作会被完整统计:
- 成功注册次数对应指标为
SignUpSuccess - 成功登录次数对应指标为
UserLoginSuccess
直接进入CloudWatch控制台,在「指标」分类下找到Cognito分类,选择对应用户池即可查看指定时间范围内的聚合数据,也可直接基于指标生成可视化报表、配置告警。
方案2:开启Cognito用户池活动日志(支持细粒度统计)
如果需要区分登录来源、联合身份提供商等更细维度的统计,可以直接在Cognito用户池配置中开启「活动日志传递」功能,无需编写代码:
- 可选择将日志直接投递到CloudWatch日志组或Kinesis Data Firehose
- 日志中包含完整的事件类型、触发渠道、认证方式、响应结果等字段
- 可通过CloudWatch Logs Insights编写简单查询语句,统计指定时间范围内托管UI的登录、注册次数,示例查询语句:
fields @timestamp | filter eventType in ["SignIn", "SignUp"] | filter eventResponse = "Success" | stats count() by eventType
方案3:开启CloudFront访问日志(统计页面访问行为)
如果需要统计托管UI的页面访问量(如登录页访问次数、未完成登录的用户量),可以在配置Cognito自定义域名时关联CloudFront,开启CloudFront标准访问日志:
- 日志会自动存储到指定S3存储桶
- 可通过Athena直接查询
/login、/signup等路径的请求次数,统计页面访问数据
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

