diff --git a/cmd/restic/global.go b/cmd/restic/global.go index e0d94814b..f2e7c7517 100644 --- a/cmd/restic/global.go +++ b/cmd/restic/global.go @@ -485,6 +485,10 @@ func parseConfig(loc location.Location, opts options.Options) (interface{}, erro cfg.Secret = os.Getenv("AWS_SECRET_ACCESS_KEY") } + if cfg.Region == "" { + cfg.Region = os.Getenv("AWS_REGION") + } + if err := opts.Apply(loc.Scheme, &cfg); err != nil { return nil, err } diff --git a/internal/backend/s3/config.go b/internal/backend/s3/config.go index 932806714..472d79e4a 100644 --- a/internal/backend/s3/config.go +++ b/internal/backend/s3/config.go @@ -22,6 +22,7 @@ type Config struct { Connections uint `option:"connections" help:"set a limit for the number of concurrent connections (default: 5)"` MaxRetries uint `option:"retries" help:"set the number of retries attempted"` + Region string } // NewConfig returns a new Config with the default values filled in. diff --git a/internal/backend/s3/s3.go b/internal/backend/s3/s3.go index 02eda53be..acdb1bc4f 100644 --- a/internal/backend/s3/s3.go +++ b/internal/backend/s3/s3.go @@ -66,7 +66,7 @@ func open(cfg Config, rt http.RoundTripper) (*Backend, error) { }, }, }) - client, err := minio.NewWithCredentials(cfg.Endpoint, creds, !cfg.UseHTTP, "") + client, err := minio.NewWithCredentials(cfg.Endpoint, creds, !cfg.UseHTTP, cfg.Region) if err != nil { return nil, errors.Wrap(err, "minio.NewWithCredentials") }