Remiantis paieškos rezultatais, atrodo, kad naudojant tik į priekį nukreiptą skaitytuvą, pvz., „Go tar“ skaitytuvą, gali būti sudėtinga įkelti didelius failus į „Amazon S3“, naudojant AWS SDK for Go.
Pagrindiniai punktai yra šie:
1. Atminties valdymo problemos: AWS SDK, skirtas „Go's S3“ įkėlimo programai, prieš juos įkeldamas paskiria ir užpildo viso failo buferius. Dėl to procesui gali pritrūkti atminties įkeliant didelius failus su skaitytuvu, kuris nepalaiko funkcijų „Seek“ arba „ReadAt“, pvz., „Go tar“ skaitytuvu.
2. Intelligent Cunking: „GitHub“ problema #1104 rodo, kad SDK būtų galima patobulinti, kad būtų galima naudoti išmanesnį skaidymą bendrauti su skaitytojais, kurie nepalaiko „Seek“ ir „ReadAt“. Tai padėtų geriau valdyti atminties naudojimą įkeliant didelius failus.
3. Srautas ir kelių dalių įkėlimas: AWS SDK for Go palaiko srautinį perdavimą ir kelių dalių įkėlimą, o tai gali padėti valdyti atminties naudojimą įkeliant didelius failus. Tačiau šios funkcijos gali neveikti taip gerai su tik į priekį nukreiptu skaitytuvu.
4. Alternatyvūs sprendimai: paieškos rezultatuose siūloma naudoti Minio SDK arba Google CDK, kurie gali geriau palaikyti srautinį didelių failų perdavimą į S3. Be to, aws-s3-reader-seeker projektas suteikia tinkintą skaitytuvo diegimą, kuris gali geriau valdyti didelius S3 objektus efektyviai.
Apibendrinant, nors galima naudoti tik į priekį nukreiptą skaitytuvą, pvz., „Go tar“ skaitytuvą dideliems failams įkelti į S3 naudojant AWS SDK for Go, tai gali būti ne pats efektyviausias ir atmintį tausojantis būdas. Tokiais atvejais geresnis pasirinkimas gali būti alternatyvių sprendimų svarstymas arba SDK srautinio perdavimo ir kelių dalių įkėlimo funkcijų naudojimas.
Citatos:[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