From 42013d365bc42f15d79d3f39174571a5bb18bdb6 Mon Sep 17 00:00:00 2001 From: sebastian-heinz Date: Tue, 6 May 2025 10:28:16 +0800 Subject: [PATCH] use path style --- backend/s3proxy/client.go | 1 + backend/s3proxy/s3.go | 4 +++- cmd/versitygw/s3.go | 10 +++++++++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/backend/s3proxy/client.go b/backend/s3proxy/client.go index b88e50a..b142559 100644 --- a/backend/s3proxy/client.go +++ b/backend/s3proxy/client.go @@ -36,6 +36,7 @@ func (s *S3Proxy) getClientWithCtx(ctx context.Context) (*s3.Client, error) { if s.endpoint != "" { return s3.NewFromConfig(cfg, func(o *s3.Options) { o.BaseEndpoint = &s.endpoint + o.UsePathStyle = s.usePathStyle }), nil } diff --git a/backend/s3proxy/s3.go b/backend/s3proxy/s3.go index 0c62987..09ff40c 100644 --- a/backend/s3proxy/s3.go +++ b/backend/s3proxy/s3.go @@ -58,6 +58,7 @@ type S3Proxy struct { metaBucket string disableChecksum bool sslSkipVerify bool + usePathStyle bool debug bool } @@ -75,7 +76,7 @@ func NewWithClient(ctx context.Context, client *s3.Client, metaBucket string) (* return s, s.validate(ctx) } -func New(ctx context.Context, access, secret, endpoint, region, metaBucket string, disableChecksum, sslSkipVerify, debug bool) (*S3Proxy, error) { +func New(ctx context.Context, access, secret, endpoint, region, metaBucket string, disableChecksum, sslSkipVerify, usePathStyle, debug bool) (*S3Proxy, error) { s := &S3Proxy{ access: access, secret: secret, @@ -84,6 +85,7 @@ func New(ctx context.Context, access, secret, endpoint, region, metaBucket strin metaBucket: metaBucket, disableChecksum: disableChecksum, sslSkipVerify: sslSkipVerify, + usePathStyle: usePathStyle, debug: debug, } client, err := s.getClientWithCtx(ctx) diff --git a/cmd/versitygw/s3.go b/cmd/versitygw/s3.go index 671dec2..a4dcac8 100644 --- a/cmd/versitygw/s3.go +++ b/cmd/versitygw/s3.go @@ -29,6 +29,7 @@ var ( s3proxyMetaBucket string s3proxyDisableChecksum bool s3proxySslSkipVerify bool + s3proxyUsePathStyle bool s3proxyDebug bool ) @@ -92,6 +93,13 @@ to an s3 storage backend service.`, Value: false, Destination: &s3proxySslSkipVerify, }, + &cli.BoolFlag{ + Name: "use-path-style", + Usage: "use path style addressing for s3 proxy", + EnvVars: []string{"VGW_S3_USE_PATH_STYLE"}, + Value: false, + Destination: &s3proxyUsePathStyle, + }, &cli.BoolFlag{ Name: "debug", Usage: "output extra debug tracing", @@ -105,7 +113,7 @@ to an s3 storage backend service.`, func runS3(ctx *cli.Context) error { be, err := s3proxy.New(ctx.Context, s3proxyAccess, s3proxySecret, s3proxyEndpoint, s3proxyRegion, - s3proxyMetaBucket, s3proxyDisableChecksum, s3proxySslSkipVerify, s3proxyDebug) + s3proxyMetaBucket, s3proxyDisableChecksum, s3proxySslSkipVerify, s3proxyUsePathStyle, s3proxyDebug) if err != nil { return fmt.Errorf("init s3 backend: %w", err) }