Boto3 S3 put_object函数如何在python中工作

时间:2016-04-06 09:13:51

标签: python-2.7 boto boto3

使用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 

1 个答案:

答案 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