Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menstrim Muat Naik Fail ke AWS S3 Menggunakan Go?
Memuat naik fail besar terus ke AWS S3 sambil meminimumkan memori dan jejak cakera ialah tugas penting dalam pengkomputeran awan. Panduan ini akan menunjukkan cara untuk mencapai ini menggunakan AWS SDK for Go.
Untuk menstrim muat naik fail terus ke S3, anda boleh menggunakan pakej s3manager. Berikut ialah penyelesaian langkah demi langkah:
Konfigurasikan Bukti Kelayakan dan Sesi AWS:
Buat Pemuat Naik S3:
Buka Fail:
Muat naik Fail:
Sampel kod berikut menunjukkan cara menstrim muat naik fail besar ke AWS S3 menggunakan s3manager:
package main import ( "fmt" "os" "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" ) const ( filename = "file_name.zip" myBucket = "myBucket" myKey = "file_name.zip" accessKey = "" accessSecret = "" ) func main() { var awsConfig *aws.Config if accessKey == "" || accessSecret == "" { //load default credentials awsConfig = &aws.Config{ Region: aws.String("us-west-2"), } } else { awsConfig = &aws.Config{ Region: aws.String("us-west-2"), Credentials: credentials.NewStaticCredentials(accessKey, accessSecret, ""), } } // The session the S3 Uploader will use sess := session.Must(session.NewSession(awsConfig)) // Create an uploader with the session and default options //uploader := s3manager.NewUploader(sess) // Create an uploader with the session and custom options uploader := s3manager.NewUploader(sess, func(u *s3manager.Uploader) { u.PartSize = 5 * 1024 * 1024 // The minimum/default allowed part size is 5MB u.Concurrency = 2 // default is 5 }) //open the file f, err := os.Open(filename) if err != nil { fmt.Printf("failed to open file %q, %v", filename, err) return } //defer f.Close() // Upload the file to S3. result, err := uploader.Upload(&s3manager.UploadInput{ Bucket: aws.String(myBucket), Key: aws.String(myKey), Body: f, }) //in case it fails to upload if err != nil { fmt.Printf("failed to upload file, %v", err) return } fmt.Printf("file uploaded to, %s\n", result.Location) }
Dengan mengikuti langkah ini, anda boleh muat naik fail berbilang bahagian/data bentuk yang besar terus ke AWS S3 dengan penggunaan memori yang minimum.
Atas ialah kandungan terperinci Bagaimana untuk Menstrim Muat Naik Fail ke AWS S3 Menggunakan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!