Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kan jeg bruke en leser som kun kan videresendes for opplasting av store filer til S3 i Golang


Kan jeg bruke en leser som kun kan videresendes for opplasting av store filer til S3 i Golang


Basert på søkeresultatene, ser det ut til at det kan være utfordrende å bruke en leser som kun kan videresendes, for eksempel Go `tar`-leseren når du laster opp store filer til Amazon S3 ved å bruke AWS SDK for Go.

De viktigste punktene er:

1. Minneadministrasjonsproblemer: AWS SDK for Gos S3-opplastingsverktøy tildeler og fyller delbuffere for hele filen før de lastes opp. Dette kan føre til at prosessen går tom for minne når du laster opp store filer med en leser som ikke støtter «Seek» eller «ReadAt»-funksjoner, som Go «tar»-leseren.

2. Intelligent Chunking: GitHub-problemet #1104 antyder at SDK-en kan forbedres for å bruke mer intelligent chunking når håndtere lesere som ikke støtter `Seek` og `ReadAt`. Dette vil hjelpe deg med å administrere minnebruken bedre under opplasting av store filer.

3. Streaming og multipart-opplastinger: AWS SDK for Go støtter streaming og multipart-opplastinger, som kan hjelpe til med å administrere minnebruk under store filopplastinger. Imidlertid kan det hende at disse funksjonene ikke fungerer like bra med en leser som kun kan videresendes.

4. Alternative løsninger: Søkeresultatene foreslår å bruke Minio SDK eller Google CDK, som kan ha bedre støtte for å strømme store filer til S3. I tillegg tilbyr prosjektet aws-s3-reader-seeker en tilpasset leserimplementering som kan håndtere store S3-objekter mer effektivt.

Oppsummert, selv om det er mulig å bruke en kun fremoverleser som Go `tar`-leseren for å laste opp store filer til S3 ved å bruke AWS SDK for Go, er det kanskje ikke den mest effektive eller minnevennlige tilnærmingen. Å vurdere alternative løsninger eller bruke SDK-ens strømme- og flerdelte opplastingsfunksjoner kan være et bedre alternativ i slike tilfeller.

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