上次更新日期:2021 年 1 月 5 日
我使用生命周期配置将一个 Amazon Simple Storage Service (Amazon S3) 对象存档到 Amazon Simple Storage Service Glacier 存储类。如何使用 AWS 命令行界面 (AWS CLI) 还原该对象?
解决方法如要使用 AWS CLI 从 Amazon S3 Glacier 存储类还原 S3 对象,请遵循下列步骤:
注意:如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新的 AWS CLI 版本。
启动还原请求运行以下命令以启动还原请求。请务必将示例命令中的所有值替换为您的存储桶、对象和还原请求的值。
注意:由于数据检索费用基于请求的数量,因此,请务必确认还原请求中的参数正确无误。
$ aws s3api restore-object --bucket awsexamplebucket --key dir1/example.obj --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Standard"}}'
运行此命令后,该对象的临时副本将可在还原请求中指定的期限内可用。在此示例中,指定的期限为 25 天。
请注意您可以对该命令作出如下修改:
如要还原版本控制存储桶中的特定对象版本,请添加 --version-id 选项,然后指定相应的版本 ID。 如果示例中使用的 JSON 句法导致 Windows 客户端错误,则使用如下句法替换还原请求:--restore-request Days=25,GlacierJobParameters={"Tier"="Standard"}
监控还原请求的状态
运行以下命令以监控还原请求的状态:
aws s3api head-object --bucket awsexamplebucket --key dir1/example.obj
运行命令后,如果还原仍在进行中,您会收到类似于以下内容的应答:
{
"Restore": "ongoing-request=\"true\"",
...
"StorageClass": "GLACIER",
"Metadata": {}
}
还原完成后,您会收到类似于以下内容的回应:
{
"Restore": "ongoing-request=\"false\", expiry-date=\"Sun, 13 Aug 2017 00:00:00 GMT\"",
...
"StorageClass": "GLACIER",
"Metadata": {}
}
请注意回应中的到期日期 — 在此时间之前,您一直拥有对临时存储对象(存储在“减少的冗余”存储类中的对象)的访问权限。临时对象以及位于 Amazon S3 Glacier 存储类中的已存档对象都变为可用状态。到期日期结束后,临时对象将被删除。您必须更改临时对象的存储类,临时对象才能过期。要在到期日期之后更改该对象的存储类,您必须发出一个新还原请求。
将对象的存储类更改为 Amazon S3 标准要将对象的存储类更改为 Amazon S3 标准,请使用复制(通过覆盖现有对象,或者将该对象复制到其他位置)。
如要使用 Amazon S3 标准存储类覆盖现有对象,请运行以下命令:
aws s3 cp s3://awsexamplebucket/dir1/example.obj s3://awsexamplebucket/dir1/example.obj --storage-class STANDARD
如要对整个前缀执行递归复制并使用 Amazon S3 标准存储类覆盖现有对象,请运行以下命令:
aws s3 cp s3://awsexamplebucket/dir1/ s3://awsexamplebucket/dir1/ --storage-class STANDARD --recursive --force-glacier-transfer
如要将对象复制到其他位置,请运行以下命令:
aws s3 cp s3://awsexamplebucket/dir1/example.obj s3://awsexamplebucket/dir2/example2.obj