diff --git a/awscli/customizations/s3/subscribers.py b/awscli/customizations/s3/subscribers.py index 34bb2815d97d..b63a8b97c350 100644 --- a/awscli/customizations/s3/subscribers.py +++ b/awscli/customizations/s3/subscribers.py @@ -279,7 +279,7 @@ def _get_head_object_response(self, future): 'Bucket': copy_source['Bucket'], 'Key': copy_source['Key'], } - utils.RequestParamsMapper.map_head_object_params( + utils.RequestParamsMapper.map_head_object_params_with_copy_source_sse( head_object_params, self._cli_params) return self._client.head_object(**head_object_params) diff --git a/awscli/customizations/s3/utils.py b/awscli/customizations/s3/utils.py index 6f76a9abb7e3..4fa19bfe16b7 100644 --- a/awscli/customizations/s3/utils.py +++ b/awscli/customizations/s3/utils.py @@ -505,6 +505,12 @@ def map_head_object_params(cls, request_params, cli_params): cls._set_sse_c_request_params(request_params, cli_params) cls._set_request_payer_param(request_params, cli_params) + @classmethod + def map_head_object_params_with_copy_source_sse(cls, request_params, cli_params): + """Map CLI params to HeadObject request params, considering the SSE-C header from the copy source""" + cls._set_sse_c_request_params_with_copy_source_sse(request_params, cli_params) + cls._set_request_payer_param(request_params, cli_params) + @classmethod def map_create_multipart_upload_params(cls, request_params, cli_params): """Map CLI params to CreateMultipartUpload request params""" @@ -618,6 +624,12 @@ def _set_sse_c_request_params(cls, request_params, cli_params): request_params['SSECustomerAlgorithm'] = cli_params['sse_c'] request_params['SSECustomerKey'] = cli_params['sse_c_key'] + @classmethod + def _set_sse_c_request_params_with_copy_source_sse(cls, request_params, cli_params): + if cli_params.get('sse_c_copy_source'): + request_params['SSECustomerAlgorithm'] = cli_params['sse_c_copy_source'] + request_params['SSECustomerKey'] = cli_params['sse_c_copy_source_key'] + @classmethod def _set_sse_c_copy_source_request_params(cls, request_params, cli_params): if cli_params.get('sse_c_copy_source'):