Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Mohu použít pouze dopřednou čtečku pro nahrávání velkých souborů do S3 v Golangu


Mohu použít pouze dopřednou čtečku pro nahrávání velkých souborů do S3 v Golangu


Na základě výsledků vyhledávání se zdá, že použití pouze dopředné čtečky, jako je čtečka Go `tar`, může být náročné při nahrávání velkých souborů do Amazon S3 pomocí AWS SDK for Go.

Klíčové body jsou:

1. Problémy se správou paměti: AWS SDK pro uploader S3 Go přiděluje a naplňuje blokové buffery pro celý soubor před jeho nahráním. To může způsobit nedostatek paměti při nahrávání velkých souborů pomocí čtečky, která nepodporuje funkce `Seek` nebo `ReadAt`, jako je čtečka Go `tar`.

2. Intelligent Chunking: Problém GitHubu #1104 naznačuje, že SDK by bylo možné vylepšit tak, aby používala inteligentnější chunking při jednání se čtečkami, které nepodporují `Seek` a `ReadAt`. To by pomohlo lépe spravovat využití paměti při nahrávání velkých souborů.

3. Streamování a nahrávání z více částí: Sada AWS SDK for Go podporuje streamování a nahrávání z více částí, což může pomoci řídit využití paměti během nahrávání velkých souborů. Tyto funkce však nemusí fungovat tak dobře s dopřednou čtečkou.

4. Alternativní řešení: Výsledky vyhledávání naznačují použití Minio SDK nebo Google CDK, které mohou mít lepší podporu pro streamování velkých souborů do S3. Projekt aws-s3-reader-seeker navíc poskytuje vlastní implementaci čtečky, která dokáže lépe zpracovat velké objekty S3 efektivně.

Stručně řečeno, i když je možné použít pouze dopřednou čtečku, jako je čtečka Go `tar` pro nahrávání velkých souborů do S3 pomocí AWS SDK for Go, nemusí to být nejúčinnější nebo paměťově nenáročný přístup. V takových případech může být lepší zvážit alternativní řešení nebo použít funkce streamování a nahrávání více částí sady SDK.

Citace:
[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