Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Vai varu izmantot tikai uz priekšu vērstu lasītāju lielu failu augšupielādei uz S3 Golangā


Vai varu izmantot tikai uz priekšu vērstu lasītāju lielu failu augšupielādei uz S3 Golangā


Pamatojoties uz meklēšanas rezultātiem, šķiet, ka tikai uz priekšu vērsta lasītāja, piemēram, Go tar lasītāja, izmantošana var būt sarežģīta, augšupielādējot lielus failus pakalpojumā Amazon S3, izmantojot AWS SDK for Go.

Galvenie punkti ir:

1. Atmiņas pārvaldības problēmas: AWS SDK, kas paredzēts Go S3 augšupielādētājam, pirms to augšupielādes piešķir un aizpilda visa faila buferus. Tādējādi procesam var beigties atmiņa, augšupielādējot lielus failus, izmantojot lasītāju, kas neatbalsta funkcijas "Seek" vai "ReadAt", piemēram, Go 'tar' lasītāju.

2. Inteliģentā sadalīšana: GitHub problēma #1104 liecina, ka SDK varētu uzlabot, lai izmantotu viedāku sadalīšanu saskarsme ar lasītājiem, kas neatbalsta "Seek" un "ReadAt". Tas palīdzētu labāk pārvaldīt atmiņas izmantošanu lielu failu augšupielādes laikā.

3. Straumēšana un vairāku daļu augšupielādes: AWS SDK for Go atbalsta straumēšanu un vairāku daļu augšupielādi, kas var palīdzēt pārvaldīt atmiņas izmantošanu lielu failu augšupielādes laikā. Tomēr šīs funkcijas var nedarboties tik labi ar tikai uz priekšu vērstu lasītāju.

4. Alternatīvi risinājumi: meklēšanas rezultātos ir ieteikts izmantot Minio SDK vai Google CDK, kas var labāk atbalstīt lielu failu straumēšanu uz S3. Turklāt aws-s3-reader-seeker projekts nodrošina pielāgotu lasītāja ieviešanu, kas var vairāk apstrādāt lielus S3 objektus. efektīvi.

Rezumējot, lai gan ir iespējams izmantot tikai uz priekšu vērstu lasītāju, piemēram, Go tar lasītāju, lai augšupielādētu lielus failus uz S3, izmantojot AWS SDK for Go, tā var nebūt visefektīvākā vai atmiņai draudzīgākā pieeja. Šādos gadījumos labāks risinājums var būt alternatīvu risinājumu apsvēršana vai SDK straumēšanas un vairāku daļu augšupielādes funkciju izmantošana.

Citāts:
[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