簡體   English   中英

來自 Lambda 的 AWS Cognito adminCreateUser,使用 Amplify CLI 創建

[英]AWS Cognito adminCreateUser from Lambda, created with Amplify CLI

我使用 Amplify CLI 創建了一個 Lambda function,在執行 Lambda 時 function 執行時沒有錯誤,但沒有創建 Cognito 用戶。

我在這里錯過了什么?

我已經檢查了 CloudWatch Logs,但也沒有我可以發現的錯誤。

我一直在關注這個文檔: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityServiceProvider.html#adminCreateUser-property

/* Amplify Params - DO NOT EDIT
    AUTH_XXXXXXXXXXXXXXXXXXXX_USERPOOLID
    ENV
    REGION
Amplify Params - DO NOT EDIT */

const AWS = require('aws-sdk');
AWS.config.update({ region: process.env.AWS_REGION,accessKeyId: process.env.AWS_ACCESS_KEY_ID, secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY });

const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({ apiVersion: '2016-04-18' });

//console.log(process.env);

exports.handler = async (event) => {
    let retailerid = event.pathParameters.retailerid;

    let params = {
        UserPoolId: process.env.AUTH_XXXXXXXXXXXXXXXXXXXX_USERPOOLID, /* required */
        Username: 'testtest', /* required */
        ClientMetadata: {
        },
        DesiredDeliveryMediums: [
            'EMAIL'
        ],
        ForceAliasCreation: false,
        MessageAction: 'SUPPRESS',
        TemporaryPassword: 'mynuw000000000TTS',
        UserAttributes: [
            {
                Name: 'custom:app_role', /* required */
                Value: 'retail'
            },
            {
                Name: 'email_verified', /* required */
                Value: 'true'
            },
            {
                Name: 'email', /* required */
                Value: 'usersname@someemail.co.za'
            },
            {
                Name: 'phone_number', /* required */
                Value: '27833260000'
            },
            /* more items */
        ],
        ValidationData: [

            /* more items */
        ]
    };
    await cognitoidentityserviceprovider.adminCreateUser(params, function (err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else console.log('SUCCESS', data);           // successful response
    });

    // TODO implement
    const response = {
        statusCode: 200,
        //  Uncomment below to enable CORS requests
        headers: {
            "Access-Control-Allow-Origin": "*"
        },
        body: JSON.stringify(retailerid),
    };
    return response;
};

在此處輸入圖像描述 測試活動

{
 "request": {
"userAttributes": {
  "custom:name": "Ajay",
  "email": "ajay@gmail.com",
  "custom:role": "Admin"
}
},
"response": {}
 }

Lambda Function

var AWS = require('aws-sdk');

var resp200ok = { statusCode: 200, headers: {'Content-Type': 'application/json'}, body: {} };

var cognitoidentityserviceprovider = new 
       AWS.CognitoIdentityServiceProvider({apiVersion: '2016-04-18'});


exports.handler = function(event, context, callback){
const attributes = event.request.userAttributes;  // read user attributes from event

console.log('User Role : ',attributes['custom:role'])

 var params = {
    UserPoolId:'*********',
    Username: attributes.email,
    //TemporaryPassword: 'Password!1',
    DesiredDeliveryMediums: ["EMAIL"],
    UserAttributes: [
      { 
            Name: "email",
            Value: attributes.email
      },
      {
            Name: 'email_verified', /* required */
            Value: 'true'
      },
      {
            Name: 'custom:name', /* required */
            Value: attributes['custom:name']
      },
      {
            Name: 'custom:role', /* required */
            Value: attributes['custom:role']
      },
    ],
};

cognitoidentityserviceprovider.adminCreateUser(params, function(err, data) {
          if (err) console.log(err, err.stack); // an error occurred
          else     console.log('SUCCESS', data);           // successful response
});

};

我不確定 await 是否有效。 這個怎么樣。

var createUserPromise = cognitoidentityserviceprovider.adminCreateUser(params).promise();

createUserPromise.then(results => {
    // TODO implement
    const response = {
        statusCode: 200,
        //  Uncomment below to enable CORS requests
        headers: {
            "Access-Control-Allow-Origin": "*"
        },
        body: JSON.stringify(retailerid),
    };
    return response;
    })
   .catch(err => {
          console.log("Error: ", err);
          return "err"
        });
await cognitoidentityserviceprovider.adminCreateUser(params).promise()
  .then((data) => {
    console.log('SUCCESS', data);  
  })
  .catch((error) => {
    console.log('ERROR', error);  
  });

這將工作

暫無
暫無

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

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