gpt4 book ai didi

node.js - 在 AWS lambda 上列出 cognito 用户池用户

转载 作者:太空宇宙 更新时间:2023-11-03 23:51:57 26 4
gpt4 key购买 nike

我试图在我的 lambda 函数中列出我的所有认知用户,但是我在返回中没有得到任何内容,就好像回调没有被执行一样。我做错了什么?

下面代码的输出只是在控制台中向我打了个招呼。

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 函数的 header 应具有一定的结构,可以使用异步函数,也可以使用非异步函数。由于您在示例中使用非异步代码,我将向您展示如何执行后续操作。

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 时(或超时)才会完成。

类似地,您可以使用异步函数,但您需要相应地重组代码。这是取自 official docs 的示例。请注意 Promise 包装器的使用方式。

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
}

关于node.js - 在 AWS lambda 上列出 cognito 用户池用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59009255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com