5

S3 バケットにアップロードされたファイルをコピーして、タイムスタンプ付きのバックアップを作成しようとしています。(パーマリンクを維持するために、「ライブ」ファイルは定期的に上書きされます)

ただし、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 コールバックの前にラムダが終了する原因は何ですか? https://aws.amazon.com/blogs/compute/container-reuse-in-lambda/によると、このエラーは context.done() がヒットしないことを示唆しています。

4

1 に答える 1