AWS SDK для Go v2 предоставляет мощный менеджер загрузки, который упрощает процесс загрузки больших файлов в Amazon S3. В этой статье мы рассмотрим концепцию размера детали по умолчанию при создании средства загрузки и обсудим различные методы, доступные в AWS SDK Go v2 для управления загрузкой файлов. Мы также предоставим примеры кода, чтобы продемонстрировать использование каждого метода и обсудить преимущества, которые они предлагают. Давайте погрузимся!
Основные сведения о размере части по умолчанию.
При использовании диспетчера загрузки AWS SDK Go v2 размер части по умолчанию относится к размеру каждой отдельной части, на которую делится большой файл в процессе загрузки. По умолчанию AWS SDK Go v2 устанавливает размер части 8 МБ. Однако вы можете настроить это значение в соответствии со своими требованиями.
Метод 1: UploaderOptions
AWS SDK Go v2 предоставляет структуру UploaderOptions, которая позволяет задавать различные параметры конфигурации для загрузчика, включая размер части. Вот пример того, как установить нестандартный размер детали:
import (
"context"
"fmt"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/aws/defaults"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/aws/aws-sdk-go-v2/service/s3/s3manager"
)
func main() {
cfg, err := config.LoadDefaultConfig(context.TODO(), defaults.WithRegion("us-west-2"))
if err != nil {
panic(err)
}
uploader := s3manager.NewUploader(cfg, func(u *s3manager.Uploader) {
u.PartSize = 10 * 1024 * 1024 // 10MB part size
})
file, err := os.Open("path/to/file")
if err != nil {
panic(err)
}
_, err = uploader.Upload(context.TODO(), &s3manager.UploadInput{
Bucket: aws.String("my-bucket"),
Key: aws.String("my-key"),
Body: file,
})
if err != nil {
fmt.Println("failed to upload file", err)
return
}
fmt.Println("file uploaded successfully")
}
Метод 2: UploaderBuilder
Другой подход — использовать UploaderBuilder для создания экземпляра загрузчика с нестандартным размером детали. Вот пример:
import (
"context"
"fmt"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/aws/defaults"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/aws/aws-sdk-go-v2/service/s3/s3manager"
)
func main() {
cfg, err := config.LoadDefaultConfig(context.TODO(), defaults.WithRegion("us-west-2"))
if err != nil {
panic(err)
}
uploader := s3manager.NewUploaderBuilder().
WithPartSize(10 * 1024 * 1024). // 10MB part size
WithS3(cfg).
Build()
file, err := os.Open("path/to/file")
if err != nil {
panic(err)
}
_, err = uploader.Upload(context.TODO(), &s3manager.UploadInput{
Bucket: aws.String("my-bucket"),
Key: aws.String("my-key"),
Body: file,
})
if err != nil {
fmt.Println("failed to upload file", err)
return
}
fmt.Println("file uploaded successfully")
}
Метод 3: UploaderOptionsFunc
Вы также можете использовать UploaderOptionsFunc, чтобы установить собственный размер детали при создании загрузчика. Вот пример:
import (
"context"
"fmt"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/aws/defaults"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/aws/aws-sdk-go-v2/service/s3/s3manager"
)
func main() {
cfg, err := config.LoadDefaultConfig(context.TODO(), defaults.WithRegion("us-west-2"))
if err != nil {
panic(err)
}
uploader := s3manager.NewUploader(cfg, func(u *s3manager.Uploader) {
u.PartSize = 10 * 1024 * 1024 // 10MB part size
})
file, err := os.Open("path/to/file")
if err != nil {
panic(err)
}
_, err = uploader.Upload(context.TODO(), &s3manager.UploadInput{
Bucket: aws.String("my-bucket"),
Key: aws.String("my-key"),
Body: file,
})
if err != nil {
fmt.Println("failed to upload file", err)
return
}
fmt.Println("file uploaded successfully")
}
В этой статье мы рассмотрели концепцию размера детали по умолчанию при создании загрузчика в диспетчере загрузки AWS SDK Go v2. Мы обсудили три различных метода установки пользовательского размера детали: использование UploaderOptions, UploaderBuilder и UploaderOptionsFunc. Каждый метод обеспечивает гибкость и позволяет оптимизировать процесс загрузки в соответствии с вашими конкретными требованиями. Поняв эти методы, вы сможете эффективно управлять загрузкой файлов в Amazon S3 с помощью AWS SDK Go v2.