ホームページ  >  記事  >  バックエンド開発  >  Go を使用して AWS S3 にファイルをストリーミングアップロードする方法は?

Go を使用して AWS S3 にファイルをストリーミングアップロードする方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-06 12:28:02259ブラウズ

How to Stream File Upload to AWS S3 Using Go?

Go を使用した AWS S3 へのストリーム ファイル アップロード

メモリとファイル ディスクのフットプリントを最小限に抑えながら、大きなファイルを AWS S3 に直接アップロードするには、Go のアップロード マネージャーを使用します。方法は次のとおりです:

アップロード マネージャーの使用

  1. 必要なライブラリをインポートします:

    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. AWS 構成を作成します:

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

    必要に応じて、構成で独自のアクセス キーと秘密キーを指定できます。

  3. 新しいセッションとアップローダーを初期化します:

    sess := session.Must(session.NewSession(awsConfig))
    uploader := s3manager.NewUploader(sess)
  4. アップローダーのパラメータをカスタマイズします (オプション):

    // 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. アップロードするファイルを開きます:

    f, err := os.Open(filename)
    if err != nil {
        fmt.Printf("failed to open file %q, %v\n", filename, err)
        return
    }
  6. アップローダーを使用してファイルをアップロードします:

    result, err := uploader.Upload(&s3manager.UploadInput{
        Bucket: aws.String(myBucket),
        Key:    aws.String(myKey),
        Body:   f,
    })
  7. 潜在的なエラーを処理します:

    if err != nil {
        fmt.Printf("failed to upload file, %v\n", err)
        return
    }
  8. アップロードを印刷しますlocation:

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

このようにアップロード マネージャーを利用すると、リソース消費を最小限に抑えながら、大きなファイルを AWS S3 に直接ストリーミングしてアップロードできます。

以上がGo を使用して AWS S3 にファイルをストリーミングアップロードする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。