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

AWS Cognito过期临时密码重置:如何自定义邮件而非默认邮件?

AWS Cognito 过期账户重置与自定义邮件方案

问题背景

通过AdminCreateUser API创建的Cognito用户,若未在临时密码有效期(7天)内登录,登录时会报错:

用户账户已过期,必须由管理员重置。

当前删除重创建用户的方式效率低下,现需解决两个需求:要么仅重置账户过期限制,要么在使用AdminCreateUser+MessageAction=RESEND时发送自定义邮件。

可行解决方案

1. 仅重置账户过期限制(不发送默认邮件)

使用AdminSetUserPassword API替代低效的删除重创建操作:

  • 调用时传入目标用户名,设置Permanent=false(生成新的临时密码)
  • 同时指定MessageAction=SUPPRESS,避免Cognito发送默认邮件
  • 该操作会直接重置用户账户的过期状态,生成新的临时密码,之后你可通过自有渠道(如内部邮件服务)将新临时密码发送给用户

示例调用参数(伪代码):

adminSetUserPassword({
  UserPoolId: '你的用户池ID',
  Username: '目标用户名',
  Password: '可指定临时密码,或留空让Cognito自动生成',
  Permanent: false,
  MessageAction: 'SUPPRESS'
})

2. 使用RESEND时发送自定义邮件

通过Cognito的自定义消息Lambda触发器拦截并替换默认邮件内容:

  1. 在AWS Lambda控制台创建处理自定义消息的函数
  2. 在Cognito用户池的「触发器」设置中,启用「自定义消息」触发器并关联该Lambda函数
  3. 在Lambda函数中,判断事件的triggerSource为CustomMessage_AdminCreateUser(对应RESEND触发的邀请场景),修改返回的邮件主题和正文为自定义内容

示例Lambda代码片段:

exports.handler = (event, context, callback) => {
  if (event.triggerSource === 'CustomMessage_AdminCreateUser') {
    // 自定义邮件主题
    event.response.emailSubject = '你的账户激活通知';
    // 自定义邮件正文,通过event.request.codeParameter获取临时密码
    event.response.emailMessage = `您好,你的临时登录密码是:${event.request.codeParameter},请在7天内登录并修改密码。`;
  }
  callback(null, event);
};

设置完成后,调用AdminCreateUser+MessageAction=RESEND时,Cognito会触发该Lambda发送自定义邮件,同时重置账户过期限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:40:27