s3: fix Copy ignoring storage class

Co-authored-by: sys6101 <csvmen@gmail.com>
This commit is contained in:
vupn0712
2025-12-20 21:42:00 +07:00
committed by GitHub
parent f81cd7d279
commit 029ffd2761

View File

@@ -2928,7 +2928,9 @@ func (f *Fs) Copy(ctx context.Context, src fs.Object, remote string) (fs.Object,
req := s3.CopyObjectInput{ req := s3.CopyObjectInput{
MetadataDirective: types.MetadataDirectiveCopy, MetadataDirective: types.MetadataDirectiveCopy,
} }
if srcObj.storageClass != nil {
req.StorageClass = types.StorageClass(*srcObj.storageClass)
}
// Build upload options including headers and metadata // Build upload options including headers and metadata
ci := fs.GetConfig(ctx) ci := fs.GetConfig(ctx)
uploadOptions := fs.MetadataAsOpenOptions(ctx) uploadOptions := fs.MetadataAsOpenOptions(ctx)
@@ -4501,7 +4503,12 @@ func (o *Object) prepareUpload(ctx context.Context, src fs.ObjectInfo, options [
ACL: types.ObjectCannedACL(o.fs.opt.ACL), ACL: types.ObjectCannedACL(o.fs.opt.ACL),
Key: &bucketPath, Key: &bucketPath,
} }
if tierObj, ok := src.(fs.GetTierer); ok {
tier := tierObj.GetTier()
if tier != "" {
ui.req.StorageClass = types.StorageClass(strings.ToUpper(tier))
}
}
// Fetch metadata if --metadata is in use // Fetch metadata if --metadata is in use
meta, err := fs.GetMetadataOptions(ctx, o.fs, src, options) meta, err := fs.GetMetadataOptions(ctx, o.fs, src, options)
if err != nil { if err != nil {