我正在尝试复制上传到 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();
});
};
什么可能导致 lambda 在 AWSCopyObject 回调之前退出?根据https://aws.amazon.com/blogs/compute/container-reuse-in-lambda/这个错误表明 context.done() 永远不会被击中。