微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Amplify CLI创建的Lambda的AWS Cognito adminCreateUser

如何解决使用Amplify CLI创建的Lambda的AWS Cognito adminCreateUser

我使用Amplify CLI创建了Lambda函数,当执行Lambda函数时,执行没有错误,但未创建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;
};

解决方法

enter image description here 测试活动

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

Lambda 函数

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
});

};

,

我不确定等待正在工作。这样吧。

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);  
  });

这会起作用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。