Go में S3 और क्लाउड स्टोरेज के साथ काम करना: minio-go लाइब्रेरी

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

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

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

Go में S3 और क्लाउड स्टोरेज के साथ काम करने के लिए minio-go लाइब्रेरी



आधुनिक डेवलपमेंट में, Amazon S3 (Simple Storage Service) प्रोटोकॉल के साथ संगत क्लाउड स्टोरेज के साथ एकीकरण की आवश्यकता बढ़ती जा रही है। चाहे वह AWS S3 हो, Yandex.Cloud, DigitalOcean Spaces, MinIO या कोई अन्य S3-संगत सेवा, Go भाषा एक सुरुचिपूर्ण और उच्च-प्रदर्शन समाधान प्रदान करती है — minio-go लाइब्रेरी।



Minio-go, MinIO कंपनी द्वारा विकसित Amazon S3 API के लिए आधिकारिक Go क्लाइंट है। यह बकेट और ऑब्जेक्ट प्रबंधन के लिए पूर्ण सुविधाओं का सेट प्रदान करता है, स्ट्रीमिंग अपलोड/डाउनलोड, एन्क्रिप्शन, वर्जनिंग और S3 की कई अन्य क्षमताओं का समर्थन करता है। यह लाइब्रेरी AWS S3 और किसी भी अन्य S3-संगत स्टोरेज के साथ पूरी तरह से संगत है।



स्थापना



लाइब्रेरी की स्थापना go get के माध्यम से मानक तरीके से की जाती है:



go get github.com/minio/minio-go/v7


क्लाइंट को कनेक्ट और कॉन्फ़िगर करना



काम शुरू करने के लिए, एंडपॉइंट, एक्सेस की और सीक्रेट की निर्दिष्ट करते हुए एक क्लाइंट बनाना आवश्यक है। MinIO (स्थानीय या क्लाउड) से कनेक्ट करने का उदाहरण:



package main

import ( "context" "log" "github.com/minio/minio-go/v7" "github.com/minio/minio-go/v7/pkg/credentials")

func main() { ctx := context.Background() // कनेक्शन पैरामीटर endpoint := "play.min.io" // या आपका एंडपॉइंट accessKeyID := "Q3AM3UQ867SPQQA43P2F" secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG" useSSL := true

// क्लाइंट बनाना client, err := minio.New(endpoint, &minio.Options{ Creds: credentials.NewStaticV4(accessKeyID, secretAccessKey, ""), Secure: useSSL, }) if err != nil { log.Fatalf("क्लाइंट बनाने में त्रुटि: %v", err) }

log.Println("S3-स्टोरेज से कनेक्शन स्थापित हो गया")}


बकेट के साथ काम करना



बकेट (bucket) S3-स्टोरेज में रूट डायरेक्टरी है। आइए मुख्य ऑपरेशन देखें:



बकेट बनाना



bucketName := "my-go-bucket"location := "us-east-1"

err = client.MakeBucket(ctx, bucketName, minio.MakeBucketOptions{ Region: location,})if err != nil { log.Printf("बकेट बनाने में विफल: %v", err)} else { log.Printf("बकेट '%s' सफलतापूर्वक बनाया गया", bucketName)}


बकेट के अस्तित्व की जाँच करना



exists, err := client.BucketExists(ctx, bucketName)if err != nil {    log.Fatalf("बकेट जाँच में त्रुटि: %v", err)}if exists {    log.Printf("बकेट '%s' मौजूद है", bucketName)}


सभी बकेट की सूची



buckets, err := client.ListBuckets(ctx)if err != nil {    log.Fatalf("बकेट सूची प्राप्त करने में त्रुटि: %v", err)}for _, bucket := range buckets {    log.Printf("बकेट: %s, बनाया गया: %s", bucket.Name, bucket.CreationDate)}


फ़ाइल अपलोड (upload)



Minio-go स्थानीय फ़ाइल सिस्टम, io.Reader और मेमोरी बफर से फ़ाइल अपलोड का समर्थन करता है। फ़ाइल अपलोड का उदाहरण:



objectName := "example.txt"filePath := "/path/to/local/file.txt"contentType := "text/plain"

// फ़ाइल अपलोडn, err := client.FPutObject(ctx, bucketName, objectName, filePath, minio.PutObjectOptions{ ContentType: contentType,})if err != nil { log.Fatalf("फ़ाइल अपलोड में त्रुटि: %v", err)}log.Printf("फ़ाइल '%s' अपलोड हुई, आकार: %d बाइट", objectName, n.Size)


मेमोरी से अपलोड (bytes/reader)



import "strings"

data := strings.NewReader("नमस्ते, S3 स्टोरेज!")objectName := "hello.txt"

n, err := client.PutObject(ctx, bucketName, objectName, data, int64(data.Len()), minio.PutObjectOptions{ ContentType: "text/plain",})if err != nil { log.Fatalf("डेटा अपलोड में त्रुटि: %v", err)}log.Printf("%d बाइट अपलोड हुए", n.Size)

अनुशंसाएँ