Node.js AWS Lambda使用ListBucket()列出S3存储桶没有效果

Node.js AWS Lambda使用ListBucket()列出S3存储桶没有效果,node.js,amazon-web-services,amazon-s3,aws-lambda,Node.js,Amazon Web Services,Amazon S3,Aws Lambda,我对用JS编写Lambda还不熟悉。我希望能够列出我拥有的S3存储桶,但是,下面的lambda并没有返回我所期望的,即存储桶列表。 我做错了什么?我知道的唯一一件事是“console.log('hihi')”一行没有打印在我的Cloudwatch日志中,因此调用ListBucket()时发生了一些事情,但我看不到任何相关日志。。。Tks提前为您提供任何帮助 var AWS = require('aws-sdk'); AWS.config.update({region: 'us-east-1'})

我对用JS编写Lambda还不熟悉。我希望能够列出我拥有的S3存储桶,但是,下面的lambda并没有返回我所期望的,即存储桶列表。 我做错了什么?我知道的唯一一件事是“console.log('hihi')”一行没有打印在我的Cloudwatch日志中,因此调用ListBucket()时发生了一些事情,但我看不到任何相关日志。。。Tks提前为您提供任何帮助

var AWS = require('aws-sdk');
AWS.config.update({region: 'us-east-1'});

exports.handler = async (event) => {
    // Create S3 service object
    var s3 = new AWS.S3({apiVersion: '2006-03-01'});
    var params = {};
    // Call S3 to list the buckets
    s3.listBuckets(params, function(err, data) {
      console.log('hihi')
      if (err) {
        console.log("Error", err);
      } else {
        console.log("Success", data.Buckets);
      }
    });
    
    // TODO implement
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    };
    return response;
};

您正在使用
async
处理程序。因此,在
listBucket
有机会执行之前,您的lambda确实会返回。克服的一种方法是通过
承诺
,如中所示

因此,您可以按如下方式修改代码:

var AWS = require('aws-sdk');
AWS.config.update({region: 'us-east-1'});

exports.handler = async (event) => {
    
    const promise = new Promise(function(resolve, reject) {
        
      // Create S3 service object
      var s3 = new AWS.S3({apiVersion: '2006-03-01'});
      var params = {};
      // Call S3 to list the buckets
      s3.listBuckets(params, function(err, data) {
        console.log('hihi')
        if (err) {
          console.log("Error", err);
        } else {
          console.log("Success", data.Buckets);
        }
      });

    })
    return promise
};