簡體   English   中英

Aws cognito 通過管理員 nodejs 創建用戶

[英]Aws cognito create user by admin nodejs

我正在使用 javascript sdk amazon-cognito-identity-js 並且我正在嘗試在 nodejs 中創建一個 cognito 用戶,但下面是我的代碼錯誤:-

var AWS = require("aws-sdk")
var params = {
    UserPoolId: "id",
    Username: req.body.username,
    DesiredDeliveryMediums: ["EMAIL"],
    ForceAliasCreation: false,
    TemporaryPassword: req.body.password,
    UserAttributes: [
      { Name: "name", Value: req.body.name },
      { Name: "email", Value: req.body.user_email}
    ],
 };
let client = new AWS.CognitoIdentityServiceProvider();
client.adminCreateUser(params, function(err, data) {
    if (err) {
        console.log("EE",err);
      //  reject(err);
    } else {
        console.log("DDD",data);
        //resolve(data);
    }
})

但是我在使用代碼時遇到了這個錯誤:-

EE { UnknownError: Not Found at Request.extractError (/var/task/node_modules/aws-sdk/lib/protocol/json.js:48:27) }

請幫我解決這個問題。

這是解決方案。

先決條件 如果您想在 aws-sdk(手動流程)中使用憑證 1. 創建 IAM 用戶並為您的用戶分配 Cognito 角色。 2. 為該用戶生成訪問密鑰和秘密密鑰。 3. 在 aws-sdk 中使用該訪問密鑰和秘密密鑰。

像這樣,

let AWS = require("aws-sdk");
AWS.config.update({
    accessKeyId: "YOURKEY",
    secretAccessKey: "YOURSECRET",
    region: "YOURREGION"
});

創建CognitoIdentityServiceProvider類的對象

const COGNITO_CLIENT = new AWS.CognitoIdentityServiceProvider({
  apiVersion: "2016-04-19",
  region: "us-east-1"
});


var poolData = {
    UserPoolId: "XXXXXXXXX",
    Username: "kurulezomi@themailpro.net",
    DesiredDeliveryMediums: ["EMAIL"],
    TemporaryPassword: "Abc@321",
    UserAttributes: [
      {
        Name: "email",
        Value: "kuri@themailpro.net"
      },
      {
        Name: "email_verified",
        Value: "true"
      }
    ]
  };
  COGNITO_CLIENT.adminCreateUser(poolData, (error, data) => {
    console.log(error);
    console.log(data);
    callback(null, {
      statusCode: 200,
      body: JSON.stringify(data)
    });
  });

或者,您可以直接將 IAM 角色分配給您的 EC2 實例,在這種情況下,您無需在AWS.config部分中設置憑證。

關於這個 NODE.JS 示例:此示例適用於 JavaScript 版本 2 (v2) 的 AWS SDK。 目的:admin-create-user.js 演示管理員如何使用 Amazon Cognito 創建用戶。

輸入:

  • 用戶池ID
  • EMAIL

亞馬遜配置

const AWS = require("aws-sdk");

AWS.config.update({
  accessKeyId : "Your accessKeyId ",
  secretAccessKey: "secretAccessKey",
});

創建 COGNITO_CLIENT

const COGNITO_CLIENT = new AWS.CognitoIdentityServiceProvider({
  apiVersion: "2022-10-03",
  region: "us-east-1",
});

創建用戶

const createUser = async (user) => {
  try {
    const { emailId, password } = user;
    const cognitoParams = {
      UserPoolId: userPoolId,
      Username: emailId,
      UserAttributes: [
        {
          Name: "email",
          Value: emailId,
        },
        {
          Name: "email_verified",
          Value: "true",
        },
      ],
      TemporaryPassword: password || "Password@123456789",
    };

    console.log(cognitoParams.TemporaryPassword);

    let response = await COGNITO_CLIENT.adminCreateUser(
      cognitoParams
    ).promise();
    console.log(JSON.stringify(response));
    return "user created";
  } catch (err) {
    throw Error(err);
  }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM