Как отклонить триггер регистрации с помощью GoLang

#amazon-web-services #go #aws-lambda #amazon-cognito

#amazon-веб-сервисы #Вперед #aws-lambda #amazon-cognito

Вопрос:

Я успешно создал лямбда-функцию, используя Go для триггера предварительной регистрации AWS Cognito. Моя проблема в том, что я не могу отказать / отклонить пользователю, если пользовательское поле недействительно (на основе пользовательской логики).

Я возвращаю ошибку, как описано в руководстве AWS Cognito trigger:

 return event, fmt.Errorf("Invalid value for field 'custom:myField'")
  

также я пробовал эти варианты:

  • возвращает пустое событие (для события недопустимо значение nil):

     var emptyEvent events.CognitoEventUserPoolsPreSignup
    return emptyEvent, fmt.Errorf("Invalid value for field 'custom:myField'")
      
  • изменение данных проверки в исходном событии:

     event.Request.ValidationData = map[string]string{"custom:myField": "Invalid value for field 'custom:myField."}
    return event, fmt.Errorf("Invalid value for field 'custom:myField'")
      
  • изменение атрибутов пользователя в исходном событии

     event.Request.UserAttributes["email"] = ""
    return event, fmt.Errorf("Invalid value for field 'custom:myField'")
      

Все эти методы дают сбой, пользователь всегда создается в пуле пользователей.

Каким должен быть правильный способ отклонить запрос на регистрацию с использованием функции GoLang lambda?

Ответ №1:

Похоже, что-то изменилось в триггерах AWS Cognito Lambda, поскольку сегодня я попробовал следующий исходный код, и он сработал так, как ожидалось:

 func handler(event events.CognitoEventUserPoolsPreSignup) (events.CognitoEventUserPoolsPreSignup, error) {
    fmt.Println(event)
    return event, fmt.Errorf("TESTING LAMBDA ERRORS WITH GOLANG")
}
  

Кроме того, предыдущий исходный код, который работал не так, как ожидалось, когда я опубликовал этот вопрос, в настоящее время работает (без изменений с моей стороны).