Boto Glacier - 使用分段上传上传大于4 GB的文件

时间:2013-01-02 18:18:53

标签: boto amazon-glacier

我定期使用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上传功能?

3 个答案:

答案 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