如何解决使用Amplify CLI创建的Lambda的AWS Cognito adminCreateUser
我使用Amplify CLI创建了Lambda函数,当执行Lambda函数时,执行没有错误,但未创建Cognito用户。
我在这里想念什么?
我已经检查了CloudWatch Logs,但没有检查到我可以选择的错误。
/* 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 函数
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 举报,一经查实,本站将立刻删除。