गो का उपयोग करके AWS S3 पर फ़ाइल अपलोड स्ट्रीम करें
अवलोकन
मेमोरी और डिस्क फ़ुटप्रिंट को कम करते हुए बड़ी फ़ाइलों को सीधे AWS S3 पर अपलोड करना एक आवश्यक कार्य है क्लाउड कंप्यूटिंग में. यह मार्गदर्शिका प्रदर्शित करेगी कि Go के लिए AWS SDK का उपयोग करके इसे कैसे प्राप्त किया जाए।
Solution
किसी फ़ाइल अपलोड को सीधे S3 पर स्ट्रीम करने के लिए, आप s3manager पैकेज का उपयोग कर सकते हैं। यहां चरण-दर-चरण समाधान दिया गया है:
AWS क्रेडेंशियल और सत्र कॉन्फ़िगर करें:
- अपनी AWS एक्सेस कुंजी और गुप्त सेट करें, या डिफ़ॉल्ट क्रेडेंशियल प्रदाता का उपयोग करें। ]
- सत्र और वैकल्पिक कॉन्फ़िगरेशन सेटिंग्स के साथ एक S3 अपलोडर प्रारंभ करें।
आप भाग आकार, समवर्ती और अधिकतम अपलोड भागों जैसे पैरामीटर कॉन्फ़िगर कर सकते हैं।
फ़ाइल खोलें:- वह फ़ाइल खोलें जिसे आप os.Open फ़ंक्शन का उपयोग करके अपलोड करना चाहते हैं।
फ़ाइल अपलोड करें:
- उचित फ़ाइल जानकारी (बाल्टी, कुंजी और फ़ाइल सूचक) के साथ अपलोडर.अपलोड विधि का उपयोग करें।
उदाहरण कोडनिम्नलिखित कोड नमूना दर्शाता है कि s3manager का उपयोग करके AWS S3 पर बड़ी फ़ाइल अपलोड को कैसे स्ट्रीम किया जाए:
पैकेज मुख्य
आयात (
"एफएमटी"
"ओएस"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3/s3manager"
)
स्थिरांक (
फ़ाइल नाम = "file_name.zip"
मायबकेट = "मायबकेट"
myKey = "file_name.zip"
एक्सेसकी = ""
एक्सेससीक्रेट = ""
)
func मुख्य() {
var awsConfig *aws.Config
यदि एक्सेसकी == "" || एक्सेससीक्रेट == "" {
//डिफ़ॉल्ट क्रेडेंशियल लोड करें
awsConfig = &aws.Config{
क्षेत्र: aws.String("us-west-2"),
}
} अन्य {
awsConfig = &aws.Config{
क्षेत्र: aws.String("us-west-2"),
क्रेडेंशियल्स: क्रेडेंशियल्स.न्यूस्टैटिक क्रेडेंशियल्स (एक्सेसकी, एक्सेससीक्रेट, ""),
}
}
// S3 अपलोडर जिस सत्र का उपयोग करेगा
sess := session.Must(session.NewSession(awsConfig))
// सत्र और डिफ़ॉल्ट विकल्पों के साथ एक अपलोडर बनाएं
//अपलोडर := s3manager.NewUploader(sess)
// सत्र और कस्टम विकल्पों के साथ एक अपलोडर बनाएं
अपलोडर := s3manager.NewUploader(sess, func(u *s3manager.Uploader) {
यू.पार्टसाइज = 5 * 1024 * 1024 // न्यूनतम/डिफ़ॉल्ट अनुमत पार्ट साइज 5एमबी है
u.Concurrency = 2 // डिफ़ॉल्ट 5 है
})
//फ़ाइल खोलें
f, err := os.Open(फ़ाइल नाम)
यदि त्रुटि !=शून्य {
fmt.Printf ("फ़ाइल %q, %v खोलने में विफल", फ़ाइल नाम, त्रुटि)
वापस करना
}
//स्थगित करें f.बंद करें()
// फ़ाइल को S3 पर अपलोड करें।
परिणाम, त्रुटि := uploader.Upload(&s3manager.UploadInput{
बाल्टी: aws.String(myBucket),
कुंजी: aws.String(myKey),
शरीर: एफ,
})
//यदि यह अपलोड करने में विफल रहता है
यदि त्रुटि !=शून्य {
fmt.Printf('फ़ाइल अपलोड करने में विफल, %v', त्रुटि)
वापस करना
}
fmt.Printf(''फ़ाइल अपलोड की गई, %s\n'', परिणाम.स्थान)
}- इन चरणों का पालन करके, आप न्यूनतम मेमोरी उपयोग के साथ बड़ी मल्टीपार्ट/फॉर्म-डेटा फ़ाइलों को सीधे AWS S3 पर अपलोड कर सकते हैं।