diff --git a/docs/configuration.md b/docs/configuration.md index 60318195..8cd72cae 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -118,6 +118,7 @@ storage: secretkey: awssecretkey region: us-west-1 regionendpoint: http://myobjects.local + accelerate: false bucket: bucketname encrypt: true keyid: mykeyid @@ -422,6 +423,7 @@ storage: secretkey: awssecretkey region: us-west-1 regionendpoint: http://myobjects.local + accelerate: false bucket: bucketname encrypt: true keyid: mykeyid diff --git a/registry/storage/driver/s3-aws/s3.go b/registry/storage/driver/s3-aws/s3.go index 238c5d80..ba76f424 100644 --- a/registry/storage/driver/s3-aws/s3.go +++ b/registry/storage/driver/s3-aws/s3.go @@ -104,6 +104,7 @@ type DriverParameters struct { ObjectACL string SessionToken string UseDualStack bool + Accelerate bool } func init() { @@ -377,6 +378,23 @@ func FromParameters(parameters map[string]interface{}) (*Driver, error) { sessionToken := "" + accelerateBool := false + accelerate := parameters["accelerate"] + switch accelerate := accelerate.(type) { + case string: + b, err := strconv.ParseBool(accelerate) + if err != nil { + return nil, fmt.Errorf("the accelerate parameter should be a boolean") + } + accelerateBool = b + case bool: + accelerateBool = accelerate + case nil: + // do nothing + default: + return nil, fmt.Errorf("the accelerate parameter should be a boolean") + } + params := DriverParameters{ fmt.Sprint(accessKey), fmt.Sprint(secretKey), @@ -399,6 +417,7 @@ func FromParameters(parameters map[string]interface{}) (*Driver, error) { objectACL, fmt.Sprint(sessionToken), useDualStackBool, + accelerateBool, } return New(params) @@ -458,6 +477,7 @@ func New(params DriverParameters) (*Driver, error) { awsConfig.WithEndpoint(params.RegionEndpoint) } + awsConfig.WithS3UseAccelerate(params.Accelerate) awsConfig.WithRegion(params.Region) awsConfig.WithDisableSSL(!params.Secure) if params.UseDualStack { diff --git a/registry/storage/driver/s3-aws/s3_test.go b/registry/storage/driver/s3-aws/s3_test.go index 31662b17..41a5fc7d 100644 --- a/registry/storage/driver/s3-aws/s3_test.go +++ b/registry/storage/driver/s3-aws/s3_test.go @@ -44,6 +44,7 @@ func init() { sessionToken := os.Getenv("AWS_SESSION_TOKEN") useDualStack := os.Getenv("S3_USE_DUALSTACK") combineSmallPart := os.Getenv("MULTIPART_COMBINE_SMALL_PART") + accelerate := os.Getenv("S3_ACCELERATE") if err != nil { panic(err) } @@ -86,6 +87,7 @@ func init() { if useDualStack != "" { useDualStackBool, err = strconv.ParseBool(useDualStack) } + multipartCombineSmallPart := true if combineSmallPart != "" { multipartCombineSmallPart, err = strconv.ParseBool(combineSmallPart) @@ -94,6 +96,14 @@ func init() { } } + accelerateBool := true + if accelerate != "" { + accelerateBool, err = strconv.ParseBool(accelerate) + if err != nil { + return nil, err + } + } + parameters := DriverParameters{ accessKey, secretKey, @@ -116,6 +126,7 @@ func init() { objectACL, sessionToken, useDualStackBool, + accelerateBool, } return New(parameters)