#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")
}
Кроме того, предыдущий исходный код, который работал не так, как ожидалось, когда я опубликовал этот вопрос, в настоящее время работает (без изменений с моей стороны).