You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cognito密码重置未触发CustomMessage_ForgotPassword Lambda问题排查

Cognito CustomMessage_ForgotPassword 事件未触发问题解决方案

问题场景

你调用密码重置的代码如下:

import Auth from "@aws-amplify/auth";
...
Auth.forgotPassword(username);

调用后返回成功响应,返回数据如下:

{CodeDeliveryDetails: {…}}
CodeDeliveryDetails:
AttributeName: "email"
DeliveryMedium: "EMAIL"
Destination: "k***@g***.com"
[[Prototype]]: Object
[[Prototype]]: Object

你的Amplify配置符合官方要求:

Amplify.configure({
  Auth: {
    mandatorySignIn: true,
    region: secrets.cognito.region,
    userPoolId: secrets.cognito.poolId,
    userPoolWebClientId: secrets.cognito.webClientId,
    oauth: {
      domain: "auth.domain.com",
    },
  },
});

目前已确认CustomMessage_SignUp事件可以正常触发自定义Lambda,但CustomMessage_ForgotPassword事件未被触发,且此前流程正常,未修改过代码和Cognito配置,可按以下顺序排查问题:

  • 先重新绑定Lambda触发器:AWS控制台偶尔会出现配置同步异常的情况,你可以先进入Cognito用户池的「触发器」配置页,解绑CustomMessage对应的Lambda,重新选择目标Lambda后保存,等待2-3分钟再测试触发。
  • 检查Lambda调用日志:你以为的未触发可能实际是Lambda被调用后抛出异常直接终止,你可以进入对应Lambda的CloudWatch日志页,筛选密码重置请求对应时间点的日志,确认是否有调用记录、报错信息。
  • 检查Lambda权限配置:确认Lambda的资源策略允许Cognito服务调用,若Lambda近期被修改了VPC配置,需要确保Lambda有公网访问能力,或已经配置了Cognito的VPC端点,否则Cognito无法正常触发Lambda。
  • 检查Amplify依赖版本:若你项目的依赖没有锁版本,可能构建时自动升级了@aws-amplify/auth版本,部分版本的forgotPassword接口逻辑存在变更会跳过自定义消息触发,你可以回退到之前流程正常时的版本再测试。
  • 检查用户池消息配置:进入Cognito用户池的「消息定制」页,确认密码重置邮件的发送选项为使用自定义Lambda触发器,而非默认内置模板,AWS后台偶尔会出现配置默认值被覆盖的异常。
  • 检查CloudTrail日志:搜索CloudTrail中的ForgotPassword事件,查看事件详情中是否有Lambda调用失败的记录,若用户状态异常(如未验证、被禁用)也可能导致触发器跳过。

内容的提问来源于stack exchange,提问作者bkr879

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 22:27:03