मैं एस 3 में अपलोड की गई फाइल को संसाधित करने की कोशिश कर रहा हूं। चूंकि getObject प्रसंस्करण से पहले असंतुलित मुख्य कार्य समाप्त होता है, और एडब्ल्यूएस 3-4 सेकंड में लैम्ब्डा को मारता है।AWS Lambda के अंदर async क्रियाओं का इंतजार कैसे करें?
भी बदतर, प्रसंस्करण विधि को भी उस में async कार्य किया है - यह http कॉल करता है।
exports.handler = function(event, context) {
// Get the object from the event and show its content type
var bucket = event.Records[0].s3.bucket.name;
var key = event.Records[0].s3.object.key;
var params = {
Bucket: bucket,
Key: key
};
s3.getObject(params, function(err, data) {
if (err) {
...
} else {
processFile(data.Body.toString(), 0);
console.log("ok");
}
});
//need to wait here till processFile is done
};
processFile = function(content, start) {
... build url to call
http.get(url, function(res) {
console.log("Got response: " + res.statusCode + ");
processFile(content, start + 1);
});
}
मुझे पता NodeJS में async है लेकिन यह अमेज़न से शामिल नहीं है कि;:
उच्च स्तर पर, की तरह मेरे कोड दिखता है दोनों की आवश्यकता होती है ('async') या आवश्यकता होती है ('नींद) त्रुटियों का कारण बनती है।
लैम्ब्डा टाइमआउट 60 सेकंड के लिए कॉन्फ़िगर है, लेकिन यह 3-4 सेकंड में बाहर निकालता है।
मैं एडब्ल्यूएस लैम्ब्डा के साथ इसी तरह के मुद्दों को देखने, और बढ़ती निष्पादन विंडो के तार्किक असर नहीं टाइमआउट सेटिंग की पुष्टि कर सकते हैं ... मेमोरी बढ़ाने से आवंटन * करता * लगते उपलब्ध निष्पादन समय बढ़ाने के लिए, लेकिन अजीब प्रभाव अभी भी मनाए जाते हैं। – ericpeters0n
क्या आपको याद है कि आपने इसे कैसे हल किया? – Juvaly