AWS Lambda copyObject"在完成请求之前退出流程"

时间:2015-05-21 14:48:16

标签: node.js amazon-web-services amazon-s3 aws-lambda

我正在尝试复制上传到S3存储桶的文件以创建带时间戳的备份。 (' live'文件将定期覆盖以维护perma-link)

然而,

AWScopyObject似乎没有执行。我收到以下错误

 {
       "errorMessage": "Process exited before completing request"
 }

导致此错误的代码如下:

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

exports.handler = function(event, context) {
    var srcBucket = event.Records[0].s3.bucket.name;
    var srcKey    = event.Records[0].s3.object.key;
    var dstKey    = srcBucket+'/backup/'+ Date.now() + '-' +srcKey;

    console.log(srcKey);
    console.log(dstKey);

    var copyParams = {
        Bucket: srcBucket,
        CopySource : srcBucket + '/' + srcKey,
        Key: dstKey
    };

s3.copyObject(
    copyParams,
    function (err, data) {
        if (err) {
            console.log("ERROR copyObject");
            console.log(err);
        }
        else {
            console.log('SUCCESS copyObject');
        }
        context.done();
    });

};

在AWSCopyObject回调之前可能导致lambda退出的原因是什么?根据{{​​3}},此错误表明context.done()永远不会被命中。

1 个答案:

答案 0 :(得分:5)

我遇到了类似的问题,似乎只有在我尝试使用AWS Lambda控制台进行测试时才会出现问题,但是当我尝试使用真正的存储桶执行测试(上传测试文件)并成功执行Lambda函数时。

尝试查看'日志输出'您将获得有关实际错误的详细信息。

由于