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