我已经用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费用)。
完成您直接尝试完成的操作的方法是执行range retrievals,在该操作中,您仅要求Glacier还原存档的一部分。
您可以选择执行范围检索的另一个原因是管理在给定期间内从Amazon Glacier下载的数据量。从Amazon Glacier检索数据时,将首先启动检索作业,通常将在3-5小时内完成。然后,检索到的数据将在24小时内可供下载。因此,您可以分批检索存档,以管理下载的时间表。您也可以选择执行范围检索,以减少或消除检索费用。
— 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/