メモリとファイル ディスクのフットプリントを最小限に抑えながら、大きなファイルを AWS S3 に直接アップロードするには、Go のアップロード マネージャーを使用します。方法は次のとおりです:
必要なライブラリをインポートします:
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" )
AWS 構成を作成します:
awsConfig := &aws.Config{ Region: aws.String("us-west-2"), }
必要に応じて、構成で独自のアクセス キーと秘密キーを指定できます。
新しいセッションとアップローダーを初期化します:
sess := session.Must(session.NewSession(awsConfig)) uploader := s3manager.NewUploader(sess)
アップローダーのパラメータをカスタマイズします (オプション):
// 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 })
アップロードするファイルを開きます:
f, err := os.Open(filename) if err != nil { fmt.Printf("failed to open file %q, %v\n", filename, err) return }
アップローダーを使用してファイルをアップロードします:
result, err := uploader.Upload(&s3manager.UploadInput{ Bucket: aws.String(myBucket), Key: aws.String(myKey), Body: f, })
潜在的なエラーを処理します:
if err != nil { fmt.Printf("failed to upload file, %v\n", err) return }
アップロードを印刷しますlocation:
fmt.Printf("file uploaded to, %s\n", result.Location)
このようにアップロード マネージャーを利用すると、リソース消費を最小限に抑えながら、大きなファイルを AWS S3 に直接ストリーミングしてアップロードできます。
以上がGo を使用して AWS S3 にファイルをストリーミングアップロードする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。