使用数字值更新 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想要的角色。
- 在权限选项卡中,单击添加权限。
- 单击“直接附加现有策略”。
- 搜索您刚刚创建的策略。
- 点击“添加权限”
问题已解决。
我的用户池中有一个 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想要的角色。
- 在权限选项卡中,单击添加权限。
- 单击“直接附加现有策略”。
- 搜索您刚刚创建的策略。
- 点击“添加权限” 问题已解决。