Cognito AdminCreateUser场景下自定义邮件模板正文无法生效的问题求助
Cognito AdminCreateUser场景下自定义邮件模板正文无法生效的问题求助
各位好!我最近在做Cognito的自定义消息处理器,目的是通过AdminCreateUser创建新用户时发送完全定制的邮件。现在遇到个头疼的问题:自定义的邮件主题能正常发送,但邮件正文却不生效,Cognito固执地使用它自带的默认模板内容,我翻了半天文档也没找到原因,也不知道该怎么查Cognito这边的日志或者错误信息,实在没辙了来求助!
下面是我的Lambda处理器代码(核心逻辑都保留,省略了一些非关键的分支判断):
import logging, os logger = logging.getLogger() logger.setLevel(logging.INFO) def replace_placeholders(message, attributes): for key, value in attributes.items(): message = message.replace(f'{{{key}}}', value) return message def validate_placeholders(message, required_placeholders): for placeholder in required_placeholders: if f'{{{placeholder}}}' not in message: raise RuntimeError(f"Missing required placeholder: {{{placeholder}}}") def handler(event, context): # 临时日志,用来查看事件的完整内容 logger.info("Event [START]: %s", event) user_attributes = event['request']['userAttributes'] # 核心逻辑:针对AdminCreateUser的触发场景处理自定义邮件 if event['triggerSource'] == 'CustomMessage_AdminCreateUser': # 从环境变量读取预先配置的自定义主题和正文模板 custom_subject = os.environ.get('ADMIN_CREATE_USER_SUBJECT') custom_body = os.environ.get('ADMIN_CREATE_USER_BODY') # 验证模板是否包含必填的占位符 validate_placeholders(custom_body, ['username', 'temporaryPassword']) # 替换占位符后赋值给response对象 event['response']['emailSubject'] = custom_subject event['response']['emailMessage'] = replace_placeholders(custom_body, { 'username': user_attributes['username'], 'temporaryPassword': event['request']['codeParameter'] }) logger.info("Event [END]: %s", event) return event
我已经确认过Lambda的权限是足够的,而且从日志里能看到,event['response']部分确实已经正确设置了自定义的emailMessage内容,但Cognito就是不买账,还是发送默认的正文。有没有大佬遇到过类似的问题?或者有没有什么我漏掉的配置点?麻烦指点一下!
备注:内容来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

