From a9852794af74c6e2f060a64763a2db1d723f57e8 Mon Sep 17 00:00:00 2001 From: Robert Szulist Date: Tue, 16 Jun 2026 21:56:37 +0200 Subject: [PATCH] fix: GCS signing issue As described here: https://github.com/aws/aws-sdk-go-v2/issues/1816#issuecomment-4526752227 --- pkg/files/filehandling.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pkg/files/filehandling.go b/pkg/files/filehandling.go index 474c8a576..c4022e396 100644 --- a/pkg/files/filehandling.go +++ b/pkg/files/filehandling.go @@ -21,6 +21,7 @@ import ( "context" "errors" "fmt" + "net/http" "os" "testing" "time" @@ -45,6 +46,16 @@ func setDefaultLocalConfig() { config.FilesBasePath.Set(config.ResolvePath(config.FilesBasePath.GetString())) } +// Wrap Signer to remove header +type gcsHttpSigner struct { + wrapped s3.HTTPSignerV4 +} + +func (s *gcsHttpSigner) SignHTTP(ctx context.Context, credentials aws.Credentials, req *http.Request, payloadHash string, service string, region string, signingTime time.Time, optFns ...func(*v4.SignerOptions)) error { + req.Header.Del("Accept-Encoding") + return s.wrapped.SignHTTP(ctx, credentials, req, payloadHash, service, region, signingTime, optFns...) +} + // initS3FileHandler initializes the S3 file backend func initS3FileHandler() error { // Get S3 configuration @@ -80,6 +91,10 @@ func initS3FileHandler() error { client := s3.NewFromConfig(cfg, func(o *s3.Options) { o.BaseEndpoint = aws.String(endpoint) o.UsePathStyle = config.FilesS3UsePathStyle.GetBool() + if endpoint == "https://storage.googleapis.com" { + o.HTTPSignerV4 = &gcsHttpSigner{wrapped: o.HTTPSignerV4} + cfg.RequestChecksumCalculation = aws.RequestChecksumCalculationWhenRequired + } if config.FilesS3DisableSigning.GetBool() { o.APIOptions = append(o.APIOptions, v4.SwapComputePayloadSHA256ForUnsignedPayloadMiddleware) }