تحميل الملفات إلى AWS S3 باستخدام Go
نظرة عامة
يعد تحميل الملفات الكبيرة مباشرة إلى AWS S3 مع تقليل مساحة الذاكرة والقرص مهمة أساسية في الحوسبة السحابية. سيوضح هذا الدليل كيفية تحقيق ذلك باستخدام AWS SDK for Go.
الحل
لدفق تحميل ملف مباشرة إلى S3، يمكنك استخدام حزمة s3manager. فيما يلي حل خطوة بخطوة:
-
تكوين بيانات الاعتماد والجلسة في AWS:
قم بتعيين مفتاح الوصول والسر إلى AWS، أو استخدم موفر بيانات الاعتماد الافتراضي.- قم بتهيئة جلسة AWS باستخدام المحدد التكوين.
-
-
إنشاء برنامج تحميل S3:
تهيئة برنامج تحميل S3 مع الجلسة وإعدادات التكوين الاختيارية.- يمكنك تكوين المعلمات مثل حجم الجزء والتزامن والحد الأقصى للتحميل أجزاء.
افتح الملف:
افتح الملف الذي تريد تحميله باستخدام وظيفة os.Open. -
- تحميل الملف:
استخدم طريقة التحميل.تحميل مع معلومات الملف المناسبة (الحاوية والمفتاح ومؤشر الملف). مثال التعليمات البرمجية
يوضح نموذج التعليمات البرمجية التالي كيفية البث تحميل ملف كبير إلى AWS S3 باستخدام s3manager:
package main
يستورد (
"إف إم تي"
"نظام التشغيل"
"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"
ماي بوكيت = "مي بوكيت"
مفتاحي = "file_name.zip"
مفتاح الوصول = ""
الوصول السري = ""
)
الوظيفة الرئيسية () {
فار awsConfig *aws.Config
إذا كان AccessKey == "" || AccessSecret == "" {
// تحميل بيانات الاعتماد الافتراضية
awsConfig = &aws.Config{
المنطقة: aws.String("us-west-2"),
}
} آخر {
awsConfig = &aws.Config{
المنطقة: aws.String("us-west-2"),
بيانات الاعتماد: credentials.NewStaticCredentials(accessKey, AccessSecret, ""),
}
}
// الجلسة التي سيستخدمها برنامج التحميل S3
sess := session.Must(session.NewSession(awsConfig))
// أنشئ أداة تحميل باستخدام الجلسة والخيارات الافتراضية
// الرافع : = s3manager.NewUploader(sess)
// قم بإنشاء أداة تحميل بالجلسة والخيارات المخصصة
رافع := s3manager.NewUploader(sess, func(u *s3manager.Uploader) {
u.PartSize = 5 * 1024 * 1024 // الحد الأدنى/الافتراضي لحجم الجزء المسموح به هو 5 ميجابايت
u.Concurrency = 2 // الافتراضي هو 5
})
//افتح الملف
و، يخطئ: = os.Open(اسم الملف)
إذا أخطأت!= لا شيء {
fmt.Printf ("فشل في فتح الملف %q، %v"، اسم الملف، خطأ)
يعود
}
//تأجيل f.Close()
// قم بتحميل الملف إلى S3.
النتيجة، خطأ := uploader.Upload(&s3manager.UploadInput{
دلو: aws.String(myBucket)،
المفتاح: aws.String(myKey)،
الجسم: و،
})
// في حالة فشل التحميل
إذا أخطأت!= لا شيء {
fmt.Printf("فشل تحميل الملف، %v"، خطأ)
يعود
}
fmt.Printf("تم تحميل الملف إلى، %s\n"، النتيجة.الموقع)
باتباع هذه الخطوات، يمكنك بكفاءة تحميل ملفات كبيرة متعددة الأجزاء/بيانات النماذج مباشرة إلى AWS S3 مع الحد الأدنى من استخدام الذاكرة.