Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menstrim Muat Naik Fail ke AWS S3 Menggunakan Go?

Bagaimana untuk Menstrim Muat Naik Fail ke AWS S3 Menggunakan Go?

Linda Hamilton
Linda Hamiltonasal
2024-11-07 20:13:03941semak imbas

How to Stream File Uploads to AWS S3 Using Go?

Strim Fail Muat Naik ke AWS S3 Menggunakan Go

Ikhtisar

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.

Penyelesaian

Untuk menstrim muat naik fail terus ke S3, anda boleh menggunakan pakej s3manager. Berikut ialah penyelesaian langkah demi langkah:

  1. Konfigurasikan Bukti Kelayakan dan Sesi AWS:

    • Tetapkan kunci akses dan rahsia AWS anda, atau gunakan pembekal bukti kelayakan lalai.
    • Mulakan sesi AWS dengan konfigurasi yang ditentukan.
  2. Buat Pemuat Naik S3:

    • Mulakan pemuat naik S3 dengan sesi dan tetapan konfigurasi pilihan.
    • Anda boleh mengkonfigurasi parameter seperti saiz bahagian, konkurensi dan bahagian muat naik maksimum.
  3. Buka Fail:

    • Buka fail yang ingin anda muat naik menggunakan fungsi os.Open.
  4. Muat naik Fail:

    • Gunakan pemuat naik.Kaedah muat naik dengan maklumat fail yang sesuai (baldi, kunci dan penuding fail).

Contoh Kod

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn