Boto3 S3 put_object 功能如何在 python 中工作

How does Boto3 S3 put_object function works in python

使用 Boto3: 我正在使用 put_object() 函数在 s3 中上传对象。我正在使用带有客户加密密钥参数的 put_object() 进行服务器端加密。

与博托: 我正在使用 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 

我们可以使用来自 boto 的 set_contents_to_string() 和 get_contents_as_string() 函数,而不是 Boto3 put_object()。 这些调用还支持使用客户密钥 (SSE-C) 的服务器端加密。我们只需要在 headers

中提供所有密钥信息

了解更多详情 http://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html