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  }