2015-05-21 13 views
5

Tôi đang cố sao chép các tệp được tải lên một thùng S3 để tạo các bản sao lưu được định thời gian. (tệp 'trực tiếp' sẽ ghi đè định kỳ để duy trì liên kết perma)AWS Lambda copyObject "Quy trình đã thoát trước khi hoàn thành yêu cầu"

AWScopyObject, tuy nhiên, dường như không thực thi. Tôi gặp phải lỗi sau đây

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

Mã gây ra lỗi này như sau;

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(); 
    }); 

}; 

Điều gì có thể khiến lambda thoát ra trước cuộc gọi lại AWSCopyObject? Theo https://aws.amazon.com/blogs/compute/container-reuse-in-lambda/ lỗi này cho thấy context.done() không bao giờ được nhấn.

+0

Có lẽ bản sao chép mất nhiều thời gian hơn dự kiến? Giới hạn thời gian trên lambda là bao nhiêu? Khi bạn chạy mã từ môi trường dev của bạn, mất bao lâu để thực thi? – Max

+0

Bạn đã nhận được giải quyết chưa? Tôi có trường hợp tương tự, sẽ thử java – st78

+0

@ st78 Bạn đã bao giờ giải quyết vấn đề này về phía bạn chưa? Tôi đang gặp vấn đề tương tự. – SMT

Trả lời

5

Tôi gặp phải sự cố tương tự, có vẻ như vấn đề tôi gặp phải khi tôi thử kiểm tra bằng giao diện điều khiển AWS Lambda, Nhưng khi tôi thử thực thi thử nghiệm với thùng thực (tải lên tệp thử nghiệm) và hàm Lambda được thực hiện thành công.

Hãy thử xem 'Đăng xuất', bạn sẽ nhận được thông tin chi tiết hơn về lỗi thực tế mà bạn đang nhận được.

Cảm ơn

+0

Vì nó xảy ra, điều này ít nhiều là vấn đề tôi gặp phải. Bàn điều khiển AWS Lambda không giả lập một tệp tải lên đủ để thử nghiệm hoạt động, một tệp trực tiếp là cần thiết để gọi chính xác. – user3737396

Các vấn đề liên quan