1package s3manager_test 2 3import ( 4 "bytes" 5 "fmt" 6 "net/http" 7 "time" 8 9 "github.com/aws/aws-sdk-go/aws" 10 "github.com/aws/aws-sdk-go/aws/session" 11 "github.com/aws/aws-sdk-go/service/s3/s3manager" 12) 13 14// ExampleNewUploader_overrideReadSeekerProvider gives an example 15// on a custom ReadSeekerWriteToProvider can be provided to Uploader 16// to define how parts will be buffered in memory. 17func ExampleNewUploader_overrideReadSeekerProvider() { 18 sess := session.Must(session.NewSession()) 19 20 uploader := s3manager.NewUploader(sess, func(u *s3manager.Uploader) { 21 // Define a strategy that will buffer 25 MiB in memory 22 u.BufferProvider = s3manager.NewBufferedReadSeekerWriteToPool(25 * 1024 * 1024) 23 }) 24 25 _, err := uploader.Upload(&s3manager.UploadInput{ 26 Bucket: aws.String("examplebucket"), 27 Key: aws.String("largeobject"), 28 Body: bytes.NewReader([]byte("large_multi_part_upload")), 29 }) 30 if err != nil { 31 fmt.Println(err.Error()) 32 } 33} 34 35// ExampleNewUploader_overrideTransport gives an example 36// on how to override the default HTTP transport. This can 37// be used to tune timeouts such as response headers, or 38// write / read buffer usage when writing or reading respectively 39// from the net/http transport. 40func ExampleNewUploader_overrideTransport() { 41 // Create Transport 42 tr := &http.Transport{ 43 ResponseHeaderTimeout: 1 * time.Second, 44 // WriteBufferSize: 1024*1024 // Go 1.13 45 // ReadBufferSize: 1024*1024 // Go 1.13 46 } 47 48 sess := session.Must(session.NewSession(&aws.Config{ 49 HTTPClient: &http.Client{Transport: tr}, 50 })) 51 52 uploader := s3manager.NewUploader(sess) 53 54 _, err := uploader.Upload(&s3manager.UploadInput{ 55 Bucket: aws.String("examplebucket"), 56 Key: aws.String("largeobject"), 57 Body: bytes.NewReader([]byte("large_multi_part_upload")), 58 }) 59 if err != nil { 60 fmt.Println(err.Error()) 61 } 62} 63