4

我定期使用 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 常见问题解答中所述:“可以在单个上传请求中上传的最大存档为 4 GB。对于大于 100 MB 的项目,客户应考虑使用分段上传功能。”

如何将分段上传功能与 boto 和 AWS Glacier 结合使用?

4

3 回答 3

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)
于 2017-01-16T14:03:51.457 回答
2

Amazon Glacier 使用术语存档来描述文件。换句话说,您不能将大于 4GB 的文件上传到 Glacier。如果您仍然想尝试分段上传器,请查看 vault.concurrent_create_archive_from_file 或 vault.create_archive_writer

于 2013-01-09T02:43:06.350 回答
1

冰川文档明确指出:

根据您上传的数据大小,Amazon Glacier 提供以下选项:

  • 一次操作上传档案— 在一次操作中,您可以上传大小从 1 字节到最多 4 GB 的档案。但是,我们鼓励 Amazon Glacier 客户使用分段上传来上传大于 100 MB 的档案。

  • 分段上传档案—使用分段上传 API,您可以上传大型档案,最高可达 40,000 GB (10,000 * 4 GB)。

    Multipart Upload API 调用旨在改善大型档案的上传体验。您可以分段上传档案。这些部分可以按任意顺序独立上传,也可以并行上传。如果部分上传失败,您只需要再次上传该部分而不是整个存档。您可以对大小从 1 字节到大约 40,000 GB 的档案使用分段上传。

boto第 2 层中,这意味着您必须使用以下方法之一boto.glacier.vault.Vault

  • concurrent_create_archive_from_file
  • create_archive_writer
  • upload_archive
于 2013-12-04T11:23:55.280 回答