Le téléchargement de fichiers volumineux directement sur AWS S3 tout en minimisant la mémoire et l'empreinte disque est une tâche essentielle dans le cloud computing. Ce guide montrera comment y parvenir à l'aide du SDK AWS pour Go.
Pour diffuser un téléchargement de fichier directement sur S3, vous pouvez utiliser le package s3manager. Voici une solution étape par étape :
Configurez les informations d'identification et la session AWS :
Créer un téléchargeur S3 :
Ouvrez le fichier :
Téléchargez le Fichier :
L'exemple de code suivant montre comment diffuser en continu le téléchargement de fichiers volumineux sur AWS S3 à l'aide s3manager :
package main import ( "fmt" "os" "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3/s3manager" ) const ( filename = "file_name.zip" myBucket = "myBucket" myKey = "file_name.zip" accessKey = "" accessSecret = "" ) func main() { var awsConfig *aws.Config if accessKey == "" || accessSecret == "" { //load default credentials awsConfig = &aws.Config{ Region: aws.String("us-west-2"), } } else { awsConfig = &aws.Config{ Region: aws.String("us-west-2"), Credentials: credentials.NewStaticCredentials(accessKey, accessSecret, ""), } } // The session the S3 Uploader will use sess := session.Must(session.NewSession(awsConfig)) // Create an uploader with the session and default options //uploader := s3manager.NewUploader(sess) // Create an uploader with the session and custom options uploader := s3manager.NewUploader(sess, func(u *s3manager.Uploader) { u.PartSize = 5 * 1024 * 1024 // The minimum/default allowed part size is 5MB u.Concurrency = 2 // default is 5 }) //open the file f, err := os.Open(filename) if err != nil { fmt.Printf("failed to open file %q, %v", filename, err) return } //defer f.Close() // Upload the file to S3. result, err := uploader.Upload(&s3manager.UploadInput{ Bucket: aws.String(myBucket), Key: aws.String(myKey), Body: f, }) //in case it fails to upload if err != nil { fmt.Printf("failed to upload file, %v", err) return } fmt.Printf("file uploaded to, %s\n", result.Location) }
En suivant ces étapes, vous pouvez télécharger efficacement de gros fichiers de données multiparts/formulaires directement sur AWS S3 avec une utilisation minimale de la mémoire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!