我是第一次使用JS编写Lambda。我希望能够列出我拥有的S3存储桶,但是,在lambda下面不会返回我期望的值,即。时段清单。我做错了什么?我唯一了解的是我的Cloudwatch日志中未打印“ console.log('hihi')”行,因此在调用listBuckets()时发生了某些情况,但我看不到任何相关的日志。 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
处理程序。因此,在您的lambda确实返回之前,listBucket
有机会执行。一种克服方法是通过AWS文档中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
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句