Node.js 在AWS lambda上列出cognito用户池用户
我试图在lambda函数中列出我的所有cognito用户,但是我在返回中什么也没有得到,就好像回调没有执行一样。我做错了什么 下面代码的输出只是在控制台中向我打了个招呼Node.js 在AWS lambda上列出cognito用户池用户,node.js,amazon-web-services,aws-lambda,amazon-cognito,serverless-framework,Node.js,Amazon Web Services,Aws Lambda,Amazon Cognito,Serverless Framework,我试图在lambda函数中列出我的所有cognito用户,但是我在返回中什么也没有得到,就好像回调没有执行一样。我做错了什么 下面代码的输出只是在控制台中向我打了个招呼 var AWS = require("aws-sdk"); const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider(); export async function main() { console.log("hello")
var AWS = require("aws-sdk");
const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
export async function main() {
console.log("hello")
var params = {
UserPoolId: "myuserpoolid",
AttributesToGet: ["username"]
};
cognitoidentityserviceprovider.listUsers(params, (err, data) => {
if (err) {
console.log(err, err.stack);
return err;
} else {
console.log(data);
return data;
}
});
}
首先,代码的结构是错误的。Lambda函数的头应该具有特定的结构,可以使用异步函数,也可以使用非异步函数。因为您在示例中使用的是非异步代码,所以稍后我将向您展示如何执行
var AWS = require("aws-sdk");
const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
exports.handler = function(event, context, callback) {
console.log("hello")
var params = {
UserPoolId: "myuserpoolid",
AttributesToGet: ["username"]
};
cognitoidentityserviceprovider.listUsers(params, (err, data) => {
if (err) {
console.log(err, err.stack);
callback(err) // here is the error return
} else {
console.log(data);
callback(null, data) // here is the success return
}
});
}
在这种情况下,Lambda将仅在调用callback
时(或当它超时时)完成
类似地,您可以使用异步函数,但需要相应地重新构造代码。下面是一个例子。请注意如何使用承诺包装器
const https = require('https')
let url = "https://docs.aws.amazon.com/lambda/latest/dg/welcome.html"
exports.handler = async function(event) {
const promise = new Promise(function(resolve, reject) {
https.get(url, (res) => {
resolve(res.statusCode)
}).on('error', (e) => {
reject(Error(e))
})
})
return promise
}
对于AttributesToGet,不要使用用户名,因为它是始终返回的字段之一。以下是属性数组的成员,可在AttributesToGet字段中使用: sub,电子邮件已验证,电话号码已验证,电话号码,电子邮件 e、 g
尝试删除函数中的
async
关键字
AttributesToGet: ["email","email_verified"]