Pe baza rezultatelor căutării, se pare că folosirea unui cititor numai înainte, cum ar fi cititorul Go `tar`, poate fi o provocare atunci când încărcați fișiere mari pe Amazon S3 folosind AWS SDK for Go.
Punctele cheie sunt:
1. Probleme de gestionare a memoriei: AWS SDK for Go S3 uploader alocă și umple buffer-uri pentru întreg fișierul înainte de a le încărca. Acest lucru poate duce la epuizarea memoriei procesului atunci când încărcați fișiere mari cu un cititor care nu acceptă funcțiile „Căutare” sau „CitițiLa”, cum ar fi cititorul Go `tar`.
2. Intelligent Chunking: Problema GitHub #1104 sugerează că SDK-ul ar putea fi îmbunătățit pentru a utiliza fragmentări mai inteligente atunci când se confruntă cu cititori care nu acceptă `Seek` și `ReadAt`. Acest lucru ar ajuta la gestionarea mai bine a utilizării memoriei în timpul încărcărilor de fișiere mari.
3. Streaming și încărcări în mai multe părți: AWS SDK for Go acceptă încărcări în flux și mai multe părți, ceea ce poate ajuta la gestionarea utilizării memoriei în timpul încărcărilor de fișiere mari. Cu toate acestea, este posibil ca aceste caracteristici să nu funcționeze la fel de bine cu un cititor numai înainte.
4. Soluții alternative: rezultatele căutării sugerează utilizarea Minio SDK sau Google CDK, care poate avea un suport mai bun pentru transmiterea în flux a fișierelor mari către S3. În plus, proiectul aws-s3-reader-seeker oferă o implementare personalizată a cititorului care poate gestiona mai mult obiecte S3 mari eficient.
În rezumat, deși este posibil să utilizați un cititor numai înainte, cum ar fi cititorul Go `tar`, pentru a încărca fișiere mari pe S3 folosind AWS SDK for Go, este posibil să nu fie cea mai eficientă sau mai prietenoasă abordare pentru memorie. Luarea în considerare a unor soluții alternative sau utilizarea caracteristicilor de streaming și încărcare în mai multe părți ale SDK-ului poate fi o opțiune mai bună în astfel de cazuri.
Citate:[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