Как передать проверочный код в функцию Lambda - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь настроить электронную почту, которую AWS Cognito отправляет, если пользователь забыл свой пароль.

Требуется {####} заполнитель для кода подтверждения в сообщении электронной почты. Например, если вы делаете event['response']['emailMessage'] = "Your code is {####}", вы получите сообщение Your code is 123456.

Вот пример моей лямбда-функции AWS:

def custom_message_handler(event, context):
    event['response']['emailSubject'] = 'Custom subject'
    event['response']['emailMessage'] = 'Custom email'
    # verification_code = event[...] ???
    return event

Похоже, Cognito генерирует код подтверждения после того, как ваша лямбда вернула сообщение с заполнителем. Можно ли получить код подтверждения внутри вашей лямбды, чтобы использовать его?

1 Ответ

0 голосов
/ 19 апреля 2019

Пользовательское сообщение Amazon Cognito Событие Lambda Trigger JSON не получает числовой код подтверждения. Данные события, доступные для триггера, как указано в официальной документации , указаны следующим образом:

{
  "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>"
  }
}

Вы сможете использовать данные Cognito в лямбда-триггере, только если они доступны в событии или если для них есть отдельный вызов API. Но, учитывая дизайн Amazon Cognito, это не представляется возможным.

...