我想更改S3对象的server_side_encryption
设置(最好使用boto3
(。
据我所知,我实际上无法像这样更改S3对象设置,而是需要用新设置"复制"对象。首先,这是真的吗?如果是,是否可以将S3对象复制到同一个键(在一次操作中(,从而用具有新设置的新文件覆盖原始文件?
AWS S3对象一旦创建就不能修改。您不能在适当的位置写入、追加等。AWS确实支持通过在进行更改时将S3对象复制到位来更改S3对象。加密属于这一类。
以下是John Rotenstein关于如何加密S3中已经存在的文件的python示例。给约翰的答案加上一张选票,它对你有帮助。
加密现有文件
约翰·罗滕斯坦的例子:
import boto
conn = boto.connect_s3('REGION')
bucket = conn.get_bucket('BUCKET')
for k in bucket.list():
bucket.copy_key(new_key_name=k.key, src_bucket_name=bucket.name, src_key_name=k.key, encrypt_key=True)
是的,您可以将文件复制到其自身以更改服务器端加密设置。
以下是使用AWS命令行界面(CLI(的示例:
aws s3 cp s3://my-bucket/foo.txt s3://my-bucket/foo.txt --sse AES256