You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Golang SDK在Amazon Cognito用户池中创建新用户?

解决Go SDK集成Amazon Cognito创建用户的问题

错误原因分析

  • SignUp接口报错:用户池不允许用户注册
    这个接口是给用户自助注册用的,当你的用户池关闭了自助注册功能(控制台默认可能关闭,或手动设置过),调用该接口就会触发这个错误。你的需求是后端创建用户,因此应放弃使用SignUp,改用管理员创建用户的接口。

  • AdminCreateUser接口报错:"user doesn't exist"
    这个看似矛盾的错误,大概率是参数配置错误导致:

    • 传入的Username不是用户邮箱(若用户池设置邮箱作为用户名属性)
    • UserAttributes中未正确设置email属性,或email值与Username不一致
    • email_verified属性值格式错误(必须是字符串"true",而非布尔值)
    • 用户池ID填写错误,请求发到了不存在的用户池

正确实现步骤

1. 确认用户池配置

  • 进入Cognito用户池控制台,在属性设置中,将用户名属性设为邮箱
  • 确保用户池的邮件设置正常(已配置SES或使用Cognito默认邮件服务,能发送邀请邮件)

2. 正确调用AdminCreateUser接口

以下是符合需求的Go SDK代码示例:

package main

import (
	"context"
	"fmt"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider"
	"github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider/types"
)

func createUser(client *cognitoidentityprovider.Client, userPoolID, email string) error {
	input := &cognitoidentityprovider.AdminCreateUserInput{
		UserPoolId: aws.String(userPoolID),
		Username:   aws.String(email), // 用户名必须是邮箱,与用户池配置一致
		UserAttributes: []types.AttributeType{
			{
				Name:  aws.String("email"),
				Value: aws.String(email),
			},
			{
				Name:  aws.String("email_verified"),
				Value: aws.String("true"), // 必须是字符串"true",不能用布尔值
			},
		},
		AutoGeneratePassword: aws.Bool(true), // 自动生成密码
		// MessageAction默认是"RESEND",会自动发送邀请邮件,无需额外设置
	}

	_, err := client.AdminCreateUser(context.TODO(), input)
	if err != nil {
		return fmt.Errorf("failed to create user: %w", err)
	}
	return nil
}

3. 权限验证

确保SDK使用的IAM凭证拥有以下权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "cognito-idp:AdminCreateUser",
            "Resource": "arn:aws:cognito-idp:你的区域:你的账号ID:userpool/你的用户池ID"
        }
    ]
}

额外注意事项

  • 若需自定义邀请邮件内容,可在用户池的消息自定义中配置邮件模板
  • 若仍报错,检查请求中的用户池ID、邮箱格式是否正确,确保无拼写错误

内容的提问来源于stack exchange,提问作者Shabd Saran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 23:52:48