Cognito 投掷用户名应该是电子邮件

Cognito throwing Username should be an email

我正在尝试构建连接到 API 网关 POST 方法的 lambda 函数,该方法将允许用户在给定池中创建和注册认知用户:

def lambda_handler(event, context):
  username = json.dumps(event["body"])

  try:
    response = client.admin_create_user(
      UserPoolId=user_pool,
      Username=username,
      TemporaryPassword="TemporaryPassword1234",
    )

    return response

  except ClientError as e:

        return {
            "statusCode": 400,
            "headers": misc.response_parameters_standard,
            "body": e.response["Error"]["Message"],
        }

电子邮件格式的用户名在活动正文中给出。

我已通过日志记录语句确认用户名变量已成功提取为格式为“name@email.com”的字符串

我已确认 lambda 函数具有以管理员身份访问 cognito 的适当权限。

在 运行 这个 lambda 上,我遇到了以下 ClientError:

Username should be an email.

我直接从 CLI 发送了相同格式的用户名,用户池接受了相同的用户名,没有错误。

json.dumps 转换对象 -> JSON。
json.loads 转换 JSON -> 对象。

如果 event 是 JSON,您想转换 JSON -> 对象,所以请尝试 username = json.loads(event["body"])

如果不是,而您只是将用户名作为字符串传递,请尝试 username = event[“body”]