1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
package manager_test
import (
"bytes"
"context"
"net/http"
"time"
"github.com/aws/aws-sdk-go-v2/aws"
awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/feature/s3/manager"
"github.com/aws/aws-sdk-go-v2/service/s3"
)
// ExampleNewUploader_overrideReadSeekerProvider gives an example
// on a custom ReadSeekerWriteToProvider can be provided to Uploader
// to define how parts will be buffered in memory.
func ExampleNewUploader_overrideReadSeekerProvider() {
cfg, err := config.LoadDefaultConfig(context.TODO())
if err != nil {
panic(err)
}
uploader := manager.NewUploader(s3.NewFromConfig(cfg), func(u *manager.Uploader) {
// Define a strategy that will buffer 25 MiB in memory
u.BufferProvider = manager.NewBufferedReadSeekerWriteToPool(25 * 1024 * 1024)
})
_, err = uploader.Upload(context.TODO(), &s3.PutObjectInput{
Bucket: aws.String("examplebucket"),
Key: aws.String("largeobject"),
Body: bytes.NewReader([]byte("large_multi_part_upload")),
})
if err != nil {
panic(err)
}
}
// ExampleNewUploader_overrideTransport gives an example
// on how to override the default HTTP transport. This can
// be used to tune timeouts such as response headers, or
// write / read buffer usage when writing or reading respectively
// from the net/http transport.
func ExampleNewUploader_overrideTransport() {
cfg, err := config.LoadDefaultConfig(context.TODO())
if err != nil {
panic(err)
}
client := s3.NewFromConfig(cfg, func(o *s3.Options) {
// Override Default Transport Values
o.HTTPClient = awshttp.NewBuildableClient().WithTransportOptions(func(tr *http.Transport) {
tr.ResponseHeaderTimeout = 1 * time.Second
tr.WriteBufferSize = 1024 * 1024
tr.ReadBufferSize = 1024 * 1024
})
})
uploader := manager.NewUploader(client)
_, err = uploader.Upload(context.TODO(), &s3.PutObjectInput{
Bucket: aws.String("examplebucket"),
Key: aws.String("largeobject"),
Body: bytes.NewReader([]byte("large_multi_part_upload")),
})
if err != nil {
panic(err)
}
}
|