如何使用GoLang拒绝注册触发器

时间:2019-04-03 15:42:12

标签: amazon-web-services go aws-lambda amazon-cognito

我已经使用Go成功为AWS Cognito的预注册触发器创建了一个lambda函数。 我的问题是,如果自定义字段无效(基于自定义逻辑),我将无法拒绝/拒绝用户。

我正在返回错误,如AWS Cognito触发器的指南所述:

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

我也尝试过以下选项:

  • 返回一个空事件(该事件不允许为零):

    var emptyEvent events.CognitoEventUserPoolsPreSignup
    return emptyEvent, fmt.Errorf("Invalid value for field 'custom:myField'")
    
  • 在原始事件中更改ValidationData:

    event.Request.ValidationData = map[string]string{"custom:myField": "Invalid value for field 'custom:myField."}
    return event, fmt.Errorf("Invalid value for field 'custom:myField'")
    
  • 在原始事件中更改UserAttributes

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

所有这些方法均失败,总是在用户池中创建用户。

使用GoLang lambda函数拒绝注册请求的正确方法应该是什么?

1 个答案:

答案 0 :(得分:0)

好像对AWS Cognito Lambda触发器有所更改,因为今天我尝试了以下源代码,并且按预期工作:

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

此外,当我发布此问题时,先前的源代码无法正常工作(我方面没有任何变化)。