fix(remote): don't send empty StorageClass in S3 uploads (#8645)
When S3StorageClass is empty (the default), aws.String("") was passed
as the StorageClass in PutObject requests. While AWS S3 treats this as
"use default," S3-compatible providers (e.g. SharkTech) reject it with
InvalidStorageClass. Only set StorageClass when a non-empty value is
configured, letting the provider use its default.
Fixes #8644
This commit is contained in:
@@ -275,13 +275,16 @@ func (s *s3RemoteStorageClient) WriteFile(loc *remote_pb.RemoteStorageLocation,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Upload the file to S3.
|
// Upload the file to S3.
|
||||||
_, err = uploader.Upload(&s3manager.UploadInput{
|
uploadInput := &s3manager.UploadInput{
|
||||||
Bucket: aws.String(loc.Bucket),
|
Bucket: aws.String(loc.Bucket),
|
||||||
Key: aws.String(loc.Path[1:]),
|
Key: aws.String(loc.Path[1:]),
|
||||||
Body: reader,
|
Body: reader,
|
||||||
Tagging: awsTags,
|
Tagging: awsTags,
|
||||||
StorageClass: aws.String(s.conf.S3StorageClass),
|
}
|
||||||
})
|
if s.conf.S3StorageClass != "" {
|
||||||
|
uploadInput.StorageClass = aws.String(s.conf.S3StorageClass)
|
||||||
|
}
|
||||||
|
_, err = uploader.Upload(uploadInput)
|
||||||
|
|
||||||
//in case it fails to upload
|
//in case it fails to upload
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user