in CommonLayerCode/datalake-library/python/datalake_library/interfaces/s3_interface.py [0:0]
def copy_object(self, source_bucket, source_key, dest_bucket, dest_key=None, kms_key=None):
source_key = unquote_plus(source_key)
self._logger.info("Copying object {}/{} to {}/{}".format(source_bucket,
source_key,
dest_bucket,
dest_key if dest_key else source_key))
try:
extra_kwargs = {}
if kms_key:
extra_kwargs = {
"ServerSideEncryption": "aws:kms",
"SSEKMSKeyId": kms_key
}
copy_source = {
'Bucket': source_bucket,
'Key': source_key
}
self._s3_resource.meta.client.copy(copy_source,
dest_bucket,
dest_key if dest_key else source_key,
ExtraArgs=extra_kwargs)
except ClientError:
msg = 'Error copying object: {}/{} to {}/{}'.format(source_bucket,
source_key,
dest_bucket,
dest_key if dest_key else source_key)
self._logger.exception(msg)
raise