无法在 Lambda (nodejs) 中使用 s3 函数
Can't use s3 functions in Lambda (nodejs)
我是 AWS Lambda 的新手,我正在为在 nodejs 中调用 S3 APIs 而烦恼。我想读取 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();
});
}
我是 AWS Lambda 的新手,我正在为在 nodejs 中调用 S3 APIs 而烦恼。我想读取 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();
});
}