如何解决AWS Lambda使用listBuckets列出S3存储桶无效
我不熟悉使用JS编写Lambda。我希望能够列出我拥有的S3存储桶,但是,在lambda下面不会返回我期望的值,即。时段清单。 我做错了什么?我唯一了解的是我的Cloudwatch日志中未打印“ console.log('hihi')”行,因此在调用listBuckets()时发生了某些情况,但我看不到任何相关的日志。 。提前谢谢!
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确实返回了。一种克服方法是通过AWS docs中所示的Promise
。
因此,您可以按以下方式修改代码:
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
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。