如何将验证代码传递给Lambda函数

时间:2019-04-18 22:08:19

标签: aws-lambda amazon-cognito

如果用户忘记密码,我正在尝试自定义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内获取验证码以使用它吗?

1 个答案:

答案 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的设计,这似乎是不可能的。