【问题标题】:How to upload an object into S3 in Lambda?如何在 Lambda 中将对象上传到 S3?
【发布时间】:2015-09-04 18:56:25
【问题描述】:

似乎无法在 Lambda 中将对象上传到 S3。在本地一切正常。日志中没有错误会显示出什么问题...

代码如下:

console.log('Loading function');
var AWS = require('aws-sdk');
var s3 = new AWS.S3();

exports.handler = function(event, context) {
    //console.log(JSON.stringify(event, null, 2));
    var s3 = new AWS.S3();
    var param = {Bucket: 'flow-logs', Key: 'test-lambda-x', Body: 'me me me'};
    console.log("s3");
    s3.upload(param, function(err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else console.log(data);           // successful response
    });
    console.log('done');
    context.done();
};

成功运行,没有错误,但似乎没有调用 s3.upload 中的回调。桶中没有对象被创建。

通过授予完全访问权限以及在本地进行测试,验证 IAM 角色权限不是问题。

输出

START RequestId: d4847fdb-160c-11e5-8a8c-b555b123e14d
2015-06-18T22:53:29.750Z    d4847fdb-160c-11e5-8a8c-b555b123e14d    s3
2015-06-18T22:53:30.271Z    d4847fdb-160c-11e5-8a8c-b555b123e14d    done
END RequestId: d4847fdb-160c-11e5-8a8c-b555b123e14d

【问题讨论】:

标签: javascript amazon-web-services amazon-s3 aws-lambda


【解决方案1】:

我怀疑你在s3.upload() 有机会返回之前调用了context.done() 函数。如果您将context.done() 移动到上传响应代码块中,它应该可以工作。

var AWS = require('aws-sdk');
var s3 = new AWS.S3();

exports.handler = function(event, context) {
    //console.log(JSON.stringify(event, null, 2));
    var s3 = new AWS.S3();
    var param = {Bucket: 'flow-logs', Key: 'test-lambda-x', Body: 'me me me'};
    console.log("s3");
    s3.upload(param, function(err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else console.log(data);           // successful response

        console.log('actually done!');
        context.done();
    });

    console.log('done?');
    //context.done();
};

【讨论】:

  • @KatharineOsborne 如果有效,请接受答案。这有助于社区中的其他人。
  • @ParthapratimNeog 我会,但我没有问这个问题 ;-)
  • @KatharineOsborne 我明白了。我的错。 :)
  • 救了我的*命 :)
猜你喜欢
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
  • 2022-11-09
  • 2020-09-04
  • 1970-01-01
相关资源
最近更新 更多