如何為目前位於 S3 Glacier 或 S3 Glacier Deep Archive 儲存類別中的大量 Amazon S3 物件啟動還原?

2 分的閱讀內容
0

我在 Amazon Simple Storage Service (Amazon S3) Glacier 或 Amazon S3 Glacier Deep Archive 儲存類別中有大量物件。我想在大規模作業中,啟動所有這些物件的還原作業。

解決方法

要還原大量的 Amazon S3 Glacier 儲存類別物件,您可以使用下列其中一個選項:

  • Amazon S3 Batch Operations
  • 您使用 AWS Command Line Interface (AWS CLI) 建立的自訂指令碼

**注意:**如果您在執行 AWS CLI 命令時收到錯誤訊息,請確定您使用的是最新版本的 AWS CLI

使用 S3 批次作業

建立 Amazon S3 Batch Operations 任務,以啟動所有物件的還原作業。您可以在自訂物件清單或 Amazon S3 庫存報告上執行 S3 啟動還原物件任務

**注意:**建立任務之前,請務必檢閱 Amazon S3 Batch Operations 的定價

開始建立 S3 Batch Operations 任務之前,請確認符合下列要求:

  • 您擁有具有啟動還原權限的 AWS Identity and Access Management (IAM) 使用者或角色。此外,IAM 使用者或角色必須擁有 Amazon S3 Batch Operations 的信任政策
  • 您有 CSV 清單或 Amazon S3 庫存報告,可作為您要還原之物件的清單檔案。清單檔案必須儲存在 S3 儲存貯體。不支援使用伺服器端加密的清單檔案 (客戶提供的金鑰或 AWS Key Management Service 金鑰)。如需有關每種格式需求的詳細資訊,請參閱指定清單檔案

要使用 Amazon S3 主控台建立批次作業任務以啟動還原,請執行以下操作:

1.    開啟 Amazon S3 主控台

2.    在導覽窗格中,選擇批次作業

3.    選擇建立任務

4.    針對區域,選取您要在其中建立任務的 AWS 區域。

5.    在選擇清單檔案下,輸入以下內容:
針對清單檔案格式,選取 S3 庫存報告CSV 作為檔案格式。
針對清單檔案物件的路徑,輸入清單檔案的 S3 路徑 (範例:s3://awsexamplebucket/manifest.csv)。

6.    選擇下一步

7.    在選擇作業下,輸入以下內容:
針對作業,選取還原
針對還原來源,選取 GlacierGlacier Deep Archive
針對還原副本可用的天數,輸入您使用案例的天數。
針對還原方案,選取大量擷取標準擷取。如需有關各方案的詳細資訊,請參閱封存擷取選項

注意:S3 批次作業不支援快速擷取方案。

8.    選擇下一步

9.    在設定其他選項下,輸入以下內容:
針對描述,您可以選擇輸入任務的描述。或者,您可以將此欄位留空。
針對優先順序,輸入指示任務優先順序的數字。
針對產生完成報告,選擇以將此選項保持選取的狀態。
針對完成報告範圍,根據您的使用案例,選取僅失敗的任務所有任務
針對完成報告目的地的路徑,輸入您要將報告傳送至的路徑。
針對權限,選取從現有 IAM 角色選擇。然後,選取擁有啟動還原權限以及 S3 批次作業的信任政策的 IAM 角色。

10.    選擇下一步

11.    在檢閱頁面上,檢閱任務的詳細資訊。然後,選擇建立任務

12.    建立任務之後,任務的狀態會從新建變更為準備中。然後,狀態會變更為等待您的確認。要執行任務,您必須選取任務,然後選擇確認並執行。在您確認之前,不會執行任務。

13.    (選用) 如果您選取產生完成報告,則會在任務完成之後檢閱報告。您可以在指定的完成報告目的地路徑找到報告。

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

如需失敗任務的詳細資訊,請參閱追蹤任務失敗

使用自訂的 AWS CLI 指令碼

您可以使用 AWS CLI restore-object 命令,還原您的 Amazon S3 Glacier 物件。不過,命令一次只能還原一個 S3 Glacier 物件,且不支援大量還原動作。因此,請使用下列自訂解決方法,使用可用擷取選項,從 S3 Glacier 儲存類別還原大量資料。

注意:您必須先在測試或開發環境中測試這些自訂指令碼,才能在生產環境中進行使用。自訂命令會逐一還原 S3 Glacier 儲存類別中的所有物件。如果您有非常多的物件,命令可能會逾時。您可以使用字首參數執行自訂命令,以縮減物件數量。

針對 Linux 或 Unix 系統,執行下列命令,以遞迴方式還原儲存貯體中的所有 S3 Glacier 物件:

aws s3api list-objects --bucket <bucket-name> --prefix <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 儲存貯體名稱。
  • 將 ** <prefix>** 取代為 S3 資料夾路徑。

針對 Windows 系統,請執行以下操作:

1.    執行下列命令,以列出儲存貯體中的所有 S3 Glacier 物件:

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

您執行此命令後,物件清單會儲存在名為 ** list.txt** 的檔案中。

2.    執行下列命令,以還原 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 和資料擷取請求,產生額外費用。由於 list-objects-v2 是分頁操作,因此可能會發出多個 API 呼叫,以擷取結果的整個資料集。如需詳細資訊,請參閱 Amazon S3 定價

相關資訊

建立 S3 Batch Operations 任務

在 Amazon S3 物件上執行大規模批次作業

管理 S3 Batch Operations 任務

AWS 官方
AWS 官方已更新 1 年前