@@ -102,6 +102,12 @@ var globalFlags = []cli.Flag{ | |||||
Value: "http://s3-eu-west-1.amazonaws.com", | Value: "http://s3-eu-west-1.amazonaws.com", | ||||
EnvVar: "S3_ENDPOINT", | EnvVar: "S3_ENDPOINT", | ||||
}, | }, | ||||
cli.StringFlag{ | |||||
Name: "s3-region", | |||||
Usage: "", | |||||
Value: "eu-west-1", | |||||
EnvVar: "S3_REGION", | |||||
}, | |||||
cli.StringFlag{ | cli.StringFlag{ | ||||
Name: "aws-access-key", | Name: "aws-access-key", | ||||
Usage: "", | Usage: "", | ||||
@@ -332,7 +338,7 @@ func New() *Cmd { | |||||
panic("secret-key not set.") | panic("secret-key not set.") | ||||
} else if bucket := c.String("bucket"); bucket == "" { | } else if bucket := c.String("bucket"); bucket == "" { | ||||
panic("bucket not set.") | panic("bucket not set.") | ||||
} else if storage, err := server.NewS3Storage(accessKey, secretKey, bucket, c.String("s3-endpoint"), logger, c.Bool("s3-no-multipart")); err != nil { | |||||
} else if storage, err := server.NewS3Storage(accessKey, secretKey, bucket, c.String("s3-endpoint"), logger, c.Bool("s3-no-multipart"), c.String("s3-region")); err != nil { | |||||
panic(err) | panic(err) | ||||
} else { | } else { | ||||
options = append(options, server.UseStorage(storage)) | options = append(options, server.UseStorage(storage)) | ||||
@@ -132,8 +132,8 @@ type S3Storage struct { | |||||
noMultipart bool | noMultipart bool | ||||
} | } | ||||
func NewS3Storage(accessKey, secretKey, bucketName, endpoint string, logger *log.Logger, disableMultipart bool) (*S3Storage, error) { | |||||
sess := getAwsSession(accessKey, secretKey, endpoint) | |||||
func NewS3Storage(accessKey, secretKey, bucketName, endpoint string, logger *log.Logger, disableMultipart bool, region string) (*S3Storage, error) { | |||||
sess := getAwsSession(accessKey, secretKey, endpoint, region) | |||||
return &S3Storage{bucket: bucketName, s3: s3.New(sess), session: sess, logger: logger, noMultipart: disableMultipart}, nil | return &S3Storage{bucket: bucketName, s3: s3.New(sess), session: sess, logger: logger, noMultipart: disableMultipart}, nil | ||||
} | } | ||||
@@ -37,9 +37,9 @@ import ( | |||||
"github.com/golang/gddo/httputil/header" | "github.com/golang/gddo/httputil/header" | ||||
) | ) | ||||
func getAwsSession(accessKey, secretKey, endpoint string) *session.Session { | |||||
func getAwsSession(accessKey, secretKey, endpoint string, region string) *session.Session { | |||||
return session.Must(session.NewSession(&aws.Config{ | return session.Must(session.NewSession(&aws.Config{ | ||||
Region: aws.String("eu-west-1"), | |||||
Region: aws.String(region), | |||||
Endpoint: aws.String(endpoint), | Endpoint: aws.String(endpoint), | ||||
Credentials: credentials.NewStaticCredentials(accessKey, secretKey, ""), | Credentials: credentials.NewStaticCredentials(accessKey, secretKey, ""), | ||||
})) | })) | ||||