Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在AWS lambda上列出cognito用户池用户_Node.js_Amazon Web Services_Aws Lambda_Amazon Cognito_Serverless Framework - Fatal编程技术网

Node.js 在AWS 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")

我试图在lambda函数中列出我的所有cognito用户,但是我在返回中什么也没有得到,就好像回调没有执行一样。我做错了什么

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

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"]