Otsingutulemuste põhjal näib, et ainult edasisuunava lugeja (nt Go tar-lugeja) kasutamine võib olla keeruline, kui laadite Amazon S3-sse üles suuri faile, kasutades AWS SDK for Go jaoks.
Põhipunktid on järgmised:
1. Mäluhalduse probleemid: Go's S3 üleslaadija AWS SDK eraldab ja täidab kogu faili puhvrid enne nende üleslaadimist. See võib põhjustada protsessi mälu tühjenemist, kui laadite üles suuri faile lugejaga, mis ei toeta funktsioone "Seek" või "ReadAt", nagu näiteks Go Tar-lugeja.
2. Intelligentne tükeldamine: GitHubi probleem #1104 viitab sellele, et SDK-d võiks täiustada, et kasutada intelligentsemat jaotamist, kui suhtlemine lugejatega, kes ei toeta nuppe "Seek" ja "ReadAt". See aitaks suurte failide üleslaadimise ajal mälukasutust paremini hallata.
3. Voogesitus ja mitmeosaline üleslaadimine: AWS SDK for Go toetab voogesitust ja mitmeosalist üleslaadimist, mis aitab hallata mälukasutust suurte failide üleslaadimise ajal. Need funktsioonid ei pruugi aga ainult edasisuunatud lugejaga nii hästi töötada.
4. Alternatiivsed lahendused: otsingutulemustes soovitatakse kasutada Minio SDK-d või Google CDK-d, millel võib olla parem tugi suurte failide voogesitamiseks S3-sse. Lisaks pakub projekt aws-s3-reader-seeker kohandatud lugejarakendust, mis suudab paremini käsitleda suuri S3 objekte tõhusalt.
Kokkuvõtteks võib öelda, et kuigi suurte failide üleslaadimiseks S3-sse on võimalik kasutada ainult edasisuunavat lugejat, näiteks Go tar-lugejat, kasutades AWS SDK for Go, ei pruugi see olla kõige tõhusam ega mälusõbralikum lähenemisviis. Sellistel juhtudel võib parem valik olla alternatiivsete lahenduste kaalumine või SDK voogesituse ja mitmeosalise üleslaadimise funktsioonide kasutamine.
Tsitaadid:[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