Node.js प्रोजेक्ट में मैं S3 से डेटा वापस लेने का प्रयास कर रहा हूं।
जब मैं उपयोग getSignedURLकरता हूं , तो सब कुछ काम करता है:
aws.getSignedUrl('getObject', params, function(err, url){
console.log(url);
});
मेरे परम हैं:
var params = {
Bucket: "test-aws-imagery",
Key: "TILES/Level4/A3_B3_C2/A5_B67_C59_Tiles.par"
यदि मैं URL आउटपुट को कंसोल पर ले जाता हूं और इसे वेब ब्राउज़र में पेस्ट करता हूं, तो मुझे वह फ़ाइल डाउनलोड करनी होगी जिसकी मुझे आवश्यकता है।
हालांकि, अगर मैं उपयोग करने की कोशिश करता हूं तो मुझे getObjectसभी प्रकार के विषम व्यवहार मिलते हैं। मेरा मानना है कि मैं इसका गलत इस्तेमाल कर रहा हूं। यही मैंने कोशिश की है:
aws.getObject(params, function(err, data){
console.log(data);
console.log(err);
});
आउटपुट:
{
AcceptRanges: 'bytes',
LastModified: 'Wed, 06 Apr 2016 20:04:02 GMT',
ContentLength: '1602862',
ETag: '9826l1e5725fbd52l88ge3f5v0c123a4"',
ContentType: 'application/octet-stream',
Metadata: {},
Body: <Buffer 01 00 00 00 ... > }
null
तो ऐसा प्रतीत होता है कि यह ठीक से काम कर रहा है। हालांकि, जब मैं किसी एक पर ब्रेकपॉइंट console.logलगाता हूं, तो मेरी आईडीई (नेटबाइन्स) एक त्रुटि को फेंक देती है और डेटा के मूल्य को दिखाने से इनकार करती है। हालांकि यह सिर्फ आईडीई हो सकता है, मैंने उपयोग करने के अन्य तरीकों की कोशिश करने का फैसला किया getObject।
aws.getObject(params).on('httpData', function(chunk){
console.log(chunk);
}).on('httpDone', function(data){
console.log(data);
});
यह कुछ भी आउटपुट नहीं करता है। एक ब्रेकपॉइंट लगाने से पता चलता है कि कोड कभी भी एस तक नहीं पहुंचता है console.log। मैंने भी कोशिश की:
aws.getObject(params).on('success', function(data){
console.log(data);
});
हालांकि, यह भी कुछ भी आउटपुट नहीं करता है और ब्रेकपॉइंट रखने से पता चलता है कि console.logकभी नहीं पहुंचा गया है।
मैं क्या गलत कर रहा हूं?
awsवस्तु वास्तव में वस्तु का एक नया उदाहरण हैaws.S3? इसके अलावा, क्या प्रतिक्रियाgetObject()एक http प्रतिक्रिया के लिए वापस पारित किया जा रहा है या यह एक फ़ाइल के लिए पाइप किया जा रहा है?