如何通过"copying"相同的键来更改 S3 对象的设置?



我想更改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

最新更新