python - 给定 archive_id,我如何将存档从 AWS Glacier 移动到 S3 存储桶?

标签 python amazon-web-services amazon-s3 boto amazon-glacier

我用 Python Boto 编写了一个文件系统,它 tar 了几个文件目录并上传到 Glacier。这一切都运行良好,我正在存储所有存档 ID。

我想测试下载一个大文件(大约 120GB)。我发起了检索,但下载花了超过 24 小时,最后我得到了 403,因为资源不再可用并且下载失败。

如果我直接从服务器存档到 Glacier(跳过 S3),是否可以启动将存档恢复到 S3 存储桶的恢复,以便我可以花费超过 24 小时来下载副本?我在 S3 或 Glacier Boto 文档中没有看到任何内容。

理想情况下,我会使用 Boto 来完成此操作,但也会接受其他可编写脚本的选项。有谁知道如何给定 archiveId,我可以将存档从 AWS Glacier 移动到 S3 存储桶?如果这是不可能的,是否有其他选项可以让我自己有更多时间下载大文件?

谢谢!

http://docs.pythonboto.org/en/latest/ref/glacier.html http://docs.pythonboto.org/en/latest/ref/s3.html

最佳答案

直接 Glacier API 和 S3/Glacier 集成未以 AWS 用户可以访问的方式相互连接。

如果您直接上传到 Glacier,取回数据的唯一方法是直接从 Glacier 取回数据。

相反,如果您通过 S3 生命周期策略将内容添加到 Glacier,则不会公开 Glacier 存档 ID,获取内容的唯一方法是执行 S3 恢复。

当您使用 Glacier/S3 集成时,本质上就好像“您”不是 Glacier 客户,而“S3”是 Glacier 客户。 (事实上​​,这是一个非常好的思维模型 - Glacier 存储费用甚至以不同的方式计费 - 通过 S3 集成存储的文件与每月发票上的其他 S3 费用一起计费,而不是与 Glacier 费用一起计费)。 p>

完成您想要直接完成的任务的方法是执行 range retrievals ,您仅请求 Glacier 恢复存档的一部分。

Another reason you could choose to perform a range retrieval is to manage how much data you download from Amazon Glacier in a given period. When data is retrieved from Amazon Glacier, a retrieval job is first initiated, which will typically complete in 3-5 hours. The data retrieved is then available for download for 24 hours. You could therefore retrieve an archive in parts in order to manage the schedule of your downloads. You may also choose to perform range retrievals in order to reduce or eliminate your retrieval fees.

http://aws.amazon.com/glacier/faqs/

然后你需要重新组装这些部件。最后一部分似乎也是一个很大的优势,因为 Glacier 确实收费更高,一次“恢复”的数据越多。请注意,这不是下载数据的费用,而是恢复操作的费用,无论您是否下载。

我认为 S3 集成的一个优点是,您可以将数据在 S3 中“冷却”几个小时/天/周,然后再将其放在 Glacier 中“冰冻”,这是自动发生的……所以您可以从 S3 取回它,而无需支付检索费用,直到它在 S3 中停留了您指定的时间,之后它会自动迁移。潜在的缺点是它似乎引入了更多的移动部件。

关于python - 给定 archive_id,我如何将存档从 AWS Glacier 移动到 S3 存储桶?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21729054/

相关文章:

python - 如何从另一个 AWS 角色代入 AWS 角色?

javascript - 将 csv 文件写入 AWS S3 失败

hadoop - 在集群部署模式下运行 spark 提交作业失败但通过客户端

python - 带有 ManyToMany 的 Django QuerySet 被传递给自定义序列化程序

python - 如何给 Matplotlib imshow plot colorbars 一个标签

java - EC2 : why public DNS works but not public IP? 上的 Hadoop 配置

amazon-web-services - 我如何真正将 docker-compose.yml 部署到云端?

python - 设置 Tkinter 默认小部件 kwargs

python - Py.test 跳过消息不显示在 Jenkins 中

amazon-s3 - 由于身份验证,gsutil 无法复制到 s3