使用Boto3: 我正在使用put_object()函数在s3中上传对象。我使用带有客户加密密钥参数的put_object()进行服务器端加密。
与Boto: 我正在使用upload_chunk函数在s3中上传对象。在这里,我使用aws托管密钥进行服务器端加密而不是客户给出,因为它不支持API
所以使用Boto3方法,我的程序比Boto方法占用更多内存。 请告诉我put_object函数如何在boto3中用于服务器端加密。
它是否正在使用机器的内存进行加密?
我应该显式清理作为Body参数传递给put_object函数的数据缓冲区吗?
代码:
def put_s3_object(self, target_key_name, data, sse_cust_key, sse_cust_key_md5):
''' description: Upload file as s3 object using SSE with customer key
It will store s3 object in encrypted format
input:
target_key_name (#string) data(in memory string/bytes)
sse_cust_key (#string)
sse_cust_key_md5 (#string)
output: response
'''
if not target_key_name:
raise
try:
response = self.s3_client.put_object(Bucket = self.source_bucket, Body = data, Key = target_key_name, SSECustomerAlgorithm = awsParams.CLOUD_DR_AWS_SSE_ALGO, SSECustomerKey = sse_cust_key, SSECustomerKeyMD5 = sse_cust_key_md5)
del data
except botocore.exceptions.ClientError, fault:
raise
except Exception, fault:
raise
答案 0 :(得分:1)
我们可以使用boto中的set_contents_to_string()和get_contents_as_string()函数代替Boto3 put_object()。 这些调用还支持使用客户密钥(SSE-C)进行服务器端加密。我们只需要在标题中提供所有密钥信息
了解更多详情 http://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html