Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kan ik een alleen-voorwaartse lezer gebruiken voor het uploaden van grote bestanden naar S3 in Golang


Kan ik een alleen-voorwaartse lezer gebruiken voor het uploaden van grote bestanden naar S3 in Golang


Op basis van de zoekresultaten lijkt het erop dat het gebruik van een alleen-voorwaartse lezer, zoals de Go `tar`-lezer, een uitdaging kan zijn bij het uploaden van grote bestanden naar Amazon S3 met behulp van de AWS SDK voor Go.

De belangrijkste punten zijn:

1. Problemen met geheugenbeheer: de AWS SDK voor Go's S3-uploader wijst chunk-buffers toe en vult deze voor het hele bestand voordat deze worden geüpload. Dit kan ertoe leiden dat het proces onvoldoende geheugen heeft bij het uploaden van grote bestanden met een lezer die de functies `Seek` of `ReadAt` niet ondersteunt, zoals de Go `tar`-lezer.

2. Intelligente chunking: het GitHub-probleem #1104 suggereert dat de SDK verbeterd zou kunnen worden om intelligentere chunking te gebruiken wanneer omgaan met lezers die `Seek` en `ReadAt` niet ondersteunen. Dit zou helpen het geheugengebruik beter te beheren tijdens het uploaden van grote bestanden.

3. Streaming en uploads uit meerdere delen: De AWS SDK voor Go ondersteunt streaming en uploads uit meerdere delen, wat kan helpen bij het beheren van het geheugengebruik tijdens het uploaden van grote bestanden. Deze functies werken echter mogelijk niet zo goed met een alleen-voorwaartse lezer.

4. Alternatieve oplossingen: De zoekresultaten suggereren het gebruik van de Minio SDK of de Google CDK, die mogelijk betere ondersteuning bieden voor het streamen van grote bestanden naar S3. Bovendien biedt het project aws-s3-reader-seeker een aangepaste reader-implementatie die grote S3-objecten kan verwerken. efficiënt.

Samenvattend: hoewel het mogelijk is om een ​​alleen-voorwaartse lezer zoals de Go `tar`-lezer te gebruiken voor het uploaden van grote bestanden naar S3 met behulp van de AWS SDK voor Go, is dit misschien niet de meest efficiënte of geheugenvriendelijke aanpak. In dergelijke gevallen kan het overwegen van alternatieve oplossingen of het gebruik van de streaming- en multipart-uploadfuncties van de SDK een betere optie zijn.

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