forked from TrueCloudLab/distribution
Added support to specifiy custom endpoint
Signed-off-by: Keerthan Reddy Mala <keerthan.mala@gmail.com>
This commit is contained in:
parent
7adddecf0b
commit
19cfa36ec8
2 changed files with 45 additions and 21 deletions
|
@ -56,16 +56,17 @@ var validRegions = map[string]struct{}{}
|
||||||
|
|
||||||
//DriverParameters A struct that encapsulates all of the driver parameters after all values have been set
|
//DriverParameters A struct that encapsulates all of the driver parameters after all values have been set
|
||||||
type DriverParameters struct {
|
type DriverParameters struct {
|
||||||
AccessKey string
|
AccessKey string
|
||||||
SecretKey string
|
SecretKey string
|
||||||
Bucket string
|
Bucket string
|
||||||
Region string
|
Region string
|
||||||
Encrypt bool
|
RegionEndpoint string
|
||||||
Secure bool
|
Encrypt bool
|
||||||
ChunkSize int64
|
Secure bool
|
||||||
RootDirectory string
|
ChunkSize int64
|
||||||
StorageClass string
|
RootDirectory string
|
||||||
UserAgent string
|
StorageClass string
|
||||||
|
UserAgent string
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -153,6 +154,11 @@ func FromParameters(parameters map[string]interface{}) (*Driver, error) {
|
||||||
return nil, fmt.Errorf("No bucket parameter provided")
|
return nil, fmt.Errorf("No bucket parameter provided")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
regionEndpoint := parameters["regionendpoint"]
|
||||||
|
if regionEndpoint == nil {
|
||||||
|
regionEndpoint = ""
|
||||||
|
}
|
||||||
|
|
||||||
encryptBool := false
|
encryptBool := false
|
||||||
encrypt := parameters["encrypt"]
|
encrypt := parameters["encrypt"]
|
||||||
switch encrypt := encrypt.(type) {
|
switch encrypt := encrypt.(type) {
|
||||||
|
@ -240,6 +246,7 @@ func FromParameters(parameters map[string]interface{}) (*Driver, error) {
|
||||||
fmt.Sprint(secretKey),
|
fmt.Sprint(secretKey),
|
||||||
fmt.Sprint(bucket),
|
fmt.Sprint(bucket),
|
||||||
region,
|
region,
|
||||||
|
fmt.Sprint(regionEndpoint),
|
||||||
encryptBool,
|
encryptBool,
|
||||||
secureBool,
|
secureBool,
|
||||||
chunkSize,
|
chunkSize,
|
||||||
|
@ -255,22 +262,37 @@ func FromParameters(parameters map[string]interface{}) (*Driver, error) {
|
||||||
// bucketName
|
// bucketName
|
||||||
func New(params DriverParameters) (*Driver, error) {
|
func New(params DriverParameters) (*Driver, error) {
|
||||||
awsConfig := aws.NewConfig()
|
awsConfig := aws.NewConfig()
|
||||||
creds := credentials.NewChainCredentials([]credentials.Provider{
|
var creds *credentials.Credentials
|
||||||
&credentials.StaticProvider{
|
if params.RegionEndpoint == "" {
|
||||||
Value: credentials.Value{
|
creds = credentials.NewChainCredentials([]credentials.Provider{
|
||||||
AccessKeyID: params.AccessKey,
|
&credentials.StaticProvider{
|
||||||
SecretAccessKey: params.SecretKey,
|
Value: credentials.Value{
|
||||||
|
AccessKeyID: params.AccessKey,
|
||||||
|
SecretAccessKey: params.SecretKey,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
&credentials.EnvProvider{},
|
||||||
&credentials.EnvProvider{},
|
&credentials.SharedCredentialsProvider{},
|
||||||
&credentials.SharedCredentialsProvider{},
|
&ec2rolecreds.EC2RoleProvider{Client: ec2metadata.New(session.New())},
|
||||||
&ec2rolecreds.EC2RoleProvider{Client: ec2metadata.New(session.New())},
|
})
|
||||||
})
|
|
||||||
|
} else {
|
||||||
|
creds = credentials.NewChainCredentials([]credentials.Provider{
|
||||||
|
&credentials.StaticProvider{
|
||||||
|
Value: credentials.Value{
|
||||||
|
AccessKeyID: params.AccessKey,
|
||||||
|
SecretAccessKey: params.SecretKey,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&credentials.EnvProvider{},
|
||||||
|
})
|
||||||
|
awsConfig.WithS3ForcePathStyle(true)
|
||||||
|
awsConfig.WithEndpoint(params.RegionEndpoint)
|
||||||
|
}
|
||||||
|
|
||||||
awsConfig.WithCredentials(creds)
|
awsConfig.WithCredentials(creds)
|
||||||
awsConfig.WithRegion(params.Region)
|
awsConfig.WithRegion(params.Region)
|
||||||
awsConfig.WithDisableSSL(!params.Secure)
|
awsConfig.WithDisableSSL(!params.Secure)
|
||||||
// awsConfig.WithMaxRetries(10)
|
|
||||||
|
|
||||||
if params.UserAgent != "" {
|
if params.UserAgent != "" {
|
||||||
awsConfig.WithHTTPClient(&http.Client{
|
awsConfig.WithHTTPClient(&http.Client{
|
||||||
|
|
|
@ -30,6 +30,7 @@ func init() {
|
||||||
secure := os.Getenv("S3_SECURE")
|
secure := os.Getenv("S3_SECURE")
|
||||||
region := os.Getenv("AWS_REGION")
|
region := os.Getenv("AWS_REGION")
|
||||||
root, err := ioutil.TempDir("", "driver-")
|
root, err := ioutil.TempDir("", "driver-")
|
||||||
|
regionEndpoint := os.Getenv("REGION_ENDPOINT")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
@ -57,6 +58,7 @@ func init() {
|
||||||
secretKey,
|
secretKey,
|
||||||
bucket,
|
bucket,
|
||||||
region,
|
region,
|
||||||
|
regionEndpoint,
|
||||||
encryptBool,
|
encryptBool,
|
||||||
secureBool,
|
secureBool,
|
||||||
minChunkSize,
|
minChunkSize,
|
||||||
|
|
Loading…
Reference in a new issue