如何使用 AWS CLI 从 Glacier 下载档案

Posted

技术标签:

【中文标题】如何使用 AWS CLI 从 Glacier 下载档案【英文标题】:How to download archive from Glacier using AWS CLI 【发布时间】:2016-03-22 20:35:05 【问题描述】:

如何使用 AWS CLI 从 Glacier 下载档案? 我试过了:

aws glacier initiate-job --vault-name test --account-id - --job-parameters '"Type": "archive-retrieval", "ArchiveId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"'  

我收到以下错误:

调用时发生客户端错误 (PolicyEnforcedException) InitiateJob 操作:InitiateJob 请求被当前数据拒绝 检索策略。

我想这类似于inventory-retrieval 操作,比如现在发送请求,5 小时后再次运行命令下载它。

【问题讨论】:

【参考方案1】:

当我的“数据检索策略”为“仅限免费套餐”时,我遇到了同样的错误。

两种方式:

1) 限制下载:

阅读此https://aws.amazon.com/glacier/faqs/#How_much_data_can_I_retrieve_for_free。简而言之:每天您可以免费检索大约 0.17% 的存储数据。

2) 为您的下载付费:

您应该使用网络界面更改它:“Amazon Glacier Vaults”页面 -> 设置; 或使用 aws cli:请参阅 set-data-retrieval-policy https://docs.aws.amazon.com/cli/latest/reference/glacier/set-data-retrieval-policy.html

【讨论】:

嗨 - 我知道这一点,如果我将其更改为另一层,它就可以工作。但这有悖于目的;在我读到的所有地方,他们都吹嘘“免费层”以及使用 Glacier 的成本如何。所以我想了解如何使用免费层提取数据。 阅读aws.amazon.com/glacier/faqs/…。简而言之:每天您可以免费检索大约 0.17% 的存储数据。 非常好的信息,谢谢。但是我认为我在限制范围内。我存储了 11 个档案,总大小为 110.5MB。根据他们的公式,110.5MB * 5% / 30 = 20MB - 我应该可以免费下载。一个存档11MB,下载还是失败。 你的算法很奇怪... 110.5MB * 5% / 30 ~ 180KB 其实不是我,是 Windows 计算器:110.5MB * 5% / 30 = 20.35041666666667。我试过另一个计算器,确实是 184kb。【参考方案2】:

您需要在策略文档中添加“glacier:InitiateJob”作为允许的操作。

转到您的 Web UI,单击 Glacier,然后单击您的 Vault。 单击权限,然后单击编辑策略文档。在这里,您在名为“Action”的字段下添加“glacier:InitiateJob”行:[

【讨论】:

已添加,但仍无法正常工作。我什至添加了action: glacier:*, principal: "*",意思是允许所有用户执行所有操作,但仍然没有。我认为“PolicyEnforcedException”指的是数据检索策略(免费层、最大检索率、无检索限制),而不是权限策略。 另外,我已经将“AmazonGlacierFullAccess”角色附加到此测试中使用的 IAM 用户,因此我真的不需要在 Glacier 端添加其他策略权限。【参考方案3】:

对于像我一样被卡住的人:

如果您的工作成功完成但您不知道该怎么做,请使用get-job-output。

【讨论】:

以上是关于如何使用 AWS CLI 从 Glacier 下载档案的主要内容,如果未能解决你的问题,请参考以下文章

Amazon AWS Athena S3 和 Glacier 混合存储桶

AWS CSAA -- 04 AWS Object Storage and CDN - S3 Glacier and CloudFront

AWS CSAA -- 04 AWS Object Storage and CDN - S3 Glacier and CloudFront

如何通过忽略未使用的资源从 aws cli 创建 aws java lambda 函数?

Amazon Glacier

如何从 ECS 任务中安装 aws cli?