Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Puis-je utiliser un lecteur avant uniquement pour les téléchargements de fichiers volumineux vers S3 dans Golang


Puis-je utiliser un lecteur avant uniquement pour les téléchargements de fichiers volumineux vers S3 dans Golang


D'après les résultats de la recherche, il semble que l'utilisation d'un lecteur avant uniquement, tel que le lecteur Go `tar`, puisse s'avérer difficile lors du téléchargement de fichiers volumineux sur Amazon S3 à l'aide du kit AWS SDK for Go.

Les points clés sont :

1. Problèmes de gestion de la mémoire : le programme de téléchargement S3 du kit AWS SDK for Go alloue et remplit les tampons de blocs pour l'intégralité du fichier avant de les télécharger. Cela peut entraîner un manque de mémoire lors du téléchargement de fichiers volumineux avec un lecteur qui ne prend pas en charge les fonctions « Seek » ou « ReadAt », comme le lecteur Go « tar ».

2. Intelligent Chunking : le problème GitHub #1104 suggère que le SDK pourrait être amélioré pour utiliser un chunking plus intelligent lorsque traiter des lecteurs qui ne prennent pas en charge « Seek » et « ReadAt ». Cela aiderait à mieux gérer l’utilisation de la mémoire lors des téléchargements de fichiers volumineux.

3. Streaming et téléchargements en plusieurs parties : le kit AWS SDK for Go prend en charge le streaming et les téléchargements en plusieurs parties, ce qui peut aider à gérer l'utilisation de la mémoire lors des téléchargements de fichiers volumineux. Cependant, ces fonctionnalités peuvent ne pas fonctionner aussi bien avec un lecteur avant uniquement.

4. Solutions alternatives : les résultats de la recherche suggèrent d'utiliser le SDK Minio ou le CDK Google, qui peuvent offrir une meilleure prise en charge du streaming de fichiers volumineux vers S3. De plus, le projet aws-s3-reader-seeker fournit une implémentation de lecteur personnalisée qui peut gérer davantage les objets S3 volumineux. efficacement.

En résumé, bien qu'il soit possible d'utiliser un lecteur avant uniquement comme le lecteur Go `tar` pour télécharger des fichiers volumineux sur S3 à l'aide du kit AWS SDK for Go, ce n'est peut-être pas l'approche la plus efficace ou la plus économe en mémoire. Envisager des solutions alternatives ou utiliser les fonctionnalités de streaming et de téléchargement en plusieurs parties du SDK peut être une meilleure option dans de tels cas.

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