AWS Cognito post confirmation触发器Lambda函数未触发问题排查
Cognito Post Confirmation Lambda 未触发排查方向
一、Cognito 触发器配置排查
- 确认你在目标Cognito用户池下绑定了正确的触发器类型:进入Cognito控制台→对应用户池→用户池属性→Lambda触发器,检查触发器类型选择的是Post confirmation,且关联的Lambda函数为你编写的目标函数,不要和Pre sign-up、Post authentication等其他触发器混淆。
- 检查关联的Lambda版本/别名:如果你给Lambda配置了多版本或别名,确认Cognito绑定的是最新的版本/别名,而非旧的无效版本。
- 验证Cognito的Lambda调用权限:正常绑定触发器时AWS会自动生成调用权限,如果你是手动关联或者权限被误删,可进入Lambda控制台→对应函数→配置→权限→基于资源的策略,检查是否存在允许
cognito-idp.amazonaws.com调用该函数的策略,且策略中指定的用户池ARN和你在用的一致。
二、触发条件匹配排查
- Post confirmation触发器仅在用户主动完成账户确认时触发,以下场景不会触发:
- 管理员在AWS控制台手动创建用户、手动将用户标记为已确认
- 用户池开启了自动确认用户、无需验证即可登录的配置,用户注册后自动标记为已确认,未走主动确认流程
- 你当前的前端代码调用了
Auth.confirmSignUp,符合触发条件,可额外检查用户池是否开启了跳过验证的相关开关,导致用户未走正式确认流程。
三、Lambda基础配置排查
- 检查Lambda执行角色的CloudWatch日志权限:如果Lambda的执行角色没有
logs:CreateLogGroup、logs:CreateLogStream、logs:PutLogEvents权限,即使Lambda被触发也不会生成日志,会被误判为未触发。你可以手动给Lambda构造测试事件执行,验证是否能正常生成CloudWatch日志。 - 确认Lambda和Cognito用户池在同一AWS区域:跨区域的Lambda触发器绑定不生效。
额外代码问题提示(触发后可提前修复)
你的Lambda代码存在两个可优化的点,避免触发后执行异常:
- variables参数字段写反:当前代码为
userEmail:name, userName:email,实际应该是userEmail:email, userName:name,否则插入Hasura的用户数据会字段错乱。 - async handler中不要混用
await和callback,建议直接返回event即可,不需要调用callback,避免异步逻辑未执行完就提前返回,导致GraphQL请求没有成功发出。
内容的提问来源于stack exchange,提问作者9rnt
相关产品推荐
相关产品推荐

