我定期使用boto将文件上传到AWS Glacier,如下所示:
# Import boto's layer2
import boto.glacier.layer2
# Create a Layer2 object to connect to Glacier
l = boto.glacier.layer2.Layer2(aws_access_key_id=awsAccess, aws_secret_access_key=awsSecret)
# Get a vault based on vault name (assuming you created it already)
v = l.get_vault(vaultName)
# Create an archive from a local file on the vault
archiveID = v.create_archive_from_file(fileName)
但是,对于大小超过4 GB的文件,这会失败。
我假设这是因为Amazon Glacier FAQ中指定:“可以在单个上传请求中上传的最大存档为4千兆字节。对于大于100兆字节的项目,客户应考虑使用分段上传功能。“
如何在Boto和AWS Glacier中使用Multipart上传功能?
答案 0 :(得分:3)
我刚刚查看了消息来源,似乎 boto.glacier.vault.Vault.upload_archive()会自动完成所有魔法:
将存档添加到保管库。 对于大于100MB的档案,将使用分段上传。
def upload_archive(self, filename, description=None):
if os.path.getsize(filename) > self.SingleOperationThreshold:
return self.create_archive_from_file(filename, description=description)
return self._upload_archive_single_operation(filename, description)
答案 1 :(得分:2)
Amazon Glacier使用术语存档来描述文件。换句话说,您无法将大于4GB的文件上传到Glacier。如果您还想尝试多部分上传器,请查看vault.concurrent_create_archive_from_file或vault.create_archive_writer
答案 2 :(得分:1)
glacier docs明确指出:
根据您上传的数据大小,Amazon Glacier提供以下选项:
在一次操作中上传档案 - 在一次操作中,您可以 将归档文件从1个字节上传到最大4 GB。但是,我们 鼓励Amazon Glacier客户使用Multipart Upload进行上传 档案大于100 MB。
上传部分档案 - 使用Multipart上传API,您可以上传大型档案,最高可达40,000 GB(10,000 * 4 GB)。
Multipart Upload API调用旨在改善较大档案的上传体验。您可以部分上传档案。这些部件可以独立,任意顺序和并行上载。如果部件上载失败,您只需要再次上传该部件而不是整个存档。您可以将Multipart Upload用于从1字节到大约40,000 GB的归档。
在boto
第2层中,这意味着您必须使用boto.glacier.vault.Vault
concurrent_create_archive_from_file
create_archive_writer
upload_archive