Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Golang'da S3'e büyük dosya yüklemeleri için salt ileri okuyucu kullanabilir miyim


Golang'da S3'e büyük dosya yüklemeleri için salt ileri okuyucu kullanabilir miyim


Arama sonuçlarına göre, AWS SDK for Go kullanarak büyük dosyaları Amazon S3'e yüklerken Go "tar" okuyucusu gibi salt ileri okuyucu kullanmanın zor olabileceği görülüyor.

Anahtar noktalar şunlardır:

1. Bellek Yönetimi Sorunları: AWS SDK for Go'nun S3 yükleyicisi, yüklemeden önce dosyanın tamamı için yığın arabelleklerini ayırır ve doldurur. Bu, Go 'tar' okuyucusu gibi 'Seek' veya 'ReadAt' işlevlerini desteklemeyen bir okuyucuyla büyük dosyalar yüklenirken işlemin belleğinin dolmasına neden olabilir.

2. Akıllı Parçalama: GitHub sorunu #1104, SDK'nın daha akıllı parçalama kullanacak şekilde geliştirilebileceğini öne sürüyor 'Seek' ve 'ReadAt'ı desteklemeyen okuyucularla uğraşmak. Bu, büyük dosya yüklemeleri sırasında bellek kullanımının daha iyi yönetilmesine yardımcı olur.

3. Akış ve Çok Parçalı Yüklemeler: AWS SDK for Go, büyük dosya yüklemeleri sırasında bellek kullanımının yönetilmesine yardımcı olabilecek akışı ve çok parçalı yüklemeleri destekler. Ancak bu özellikler salt ileri okuyucuyla aynı şekilde çalışmayabilir.

4. Alternatif Çözümler: Arama sonuçları, büyük dosyaların S3'e aktarılması konusunda daha iyi desteğe sahip olabilecek Minio SDK veya Google CDK'nın kullanılmasını önermektedir. Ayrıca aws-s3-reader-seeker projesi, büyük S3 nesnelerini daha fazla işleyebilen özel bir okuyucu uygulaması sağlar. verimli bir şekilde.

Özetle, AWS SDK for Go'yu kullanarak büyük dosyaları S3'e yüklemek için Go "tar" okuyucusu gibi salt ileri bir okuyucu kullanmak mümkün olsa da, bu en verimli veya hafıza dostu yaklaşım olmayabilir. Bu gibi durumlarda alternatif çözümleri düşünmek veya SDK'nın akış ve çok parçalı yükleme özelliklerini kullanmak daha iyi bir seçenek olabilir.

Alıntılar:
[1] https://github.com/aws/aws-sdk-go/issues/1104
[2] https://github.com/nikolaydubina/aws-s3-reader/blob/master/aws_s3_reader_seeker.go
[3] https://www.reddit.com/r/golang/comments/131bq42/need_to_stream_large_files_to_s3_using_go/
[4] https://www.linkedin.com/pulse/golang-uploading-files-aws-s3-bucket-using-pre-signed-tiago-melo
[5] https://pkg.go.dev/github.com/SnellerInc/sneller/aws/s3