From 5f0f200c035acf29ec3e11a35b03aabd587d30be Mon Sep 17 00:00:00 2001 From: Jason Yang Date: Tue, 3 Jun 2025 23:20:00 -0700 Subject: [PATCH] fix: browser for bucket handle https connection using new resolver --- backend/router/browse.go | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/backend/router/browse.go b/backend/router/browse.go index 1f0f80d..6434b13 100644 --- a/backend/router/browse.go +++ b/backend/router/browse.go @@ -331,15 +331,26 @@ func getS3Client(bucket string) (*s3.Client, error) { return nil, fmt.Errorf("cannot get credentials for bucket %s: %w", bucket, err) } + // Determine endpoint and whether to disable HTTPS + endpoint := utils.Garage.GetS3Endpoint() + disableHTTPS := !strings.HasPrefix(endpoint, "https://") + + // AWS config without BaseEndpoint awsConfig := aws.Config{ - Credentials: creds, - Region: utils.Garage.GetS3Region(), - BaseEndpoint: aws.String(utils.Garage.GetS3Endpoint()), + Credentials: creds, + Region: utils.Garage.GetS3Region(), } + // Build S3 client with custom endpoint resolver for proper signing client := s3.NewFromConfig(awsConfig, func(o *s3.Options) { o.UsePathStyle = true - o.EndpointOptions.DisableHTTPS = true + o.EndpointOptions.DisableHTTPS = disableHTTPS + o.EndpointResolver = s3.EndpointResolverFunc(func(region string, opts s3.EndpointResolverOptions) (aws.Endpoint, error) { + return aws.Endpoint{ + URL: endpoint, + SigningRegion: utils.Garage.GetS3Region(), + }, nil + }) }) return client, nil