如何還原 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 Batch Operations 或自訂 AWS Command Line Interface (AWS CLI) 命令。

注意: 如果您在執行 AWS CLI 命令時收到錯誤,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

使用 S3 Batch Operations

建立 S3 Batch Operations 工作來還原所有物件。您可以對自訂物件清單或 Amazon S3 庫存清單報告執行還原工作

先決條件:

若要使用 Amazon S3 主控台建立批次作業工作並啟動還原,請完成下列步驟:

  1. 開啟 Amazon S3 主控台
  2. 在導覽窗格中,選擇 Batch operations (批次作業)。
  3. 選擇 Create job (建立任務)。
  4. 對於 Region (區域),選取您要在其中建立任務的 AWS 區域。
  5. Choose manifest (選擇資訊清單) 下,輸入以下內容:
    對於 Manifest format (資訊清單格式),選取 S3 inventory report (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 Batch Operations 不支援快速擷取方案。
  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 (權限),選擇從現有的 IAM 角色中選擇,然後選取具有必要權限的 IAM 角色。
  10. 選擇 Next (下一步)。
  11. Review (檢閱) 頁面上,檢閱任務的詳細資訊,然後選擇建立工作
  12. 選取任務,然後選擇 Confirm and run (確認並執行)。
  13. (選用) 如果您選取 Generate completion report (產生完成報告),則會在任務完成之後檢閱報告。您可以在指定的完成報告目的地路徑找到報告。

如需每個任務狀態的描述,請參閱任務狀態

重要: 還原工作只會啟動還原物件的請求。發起請求後,S3 Batch Operations 會報告該物件的工作已完成。批次作業工作還原物件後,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 呼叫會檢索整個結果資料集。

相關資訊

了解封存檢索選項

使用 Batch Operations 批次執行物件作業

管理 S3 Batch Operations 工作

AWS 官方
AWS 官方已更新 2 個月前