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)पुस्तकालय में भी
JavaScript (Node.js) में CSV के साथ कार्य: लाइब्रेरी और उपकरण
Codeception PHP टेस्टिंग: पूरी गाइड उदाहरण सहित
C++ में Event Bus और Observer पैटर्न: कोड के साथ पूरी गाइड
TypeScript में XML के साथ काम करना: पार्सिंग और निर्माण के लिए लाइब्रेरी
Go (Golang) के लिए Redis क्लाइंट: go-redis और redigo - संपूर्ण गाइड
अनुशंसाएँ