github.com/aavshr/aws-sdk-go@v1.41.3/service/s3/s3manager/examples_test.go (about) 1 package s3manager_test 2 3 import ( 4 "bytes" 5 "fmt" 6 "net/http" 7 "time" 8 9 "github.com/aavshr/aws-sdk-go/aws" 10 "github.com/aavshr/aws-sdk-go/aws/session" 11 "github.com/aavshr/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. 17 func 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. 40 func 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 }