如何恢复位于 S3 Glacier Flexible Retrieval 或 S3 Glacier Deep Archive 存储类中的大量 Amazon S3 对象?

3 分钟阅读
0

我想恢复大量的 Amazon Simple Storage Service (Amazon S3) 对象。这些 Amazon S3 对象位于 Glacier Flexible Retrieval 或 Amazon S3 Glacier Deep Archive 存储类中。

解决方法

要恢复大量 Amazon S3 Glacier 存储类对象,请使用 Amazon S3 批量操作,或使用自定义 AWS 命令行界面 (AWS CLI) 命令。

**注意:**如果您在运行 AWS CLI 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

Amazon S3 批量操作

创建 S3 批量操作作业以恢复所有对象。您可以对自定义对象列表或 Amazon S3 清单报告运行恢复作业

先决条件:

要使用 Amazon S3 控制台创建批量操作作业并启动恢复,请完成以下步骤:

  1. 打开 Amazon S3 控制台
  2. 在导航窗格中,选择 Batch operations(批量操作)。
  3. 选择 Create job(创建作业)。
  4. 对于 Region(区域),选择要在其中创建作业的 AWS 区域。
  5. Choose manifest(选择清单)下,输入以下内容:
    对于清单格式,选择 S3 清单报告CSV 作为文件格式。
    对于 Path to manifest object(清单对象的路径),输入清单文件的 S3 路径,例如 s3://awsexamplebucket/manifest.csv
  6. 选择 Next(下一步)。
  7. Choose operation(选择操作)下,输入以下内容:
    对于 Operation(操作),选择 Restore(恢复)。
    对于 Restore source(恢复源),选择 Glacier Flexible RetrievalGlacier Deep Archive
    对于 Number of days that the restored copy is available(恢复副本可用的天数),输入天数。
    对于 Restore tier(恢复套餐),选择 Bulk retrieval(批量检索)或 Standard retrieval(标准检索)。
    **注意:**S3 批量操作不支持 Expedited(加速)检索套餐。
  8. 选择 Next(下一步)。
  9. Configure additional options(配置其他选项)下,输入以下内容:
    (可选)对于 Description(描述),输入描述。
    对于 Priority(优先级),输入一个数字以表示作业的优先级。
    对于 Generate completion report(生成完成报告),保持此选项处于选中状态。
    对于 Completion report scope(完成报告范围),选择 Failed tasks only(仅失败的任务)或 All tasks(所有任务)。
    对于 Path to completion report destination(完成报告目标路径),输入要将报告发送到的路径。
    对于 Permission(权限),选择 Choose from existing IAM roles(从现有 IAM 角色中选择),然后选择具有所需权限的 IAM 角色。
  10. 选择 Next(下一步)。
  11. Review(查看)页面上,查看作业的详细信息,然后选择 Create job(创建作业)。
  12. 选择作业,然后选择 Confirm and run(确认并运行)。
  13. (可选)如果选择了 Generate completion report(生成完成报告),请在作业完成后查看报告。您可以在指定的 Path to completion report destination(完成报告目标路径)中找到报告。

有关每种作业状态的描述,请参阅作业状态

重要事项:****恢复作业仅会发起恢复对象的请求。在您发起请求后,S3 批量操作会将针对该对象的作业报告为已完成。当批量操作作业恢复对象后,Amazon S3 不会更新作业,也不会通知您。但是,您可以使用 Amazon S3 事件通知,以便当对象在 Amazon S3 中可用时接收通知。

有关失败作业的详细信息,请参阅跟踪作业失败

使用自定义 AWS CLI 命令

您可以运行 AWS CLI restore-object 命令来恢复您的 Amazon S3 Glacier 对象。但是,restore-object 命令一次只能恢复一个 S3 Glacier 对象,不支持批量恢复操作。

要从 S3 Glacier 存储类中恢复批量数据,请根据您的操作系统 (OS) 使用以下自定义命令。

**注意:**最佳做法是先在非生产环境中测试自定义脚本,然后再在生产环境中使用这些脚本。如果您的对象过多,则此命令可能会超时。在命令中使用 Prefix 参数来减少对象的数量。

对于基于 Linux 或 Unix 的系统,请运行以下 list-objects 命令,以恢复存储桶中的所有 S3 Glacier 对象:

aws s3api list-objects --bucket bucket-name --prefix your-prefix --query 'Contents[?StorageClass==`GLACIER`][Key]' --output text | xargs -I {} sh -c "aws s3api restore-object --bucket bucket-name --key \"{}\" --restore-request Days=5,GlacierJobParameters={Tier=Standard} || true"

**注意:**请将 bucket-name 替换为您的 S3 存储桶名称,将 your-prefix 替换为您的 S3 文件夹路径,将 StorageClass 值替换为 GLACIERDEEP_ARCHIVE

对于基于 Windows 的系统,请完成以下步骤:

  1. 运行以下 list-objects 命令,以列出存储桶中的所有 S3 Glacier 对象:

    aws s3api list-objects --bucket bucket-name --prefix your-prefix --query "Contents[?StorageClass==`GLACIER`][Key]" --output text > list.txt

    对象列表将保存在名为 list.txt 的文件中。

  2. 运行 restore-object 命令以恢复 S3 Glacier 对象:

    for /F "tokens=*" %i in (list.txt) do @aws s3api restore-object --bucket bucket-name --key "%i" --restore-request Days=5,GlacierJobParameters={Tier=Standard} || true"

**注意:**对于列表和数据检索请求,上述自定义 AWS CLI 命令会产生额外费用。由于 list-objects-v2 API 是分页操作,因此会进行多个 API 调用来检索结果的完整数据集。

相关信息

了解归档检索选项

使用批量操作批量执行对象操作

管理 S3 批量操作作业

AWS 官方
AWS 官方已更新 4 个月前