如何使用 AWS CLI 从 S3 Glacier Flexible Retrieval 或 S3 Glacier Deep Archive 存储类还原 Amazon S3 对象?
我使用生命周期配置将 Amazon Simple Storage Service (Amazon S3) 对象归档到 Amazon S3 Glacier Flexible Retrieval(以前称为 Glacier)或 Amazon S3 Glacier Deep Archive 存储类。如何使用 AWS 命令行界面(AWS CLI)还原该对象?
解决方法
请遵循以下步骤通过 AWS CLI 从 S3 Glacier Flexible Retrieval 存储或 S3 Glacier Deep Archive 类还原 S3 对象。
**注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新的 AWS CLI 版本。
启动还原请求
运行以下命令以启动还原请求。请务必将示例命令中的所有值替换为您的存储桶、对象和还原请求的值。
**注意:**由于数据检索费用基于请求的数量,因此,请务必确认还原请求中的参数正确无误。
$ aws s3api restore-object --bucket awsexamplebucket --key dir1/example.obj --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Standard"}}'
运行此命令后,该对象的临时副本将可在还原请求中指定的期限内可用。在此示例中,还原级别设置为 S3 Standard 时,还原请求中指定的持续时间为 25 天。
请注意您可以对该命令作出如下修改:
- 如要还原版本控制桶中的特定对象版本,请添加 --version-id 选项,然后指定相应的版本 ID。
- 对于 S3 Glacier Flexible Retrieval 存储类,您可以使用“加快”、“标准”或“批量”检索选项。但是,对于 S3 Glacier Deep Archive 存储类,您只能使用“标准”或“批量”检索选项。
- 如果示例中使用的 JSON 句法导致 Windows 客户端错误,则使用如下句法替换还原请求:
--restore-request Days=25,GlacierJobParameters={"Tier"="Standard"}
**注意:**如果对象存储在 S3 Glacier Instant Retrieval 中,则数据检索是即时的,不需要恢复操作。有关更多信息,请参阅对象存储类。
监控还原请求的状态
运行以下命令以监控还原请求的状态:
aws s3api head-object --bucket awsexamplebucket --key dir1/example.obj
运行命令后,如果还原仍在进行中,您会收到类似以下内容的响应:
{
"Restore": "ongoing-request=\"true\"",
...
"StorageClass": "GLACIER | DEEP_ARCHIVE",
"Metadata": {}
}
还原完成后,您会收到类似以下内容的响应:
{
"Restore": "ongoing-request=\"false\", expiry-date=\"Sun, 13 Aug 2017 00:00:00 GMT\"",
...
"StorageClass": "GLACIER | DEEP_ARCHIVE",
"Metadata": {}
}
请注意回应中的到期日期 — 在此时间之前,您一直拥有对临时存储对象(存储在 S3 Standard 存储类中的对象)的访问权限。临时对象,以及位于 S3 Glacier Flexible Retrieval 或 S3 Glacier Deep Archive 存储类中的已归档对象,都可供访问。到期日期结束后,临时对象将被删除。您必须更改临时对象的存储类,临时对象才能过期。要在到期日期之后更改临时对象的存储类,您必须发出一个新还原请求。
将对象的存储类更改为 Amazon S3 Standard
如要将对象的存储类更改为 Amazon S3 Standard,请使用 copy(复制)。您可以覆盖现有对象或将该对象复制到其他位置。
**警告:**如果您使用的是 AWS CLI 1.x 版本,请确保在复制对象之前将多部分阈值设置为 5GB。否则,当对象大小大于 AWS CLI 的多部分阈值时,对象的用户元数据将丢失。对于大于 5GB 的对象,请使用 AWS CLI 的 2.x 版本以保留用户元数据。
(可选)要增加 AWS CLI 的多部分阈值,请运行以下命令:
aws configure set default.s3.multipart_threshold 5GB
如要使用 Amazon S3 Standard 存储类覆盖现有对象,请运行以下命令:
aws s3 cp s3://awsexamplebucket/dir1/example.obj s3://awsexamplebucket/dir1/example.obj --storage-class STANDARD
如要对整个前缀执行递归复制并使用 Amazon S3 Standard 存储类覆盖现有对象,请运行以下命令:
aws s3 cp s3://awsexamplebucket/dir1/ s3://awsexamplebucket/dir1/ --storage-class STANDARD --recursive --force-glacier-transfer
注意:归档到 S3 Glacier Flexible Retrieval 的对象的最短存储持续时间为 90 天。归档到 S3 Glacier Deep Archive 的对象的最短存储持续时间为 180 天。如果您在最短 90 天之前覆盖了 S3 Glacier Flexible Retrieval 中的某个对象,您需要支付 90 天的费用。同样,如果对象位于 S3 Glacier Deep Archive 中且在最短 180 天之前被覆盖,您需要支付 180 天的费用。
如要将对象复制到其他位置,请运行以下命令:
aws s3 cp s3://awsexamplebucket/dir1/example.obj s3://awsexamplebucket/dir2/example2.obj
注意:对于已暂停的存储桶或启用了版本控制的存储桶,此步骤将创建其他对象副本。这些其他对象还会产生存储成本。如要避免存储成本,请移除仍在 Amazon S3 Glacier 存储类中的非当前版本或创建 S3 生命周期过期规则。
相关信息
如何启动当前位于 S3 Glacier 或 S3 Glacier Deep Archive 存储类中的大量 Amazon S3 对象的还原?
相关内容
- 已提问 4 个月前lg...
- 已提问 1 个月前lg...
- 已提问 2 个月前lg...
- 已提问 2 个月前lg...
- 已提问 4 个月前lg...
- AWS 官方已更新 5 个月前
- AWS 官方已更新 8 个月前