配置Cognito Pre-SignUp触发器后Lambda Event为空问题咨询
Cognito Pre-SignUp Lambda触发器Event为空的原因及排查步骤
配置了Cognito用户池的Pre-SignUp Lambda触发器后,用户注册成功,但Lambda函数的event参数为空对象{},日志显示无有效event数据。以下是可能的原因及排查方法:
可能的原因及解决步骤
1. 错误的测试方式
若直接在Lambda控制台点击「测试」按钮触发函数,默认测试事件为空对象{}。Cognito触发器的event仅在通过实际注册流程触发时才会携带用户注册相关数据(比如用户调用SignUp API、通过前端注册页面提交信息)。
- 解决:通过Cognito实际注册流程触发Lambda,例如调用
AdminCreateUserAPI或用户端发起SignUp请求,再查看Lambda日志。
2. 触发器配置错误
- 检查触发器类型:在Cognito用户池的「触发器」页面,确认Pre-SignUp对应的Lambda函数是你创建的
setCustomAttribsP,且触发器类型为Pre-SignUp(而非Post-Confirmation等其他类型)。 - 确认配置已保存:修改触发器设置后,务必点击页面底部的「保存更改」,否则配置不会生效。
3. 区域不匹配
你的Lambda函数部署在eu-central-1区域,需确认Cognito用户池也处于同一区域。跨区域的触发器无法正确传递event数据。
- 解决:检查Cognito用户池的区域设置,确保与Lambda函数区域一致。
4. 触发器关联异常
若Lambda函数是在配置触发器后创建,或关联过程中权限配置有误,可能导致Cognito无法传递event:
- 检查Lambda执行角色的信任关系:确保角色的信任策略包含Cognito服务主体
cognito-idp.amazonaws.com,允许Cognito调用该Lambda函数。 - 重新关联触发器:在Cognito触发器页面,先移除当前的Pre-SignUp触发器,再重新选择目标Lambda函数并保存配置。
5. 特殊注册场景影响
如果使用AdminCreateUser API创建用户,Pre-SignUp触发器的event结构与普通自助注册不同,但不会是空对象;若通过第三方身份提供商(如Google、Facebook)注册,需确认身份提供商配置是否正确传递用户信息至Cognito。
你查阅的关于API Gateway的问题不适用于当前场景,因为你的Lambda由Cognito触发器触发,而非API Gateway,因此无需查找API Gateway的代理设置或Resources按钮。
内容的提问来源于stack exchange,提问作者mascai
相关产品推荐
相关产品推荐

