C# (.NET) में S3 और क्लाउड स्टोरेज: AWS SDK गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# (.NET) में S3 और क्लाउड स्टोरेज के साथ काम करना

आधुनिक क्लाउड तकनीकों में डेटा को सुरक्षित रूप से स्टोर और मैनेज करना ज़रूरी है। ऑब्जेक्ट स्टोरेज के लिए डी-फैक्टो स्टैंडर्ड Amazon S3 (Simple Storage Service) प्रोटोकॉल है। C# (.NET) इकोसिस्टम में S3 और किसी भी S3-संगत स्टोरेज (Yandex Object Storage, MinIO, DigitalOcean Spaces, VK Cloud) के साथ काम करने के लिए आधिकारिक लाइब्रेरी AWS SDK for .NET (पैकेज AWSSDK.S3) का उपयोग किया जाता है।

इस लेख में हम विस्तार से जानेंगे कि लाइब्रेरी को कैसे कनेक्ट करें, क्लाइंट को कॉन्फ़िगर करें, बेसिक ऑपरेशन (अपलोड, डाउनलोड, डिलीट, लिस्टिंग) कैसे करें, और MinIO जैसे लोकल S3-एमुलेटर के साथ काम करने के लिए कोड को कैसे अनुकूलित करें।

लाइब्रेरी इंस्टॉल करना

सबसे पहले, अपने प्रोजेक्ट में NuGet पैकेज जोड़ें:

dotnet add package AWSSDK.S3

या Visual Studio पैकेज मैनेजर के माध्यम से:

Install-Package AWSSDK.S3

S3 क्लाइंट बनाना और कॉन्फ़िगर करना

लाइब्रेरी AmazonS3Client क्लास प्रदान करती है, जिसे किसी भी S3-संगत स्टोरेज के साथ काम करने के लिए कॉन्फ़िगर किया जा सकता है। आइए दो विकल्प देखें: Amazon S3 से कनेक्शन और लोकल MinIO से कनेक्शन।

Amazon S3 से कनेक्ट करना

using Amazon;
using Amazon.S3;
using Amazon.Runtime;

var credentials = new BasicAWSCredentials("आपका_ACCESS_KEY", "आपका_SECRET_KEY");
var config = new AmazonS3Config
{
    RegionEndpoint = RegionEndpoint.EUWest1 // या कोई अन्य रीजन
};

using var client = new AmazonS3Client(credentials, config);

MinIO (लोकल S3 सर्वर) से कनेक्ट करना

using Amazon.S3;
using Amazon.Runtime;

var credentials = new BasicAWSCredentials("minioadmin", "minioadmin");
var config = new AmazonS3Config
{
    ServiceURL = "http://localhost:9000", // MinIO का पता
    ForcePathStyle = true,                // MinIO के लिए अनिवार्य
    UseHttp = true
};

using var client = new AmazonS3Client(credentials, config);

S3 के साथ मुख्य ऑपरेशन

सभी ऑपरेशन क्लाइंट के मेथड के माध्यम से एसिंक्रोनस रूप से किए जाते हैं। आइए मुख्य स्क्रिप्ट्स देखें।

1. फ़ाइल अपलोड करना (Upload)

using Amazon.S3;
using Amazon.S3.Model;

public async Task UploadFileAsync(IAmazonS3 client, string bucketName, string filePath, string key)
{
    var request = new PutObjectRequest
    {
        BucketName = bucketName,
        Key = key,
        FilePath = filePath
    };

    var response = await client.PutObjectAsync(request);
    Console.WriteLine($"फ़ाइल अपलोड हो गई। ETag: {response.ETag}");
}

2. फ़ाइल डाउनलोड करना (Download)

public async Task DownloadFileAsync(IAmazonS3 client, string bucketName, string key, string downloadPath)
{
    var request = new GetObjectRequest
    {
        BucketName = bucketName,
        Key = key
    };

    using var response = await client.GetObjectAsync(request);
    await response.WriteResponseStreamToFileAsync(downloadPath, false, CancellationToken.None);
    Console.WriteLine($"फ़ाइल {downloadPath} पर सेव हो गई");
}

3. फ़ाइल डिलीट करना (Delete)

public async Task DeleteFileAsync(IAmazonS3 client, string bucketName, string key)
{
    var request = new DeleteObjectRequest
    {
        BucketName = bucketName,
        Key = key
    };

    var response = await client.DeleteObjectAsync(request);
    Console.WriteLine($"फ़ाइल डिलीट हो गई। HTTP स्टेटस: {response.HttpStatusCode}");
}

4. फ़ाइलों की सूची प्राप्त करना (List Objects)

public async Task ListFilesAsync(IAmazonS3 client, string bucketName)
{
    var request = new ListObjectsV2Request
    {
        BucketName = bucketName,
        MaxKeys = 100
    };

    ListObjectsV2Response response;
    do
    {
        response = await client.ListObjectsV2Async(request);
        
        foreach (var obj in response.S3Objects)
        {
            Console.WriteLine($"कुंजी: {obj.Key}, आकार: {obj.Size} बाइट, अंतिम बदलाव: {obj.LastModified}");
        }
        
        request.ContinuationToken = response.NextContinuationToken;
    } while (response.IsTruncated);
}

बकेट बनाना और प्रबंधित करना

फ़ाइलों को स्टोर करने से पहले, आपको एक बकेट बनाना होगा। यहाँ एक उदाहरण है:

public async Task CreateBucketAsync(IAmazonS3 client, string bucketName)
{
    var request = new PutBucketRequest
    {
        BucketName = bucketName,
        UseClientRegion = true
    };

    var response = await client.PutBucketAsync(request);
    Console.WriteLine($"बकेट '{bucketName}' बन गया। HTTP स्टेटस: {response.HttpStatusCode}");
}

MinIO के साथ लोकल टेस्टिंग

MinIO एक ओपन-सोर्स S3-संगत स्टोरेज सर्वर है जो लोकल डेवलपमेंट और टेस्टिंग के लिए आदर्श है। इसे Docker के साथ आसानी से चलाया जा सकता है:

docker run -p 9000:9000 -p 9001:9001 \
  -e MINIO_ROOT_USER=minioadmin \
  -e MINIO_ROOT_PASSWORD=minioadmin \
  minio/minio server /data --console-address ":9001"

इसके बाद, ऊपर दिए गए MinIO कनेक्शन कोड का उपयोग करके अपने C# एप्लिकेशन से कनेक्ट करें।

निष्कर्ष

इस लेख में हमने सीखा कि C# (.NET) में AWS SDK का उपयोग करके S3 और S3-संगत स्टोरेज के साथ कैसे काम करें। हमने लाइब्रेरी इंस्टॉलेशन, क्लाइंट कॉन्फ़िगरेशन, और मुख्य ऑपरेशन (अपलोड, डाउनलोड, डिलीट, लिस्टिंग) को कवर किया। MinIO जैसे लोकल एमुलेटर के साथ, आप बिना क्लाउड खर्च के अपने एप्लिकेशन का परीक्षण कर सकते हैं।

यह गाइड आपको C# (.NET) में S3 इंटीग्रेशन शुरू करने में मदद करेगी। अगर आपके कोई प्रश्न हैं, तो कमेंट में पूछें!

अनुशंसाएँ