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