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() がヒットしないことを示唆しています。