如果用户忘记密码,我正在尝试自定义AWS Cognito发送的电子邮件。
电子邮件消息中的验证码需要{####}占位符。例如,如果您这样做
event['response']['emailMessage'] = "Your code is {####}"
,您会收到一条消息Your code is 123456
。
这是我的AWS Lambda函数的示例:
def custom_message_handler(event, context):
event['response']['emailSubject'] = 'Custom subject'
event['response']['emailMessage'] = 'Custom email'
# verification_code = event[...] ???
return event
在您的Lambda使用占位符返回邮件后,Cognito似乎生成了验证码。可以在lambda内获取验证码以使用它吗?
答案 0 :(得分:0)
Amazon Cognito的自定义消息Lambda触发器的事件JSON无法获取数字验证码。 official documentation中所述的触发器可用的事件数据如下:
{
"version": 1,
"triggerSource": "CustomMessage_AdminCreateUser",
"region": "<region>",
"userPoolId": "<userPoolId>",
"userName": "<userName>",
"callerContext": {
"awsSdk": "<calling aws sdk with version>",
"clientId": "<apps client id>",
...
},
"request": {
"userAttributes": {
"phone_number_verified": false,
"email_verified": true,
...
},
"codeParameter": "####",
"usernameParameter": "username"
},
"response": {
"smsMessage": "<custom message to be sent in the message with code parameter and username parameter>"
"emailMessage": "<custom message to be sent in the message with code parameter and username parameter>"
"emailSubject": "<custom email subject>"
}
}
仅当事件中有可用的Lambda触发器或有单独的API调用时,您才能在Lambda触发器中使用Cognito数据。但是考虑到Amazon Cognito的设计,这似乎是不可能的。