ในโปรเจ็กต์ 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
s IDE (NetBeans) ของฉันจะแสดงข้อผิดพลาดและปฏิเสธที่จะแสดงค่าของข้อมูล ในขณะนี้ก็อาจจะเป็น IDE getObject
ที่ฉันตัดสินใจที่จะลองวิธีอื่นในการใช้งาน
aws.getObject(params).on('httpData', function(chunk){
console.log(chunk);
}).on('httpDone', function(data){
console.log(data);
});
สิ่งนี้ไม่ส่งผลอะไรเลย การใส่เบรกพอยต์แสดงว่าโค้ดไม่ไปถึงconsole.log
s อย่างใดอย่างหนึ่ง ฉันยังลอง:
aws.getObject(params).on('success', function(data){
console.log(data);
});
อย่างไรก็ตามสิ่งนี้ยังไม่ส่งออกอะไรและการวางเบรกพอยต์แสดงว่าconsole.log
ไม่ถึงจุด
ผมทำอะไรผิดหรือเปล่า?
aws
วัตถุของคุณเป็นตัวอย่างใหม่ของaws.S3
วัตถุหรือไม่? นอกจากนี้การตอบสนองจากgetObject()
การส่งกลับไปยังการตอบกลับ http หรือกำลังถูกส่งไปยังไฟล์?