Node.js में S3 और क्लाउड स्टोरेज के साथ कार्य करने के लिए लाइब्रेरी @aws-sdk/client-s3
क्लाउड स्टोरेज आधुनिक वेब एप्लिकेशन का एक अभिन्न अंग बन गए हैं। वे किसी भी आकार की फ़ाइलों को संग्रहीत और स्थानांतरित करने की अनुमति देते हैं, उच्च उपलब्धता और स्केलेबिलिटी सुनिश्चित करते हैं। JavaScript (Node.js) इकोसिस्टम में, S3-संगत स्टोरेज के साथ कार्य करने के लिए सबसे लोकप्रिय लाइब्रेरी में से एक @aws-sdk/client-s3 है — तीसरी पीढ़ी का आधिकारिक AWS SDK।
यह लाइब्रेरी Amazon S3 के साथ-साथ किसी भी S3-संगत ऑब्जेक्ट स्टोरेज (जैसे MinIO, DigitalOcean Spaces, Yandex Object Storage, VK Cloud) के साथ इंटरैक्ट करने के लिए विधियों का एक पूरा सेट प्रदान करती है। इस लेख में, हम इंस्टॉलेशन, कॉन्फ़िगरेशन और बुनियादी संचालन: अपलोड, डाउनलोड, डिलीट और ऑब्जेक्ट्स की सूची प्राप्त करना शामिल करेंगे।
इंस्टॉलेशन और कनेक्शन
आरंभ करने के लिए, npm के माध्यम से पैकेज इंस्टॉल करें:
npm install @aws-sdk/client-s3इंस्टॉलेशन के बाद, अपने प्रोजेक्ट में आवश्यक क्लासेस इम्पोर्ट करें:
const { S3Client, PutObjectCommand, GetObjectCommand, DeleteObjectCommand, ListObjectsV2Command } = require('@aws-sdk/client-s3');S3 क्लाइंट का कॉन्फ़िगरेशन
S3 से कनेक्ट करने के लिए, क्षेत्र, एक्सेस कुंजियाँ और, यदि आवश्यक हो, एंडपॉइंट (तृतीय-पक्ष स्टोरेज के लिए) निर्दिष्ट करके क्लाइंट का एक इंस्टेंस बनाना आवश्यक है।
const s3Client = new S3Client({ region: 'ru-central1', // आपके स्टोरेज का क्षेत्र endpoint: 'https://storage.yandexcloud.net', // Yandex Object Storage के लिए credentials: { accessKeyId: 'YOUR_ACCESS_KEY', secretAccessKey: 'YOUR_SECRET_KEY' }});यदि आप सीधे Amazon S3 का उपयोग कर रहे हैं, तो एंडपॉइंट निर्दिष्ट करना आवश्यक नहीं है — SDK इसे क्षेत्र के अनुसार स्वचालित रूप से निर्धारित करेगा। MinIO के साथ स्थानीय परीक्षण के लिए, endpoint: 'http://localhost:9000' और forcePathStyle: true निर्दिष्ट करें।
S3 के साथ बुनियादी संचालन
1. फ़ाइल अपलोड (PutObject)
बकेट में फ़ाइल अपलोड करने के लिए, PutObjectCommand कमांड का उपयोग करें। डेटा को स्ट्रिंग, बफ़र या स्ट्रीम के रूप में पास किया जा सकता है।
const uploadFile = async (bucketName, key, body) => { try { const command = new PutObjectCommand({ Bucket: bucketName, Key: key, Body: body, ContentType: 'text/plain' // वैकल्पिक }); const response = await s3Client.send(command); console.log('फ़ाइल अपलोड हुई:', response); } catch (err) { console.error('अपलोड त्रुटि:', err); }};
// उपयोग उदाहरणuploadFile('my-bucket', 'hello.txt', 'नमस्ते, दुनिया!');2. फ़ाइल डाउनलोड (GetObject)
स्टोरेज से ऑब्जेक्ट प्राप्त करने के लिए GetObjectCommand का उपयोग किया जाता है। डेटा एक स्ट्रीम के रूप में लौटाया जाता है, जिसे स्ट्रिंग या बफ़र में बदला जा सकता है।
const downloadFile = async (bucketName, key) => { try { const command = new GetObjectCommand({ Bucket: bucketName, Key: key }); const response = await s3Client.send(command); const str = await response.Body.transformToString('utf-8'); console.log('फ़ाइल की सामग्री:', str); return str; } catch (err) { console.error('डाउनलोड त्रुटि:', err); }};
// उपयोग उदाहरणdownloadFile('my-bucket', 'hello.txt');3. फ़ाइल डिलीट (DeleteObject)
ऑब्जेक्ट को हटाना DeleteObjectCommand कमांड द्वारा किया जाता है।
const deleteFile = async (bucketName, key) => { try { const command = new DeleteObjectCommand({ Bucket: bucketName, Key: key }); await s3Client.send(command); console.log('फ़ाइल हटा दी गई'); } catch (err) { console.error('हटाने में त्रुटि:', err); }};
deleteFile('my-bucket', 'hello.txt');4. ऑब्जेक्ट्स की सूची प्राप्त करना (ListObjectsV2)
बकेट में सभी ऑब्जेक्ट्स को सूचीबद्ध करने के लिए <