@@ -38,15 +38,16 @@ var validRegions = map[string]struct{}{}
3838
3939//DriverParameters A struct that encapsulates all of the driver parameters after all values have been set
4040type DriverParameters struct {
41- AccessKey string
42- SecretKey string
43- Bucket string
44- Region string
45- Encrypt bool
46- Secure bool
47- ChunkSize int64
48- RootDirectory string
49- StorageClass string
41+ AccessKey string
42+ SecretKey string
43+ Bucket string
44+ RegionEndpoint string
45+ Region string
46+ Encrypt bool
47+ Secure bool
48+ ChunkSize int64
49+ RootDirectory string
50+ StorageClass string
5051}
5152
5253func init () {
@@ -66,6 +67,7 @@ func init() {
6667 }
6768
6869 factory .Register (driverName , & s3DriverFactory {})
70+ factory .Register ("minio" , & s3DriverFactory {})
6971}
7072
7173// s3DriverFactory implements the factory.StorageDriverFactory interface
@@ -133,6 +135,11 @@ func FromParameters(parameters map[string]string) (*Driver, error) {
133135 return nil , fmt .Errorf ("No bucket parameter provided" )
134136 }
135137
138+ regionEndpoint , ok := parameters ["regionendpoint" ]
139+ if ! ok || regionEndpoint == "" {
140+ regionEndpoint = ""
141+ }
142+
136143 encryptBool := false
137144 encrypt , ok := parameters ["encrypt" ]
138145 if ok {
@@ -184,9 +191,10 @@ func FromParameters(parameters map[string]string) (*Driver, error) {
184191 }
185192
186193 params := DriverParameters {
187- fmt .Sprint (accessKey ),
188- fmt .Sprint (secretKey ),
189- fmt .Sprint (bucket ),
194+ accessKey ,
195+ secretKey ,
196+ bucket ,
197+ regionEndpoint ,
190198 region ,
191199 encryptBool ,
192200 secureBool ,
@@ -202,25 +210,39 @@ func FromParameters(parameters map[string]string) (*Driver, error) {
202210// bucketName
203211func New (params DriverParameters ) (* Driver , error ) {
204212 awsConfig := aws .NewConfig ()
205- creds := credentials .NewChainCredentials ([]credentials.Provider {
206- & credentials.StaticProvider {
207- Value : credentials.Value {
208- AccessKeyID : params .AccessKey ,
209- SecretAccessKey : params .SecretKey ,
213+ var creds * credentials.Credentials
214+ if params .RegionEndpoint == "" {
215+ creds = credentials .NewChainCredentials ([]credentials.Provider {
216+ & credentials.StaticProvider {
217+ Value : credentials.Value {
218+ AccessKeyID : params .AccessKey ,
219+ SecretAccessKey : params .SecretKey ,
220+ },
210221 },
211- },
212- & credentials.EnvProvider {},
213- & credentials.SharedCredentialsProvider {},
214- & ec2rolecreds.EC2RoleProvider {Client : ec2metadata .New (session .New ())},
215- })
222+ & credentials.EnvProvider {},
223+ & credentials.SharedCredentialsProvider {},
224+ & ec2rolecreds.EC2RoleProvider {Client : ec2metadata .New (session .New ())},
225+ })
226+
227+ } else {
228+ creds = credentials .NewChainCredentials ([]credentials.Provider {
229+ & credentials.StaticProvider {
230+ Value : credentials.Value {
231+ AccessKeyID : params .AccessKey ,
232+ SecretAccessKey : params .SecretKey ,
233+ },
234+ },
235+ & credentials.EnvProvider {},
236+ })
237+ awsConfig .WithS3ForcePathStyle (true )
238+ awsConfig .WithEndpoint (params .RegionEndpoint )
239+ }
216240
217241 awsConfig .WithCredentials (creds )
218242 awsConfig .WithRegion (params .Region )
219243 awsConfig .WithDisableSSL (! params .Secure )
220- // awsConfig.WithMaxRetries(10)
221244
222245 s3obj := s3 .New (session .New (awsConfig ))
223-
224246 _ , err := s3obj .CreateBucket (& s3.CreateBucketInput {
225247 Bucket : & params .Bucket ,
226248 })
0 commit comments