【发布时间】:2015-01-19 23:43:39
【问题描述】:
在启用了版本的存储桶上使用 python/boto 与 AWS S3 交互 - 如何将密钥恢复为历史版本?
我可以下载该文件的历史版本并重新上传,但这样做效率低下并且会导致重复密钥。有没有办法选择我想要的版本并使其处于活动/当前状态(以便在未提供版本时自动下载)?
from boto.s3.connection import S3Connection
from boto.s3.key import Key
conn = S3Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
bucket = conn.create_bucket('my_test_bucket')
key = Key(bucket)
key.key = 'my_file.pdf'
key.set_contents_from_filename('1.pdf')
key.set_contents_from_filename('2.pdf')
key.set_contents_from_filename('3.pdf')
# Now I have a file with the key `my_file.pdf`
# and I can see the versions using something like:
versions = list(bucket.list_versions('my_file.pdf'))
print [k.version_id for k in versions]
# To make on older version active, I can download & re-upload
versions[1].get_contents_to_filename('old.pdf')
key.set_contents_from_filename('old.pdf')
# But this seems very inefficient, and creates duplicate version keys. It would be
# Nice to do something like:
versions[1].last_modified = datetime.now()
# Or even this, but this seems less efficient:
versions[1].copy('my_test_bucket', 'my_file.pdf') # And then delete
bucket.delete_key('my_file.pdf', version_id=versions[1])
【问题讨论】:
标签: python amazon-web-services amazon-s3 versioning boto