ホームページ  >  記事  >  バックエンド開発  >  Go で大きなファイルを AWS S3 にストリーミングするにはどうすればよいですか?

Go で大きなファイルを AWS S3 にストリーミングするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-08 04:54:02926ブラウズ

How to Stream Large Files to AWS S3 with Go?

Go を使用して AWS S3 にファイルをアップロードする

チャレンジ:

大規模なマルチパートをストリーミングする/form-data ファイルを AWS S3 に直接保存し、メモリとディスクの使用量を最小限に抑えます。

解決策:

これを実現するには、github の S3 アップローダーを使用します。 .com/aws/aws-sdk-go library.

実装:

  1. 必要なパラメータ (チャンク サイズ、同時実行、など)。
  2. アップロードするファイルを開きます。
  3. アップローダーのアップロード機能を使用して、ファイルを S3 にストリーミングします。
  4. エラーを処理するか、アップロード結果を表示します。

コード例:

import (
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/s3/s3manager"
)

func main() {
    // Create an S3 uploader with custom options
    uploader := s3manager.NewUploader(session.Must(session.NewSession()), func(u *s3manager.Uploader) {
        u.PartSize = 5 * 1024 * 1024 // 5MB part size
        u.Concurrency = 2           // 2 concurrent uploads
    })

    // Open the file for upload
    f, err := os.Open("file.txt")
    if err != nil {
        panic(err)
    }
    defer f.Close()

    // Stream file to S3
    result, err := uploader.Upload(&s3manager.UploadInput{
        Bucket: aws.String("my-bucket"),
        Key:    aws.String("file.txt"),
        Body:   f,
    })

    if err != nil {
        panic(err)
    }

    // Display uploaded file information
    fmt.Printf("File uploaded to: %s", result.Location)
}

以上がGo で大きなファイルを AWS S3 にストリーミングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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