.NET डेवलपर के लिए S3 और क्लाउड स्टोरेज का परिचय
Amazon S3 (Simple Storage Service) प्रोटोकॉल के साथ संगत क्लाउड ऑब्जेक्ट स्टोरेज, असंरचित डेटा: इमेज, वीडियो, बैकअप, लॉग और बिल्ड आर्टिफैक्ट को स्टोर करने के लिए डी-फैक्टो मानक बन गए हैं। C# (.NET) इकोसिस्टम में, ऐसे स्टोरेज के साथ कार्य आधिकारिक AWS SDK for .NET या S3-संगत समाधानों (MinIO, Yandex Object Storage, DigitalOcean Spaces) के लिए हल्के क्लाइंट के माध्यम से कार्यान्वित किया जाता है।
इस लेख में, हम मुख्य संचालनों को समझेंगे: कनेक्शन, बकेट बनाना, ऑब्जेक्ट अपलोड करना, डाउनलोड करना और हटाना। सभी उदाहरण .NET 8 का उपयोग करके C# में लिखे गए हैं।
.NET के लिए AWS SDK लाइब्रेरी स्थापित करना
C# से S3 के साथ कार्य करने के लिए, NuGet पैकेज AWS SDK for .NET — S3 स्थापित करना आवश्यक है:
dotnet add package AWSSDK.S3dotnet add package AWSSDK.Extensions.NETCore.Setup // DI-एकीकरण के लिएयदि आप MinIO या अन्य S3-संगत स्टोरेज (AWS नहीं) का उपयोग कर रहे हैं, तो वही पैकेज पर्याप्त है - यह कस्टम endpoint का समर्थन करता है।
S3-क्लाइंट का मूल सेटअप
S3 के साथ कार्य करने के लिए एक क्लाइंट बनाते हैं। नीचे दिए गए उदाहरण में MinIO का उपयोग किया गया है, जो पोर्ट 9000 पर स्थानीय रूप से चल रहा है:
using Amazon;using Amazon.S3;using Amazon.Runtime;
var config = new AmazonS3Config{ ServiceURL = "http://localhost:9000", // MinIO या अन्य S3-संगत स्टोरेज के लिए ForcePathStyle = true, // MinIO के लिए अनिवार्य UseHttp = true};
var credentials = new BasicAWSCredentials("minioadmin", "minioadmin");var s3Client = new AmazonS3Client(credentials, config);AWS S3 के लिए, केवल क्षेत्र निर्दिष्ट करना और मानक credentials का उपयोग करना पर्याप्त है:
var s3Client = new AmazonS3Client(RegionEndpoint.EUWest1);बकेट बनाना और हटाना
बकेट बनाना
public async Task CreateBucketAsync(string bucketName){ var putBucketRequest = new PutBucketRequest { BucketName = bucketName, UseClientRegion = true }; var response = await s3Client.PutBucketAsync(putBucketRequest); Console.WriteLine($"बकेट {bucketName} बनाया गया। HTTP स्थिति: {response.HttpStatusCode}");}बकेट के अस्तित्व की जाँच करना
public async Task<bool> DoesBucketExistAsync(string bucketName){ return await AmazonS3Util.DoesS3BucketExistAsync(s3Client, bucketName);}बकेट हटाना
public async Task DeleteBucketAsync(string bucketName){ await s3Client.DeleteBucketAsync(bucketName); Console.WriteLine($"बकेट {bucketName} हटा दिया गया।");}फ़ाइलें अपलोड करना
सबसे सामान्य परिदृश्य - बकेट में फ़ाइल अपलोड करना। PutObjectAsync का उपयोग करें:
public async Task UploadFileAsync(string bucketName, string key, string filePath){ var putRequest = new PutObjectRequest { BucketName = bucketName, Key = key, FilePath = filePath, ContentType = "application/octet-stream" };
var response = await s3Client.PutObjectAsync(putRequest); Console.WriteLine($"फ़ाइल {key} अपलोड हुई। ETag: {response.ETag}");}स्ट्रीम से अपलोड करना - वेब फॉर्म के माध्यम से उपयोगकर्ता से प्राप्त फ़ाइलों के लिए उपयोगी:
public async Task UploadFromStreamAsync(string bucketName, string key, Stream inputStream){ var putRequest = new PutObjectRequest { BucketName = bucketName, Key = key, InputStream = inputStream }; await s3Client.PutObjectAsync(putRequest);}फ़ाइलें डाउनलोड करना
ऑब्जेक्ट को फ़ाइल या स्ट्रीम में डाउनलोड किया जा सकता है:
public async Task DownloadFileAsync(string bucketName, string key, string downloadPath){ पुस्तकालय में भी
जावास्क्रिप्ट (Node.js) पर ईमेल भेजना: nodemailer, sendgrid, mailgun
C# (.NET) अनुप्रयोग कॉन्फ़िगरेशन: लाइब्रेरी और उपकरण
Rust के लिए CLI फ्रेमवर्क: कमांड लाइन उपयोगिताएँ बनाने के लिए सर्वश्रेष्ठ उपकरणों का अवलोकन
Kotlin में CSV के साथ कार्य: लाइब्रेरीज़ और कोड उदाहरण
Apache HttpClient Java: पूर्ण गाइड उदाहरणों के साथ