使用数字值更新 AWS cognito 上的自定义用户属性(通过 post 确认触发器/lambda 函数)

Updating custom user attributes on AWS cognito with a number value (via a post confirmation trigger / lambda function)

我的用户池中有一个 lambda 触发器(post 确认 lambda 触发器),它调用以下代码:

sess, err := session.NewSession()
    if err != nil {
        fmt.Println("failed to create session", err.Error())
    }

    svc := cognitoidentityprovider.New(sess)

    params := &cognitoidentityprovider.AdminUpdateUserAttributesInput{
        UserAttributes: []*cognitoidentityprovider.AttributeType{
            {
                Name:  aws.String("custom:onboarding"),
                Value: aws.Int(0),
            },
        },
        UserPoolId: aws.String("xxxxx"),
        Username:   aws.String("xxxxx"),
    }

    resp, err := svc.AdminUpdateUserAttributes(params)
    if err != nil {
        fmt.Println("resp error: ", err.Error())
    }
    fmt.Println(resp)

我收到以下错误:

.\main.go:36:5: cannot use "github.com/aws/aws-sdk-go-v2/aws".Int(0) (type *int) as type *string in field value

该值必须是整数,因为自定义属性在 cognito 中设置为数字。

我在这里错过了什么?或者这不是正确的方法?

提前致谢

我找到了答案。正如 isavinof 所说,该值具有字符串类型,最初无法正常工作,但结果是权限错误( AccessDeniedException )。

为了解决这个问题,我遵循了这个答案:

我。创建策略(用于许可)

  • 转到 IAM 控制台 -> 策略 -> 创建策略。
  • 选择“Cognito 用户池”服务。
  • 指定您需要权限的所需操作(列表、读取、
    等)在这种情况下,它被写入 -> AdminUpdateUserAttributesInput
  • 指定资源 - 用户池区域和 ID
  • 选择请求条件(可选)。
  • 添加标签(可选)- 有助于在大量政策列表中进行搜索
  • 给出政策的名称和描述 - 准确无误,因为它有助于确保 下一阶段你选对了
  • 单击“创建策略”按钮。 已创建政策。

二.为用户添加政策:

  • 转到IAM控制台->用户(在本例中是角色,而不是用户,然后找到lambda函数角色。如果您不知道,请在lambda后端,权限下查看)
  • Select想要的角色。
  • 在权限选项卡中,单击添加权限。
  • 单击“直接附加现有策略”。
  • 搜索您刚刚创建的策略。
  • 点击“添加权限” 问题已解决。