如何使用smart_open将流写入KMS加密的S3存储桶?

时间:2020-10-30 14:08:26

标签: python amazon-web-services amazon-s3 aws-lambda

我正在尝试使用smart_open将流写入KMS加密的S3存储桶,但无济于事。查看smart_open的代码,似乎有一个测试用例,但我无法运行它:

@_test_case
def test_s3_encrypted_file(benchmark, uri):
    text = 'с гранатою в кармане, с чекою в руке'
    s3_upload = {'ServerSideEncryption': 'AES256'}
    actual = benchmark(write_read, uri, text, 'w', 'r', 'utf-8', s3_upload=s3_upload)
    assert actual == text

我认为这会起作用,但是它只是说s3_upload不是一个选择:

file = smart_open.open(url, 'w', transport_params={'session': session, s3_upload={'ServerSideEncryption': 'aws:kms', 'SSEKMSKeyId': key}})
file.write(content)
file.close()

有什么想法我做错了吗?

1 个答案:

答案 0 :(得分:0)

该参数看起来像是renamed recently,所以它不是s3_upload而是multipart_upload_kwargs

根据您的示例,我刚刚开始工作了

file = smart_open.open(url, 'w', transport_params={'session': session, 'multipart_upload_kwargs': {'ServerSideEncryption': 'aws:kms', 'SSEKMSKeyId': key}})
file.write(content)
file.close()