From 3c501db442b47dddc0c21fcae61d665c51c3f301 Mon Sep 17 00:00:00 2001 From: Daniel Jiang Date: Thu, 8 Feb 2024 16:19:37 +0800 Subject: [PATCH] Set the default checksum algorithm for PutObject to S3 CRC32 was chosen due to the low cost. fixes #7400 Signed-off-by: Daniel Jiang --- velero-plugin-for-aws/object_store.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/velero-plugin-for-aws/object_store.go b/velero-plugin-for-aws/object_store.go index 53d6dae..f439262 100644 --- a/velero-plugin-for-aws/object_store.go +++ b/velero-plugin-for-aws/object_store.go @@ -73,6 +73,7 @@ type ObjectStore struct { signatureVersion string serverSideEncryption string tagging string + checksumAlg string } func newObjectStore(logger logrus.FieldLogger) *ObjectStore { @@ -187,6 +188,8 @@ func (o *ObjectStore) Init(config map[string]string) error { return err } } + // TODO: Make it configurable in plugin v1.10 + o.checksumAlg = string(types.ChecksumAlgorithmCrc32) return nil } @@ -241,6 +244,10 @@ func (o *ObjectStore) PutObject(bucket, key string, body io.Reader) error { input.ServerSideEncryption = types.ServerSideEncryption(o.serverSideEncryption) } + if o.checksumAlg != "" { + input.ChecksumAlgorithm = types.ChecksumAlgorithm(o.checksumAlg) + } + _, err := o.s3Uploader.Upload(context.Background(), input) return errors.Wrapf(err, "error putting object %s", key)