我是 AWS Lambda 新手,对于在 Nodejs 中调用 S3 API 感到很烦恼。我想读取 S3 对象的内容,所以这是我的代码:
exports.handler = function (event, context) {
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
s3.getObject({
Bucket: 'lambda-bucket',
Key: 'test.html'
}, function (err, data) {
console.log('this is happening!');
console.log(data);
});
context.done();
}
我遵循了 API 文档,但我什至没有看到 CloudWatch 中的第一个日志。我也尝试过 putObject,但似乎效果不佳。我的运行时是nodejs4.3。希望我能在这里得到一些帮助。
谢谢。
请您参考如下方法:
我建议在尝试解决 AWS Lambda 之前先了解异步调用在 NodeJS 中的工作原理。在您的代码中,您在对 s3.getObject() 的调用完成之前调用 context.done() 。这会导致该函数在 S3 调用完成之前终止。将 context.done() 调用移至 getObject 回调中将修复此问题:
exports.handler = function (event, context) {
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
s3.getObject({
Bucket: 'lambda-bucket',
Key: 'test.html'
}, function (err, data) {
console.log('this is happening!');
console.log(data);
// Now that the S3 call is complete,
// we can terminate the Lambda function execution
context.done();
});
}


