Maison >développement back-end >Golang >Comment diffuser le téléchargement de fichiers sur AWS S3 à l'aide de Go ?

Comment diffuser le téléchargement de fichiers sur AWS S3 à l'aide de Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-06 12:28:02323parcourir

How to Stream File Upload to AWS S3 Using Go?

Télécharger des fichiers en streaming sur AWS S3 à l'aide de Go

Le téléchargement de fichiers volumineux directement sur AWS S3 tout en minimisant la mémoire et l'empreinte disque des fichiers peut être obtenu à l'aide du gestionnaire de téléchargement dans Go. Voici comment :

Utiliser le gestionnaire de téléchargement

  1. Importez les bibliothèques nécessaires :

    import (
        "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"
    )
  2. Créez une configuration AWS :

    awsConfig := &aws.Config{
        Region: aws.String("us-west-2"),
    }

    Vous pouvez éventuellement fournir votre propre clé d'accès et votre propre clé secrète dans la configuration si nécessaire.

  3. Initialisez une nouvelle session et un téléchargeur :

    sess := session.Must(session.NewSession(awsConfig))
    uploader := s3manager.NewUploader(sess)
  4. Personnaliser les paramètres du téléchargeur (facultatif) :

    // Set the part size, concurrency, and max upload parts
    uploader := s3manager.NewUploader(sess, func(u *s3manager.Uploader) {
        u.PartSize = 5 * 1024 * 1024 // 5MB is the minimum allowed part size
        u.Concurrency = 2            // Default is 5
    })
  5. Ouvrez le fichier à télécharger :

    f, err := os.Open(filename)
    if err != nil {
        fmt.Printf("failed to open file %q, %v\n", filename, err)
        return
    }
  6. Téléchargez le fichier à l'aide du téléchargeur :

    result, err := uploader.Upload(&s3manager.UploadInput{
        Bucket: aws.String(myBucket),
        Key:    aws.String(myKey),
        Body:   f,
    })
  7. Gérez les erreurs potentielles :

    if err != nil {
        fmt.Printf("failed to upload file, %v\n", err)
        return
    }
  8. Imprimez le téléchargement emplacement :

    fmt.Printf("file uploaded to, %s\n", result.Location)

En utilisant le gestionnaire de téléchargement de cette manière, vous pouvez diffuser et télécharger des fichiers volumineux directement sur AWS S3 avec une consommation de ressources minimale.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn