

 **此頁面僅適用於使用 Vaults 和 2012 年原始 REST API 的 Amazon Glacier 服務的現有客戶。**

如果您要尋找封存儲存解決方案，建議您在 Amazon Glacier Instant Retrieval、S3 Glacier Flexible Retrieval 和 S3 Glacier Deep Archive 中使用 Amazon Glacier 儲存類別。 Amazon S3 若要進一步了解這些儲存選項，請參閱 [Amazon Glacier 儲存類別](https://aws.amazon.com/s3/storage-classes/glacier/)。

Amazon Glacier （原始獨立保存庫型服務） 不再接受新客戶。Amazon Glacier 是一項獨立服務，具有自己的 APIs，可將資料存放在保存庫中，並與 Amazon S3 和 Amazon S3 Glacier 儲存類別不同。您現有的資料將在 Amazon Glacier 中無限期保持安全且可存取。不需要遷移。對於低成本、長期的封存儲存， AWS 建議使用 [Amazon S3 Glacier 儲存類別](https://aws.amazon.com/s3/storage-classes/glacier/)，透過 S3 儲存貯體型 APIs、完整 AWS 區域 可用性、降低成本 AWS 和服務整合，提供卓越的客戶體驗。如果您想要增強功能，請考慮使用我們的解決方案指南，將資料從 Amazon S3 Glacier 保存庫傳輸至 Amazon S3 Glacier 儲存類別，以遷移至 Amazon S3 Glacier 儲存類別。 [AWS Amazon Glacier Amazon S3 ](https://aws.amazon.com/solutions/guidance/data-transfer-from-amazon-s3-glacier-vaults-to-amazon-s3/)

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 上傳大型封存 AWS CLI
<a name="uploading-an-archive-mpu-using-cli"></a>

您可以使用 AWS Command Line Interface () 在 Amazon Glacier (Amazon Glacier) 中上傳封存AWS CLI。為了改善大型封存的上傳體驗，Amazon Glacier 提供多種 API 操作來支援分段上傳。透過使用這些 API 作業，您能夠以部分形式上傳封存。這些封存部分可個別、依任何順序以及同時上傳。如果某個部分上傳失敗，您需要再次上傳該部分，而不是整個封存。您可以為大小介於 1 位元組到 40,000 GiB 之間的封存使用分段上傳。

如需 Amazon Glacier 分段上傳的詳細資訊，請參閱 [上傳分段中的大型封存 (分段上傳)](uploading-archive-mpu.md)。

**Topics**
+ [（先決條件） 設定 AWS CLI](#Creating-Vaults-CLI-Setup)
+ [(先決條件) 安裝 Python](#Uploading-Archives-mpu-CLI-Install-Python)
+ [（先決條件） 建立 Amazon Glacier 保存庫](#Uploading-Archives-mpu-CLI-Create-Vault)
+ [範例：使用 分段上傳大型封存 AWS CLI](#Uploading-Archives-mpu-CLI-Implementation)

## （先決條件） 設定 AWS CLI
<a name="Creating-Vaults-CLI-Setup"></a>

1. 下載和設定 AWS CLI。如需相關指示，請參閱《AWS Command Line Interface 使用者指南》**中的下列主題：

    [安裝 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) 

   [設定 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)

1. 在命令提示中輸入下列命令來驗證您的 AWS CLI 設定。這些命令不會明確提供登入資料，因此會使用預設描述檔的登入資料。
   + 嘗試使用幫助命令。

     ```
     aws help
     ```
   + 若要取得已設定帳戶上的 Amazon Glacier 保存庫清單，請使用 `list-vaults`命令。將 {{123456789012}} 取代為您的 AWS 帳戶 ID。

     ```
     aws glacier list-vaults --account-id {{123456789012}}
     ```
   + 若要查看 目前的組態資料 AWS CLI，請使用 `aws configure list`命令。

     ```
     aws configure list
     ```

## (先決條件) 安裝 Python
<a name="Uploading-Archives-mpu-CLI-Install-Python"></a>

若要完成分段上傳，您必須計算要上傳之封存的 SHA256 樹雜湊。這樣做與計算要上傳之檔案的 SHA256 樹雜湊不同。若要計算您要上傳之封存的 SHA256 樹雜湊，您可以使用 Java、C\# (使用 .NET) 或 Python。在此範例中，您將使用 Python。如需使用 Java 或 C\# 的指示，請參閱[運算檢查總和](checksum-calculations.md)。

如需安裝 Python 的詳細資訊，請參閱《*Boto3 開發人員指南*》中的[安裝或更新 Python](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#installation)。

## （先決條件） 建立 Amazon Glacier 保存庫
<a name="Uploading-Archives-mpu-CLI-Create-Vault"></a>

若要使用下列範例，您必須建立至少一個 Amazon Glacier 保存庫。如需有關建立保存庫的詳細資訊，請參閱[在 Amazon Glacier 中建立保存庫](creating-vaults.md)。

## 範例：使用 分段上傳大型封存 AWS CLI
<a name="Uploading-Archives-mpu-CLI-Implementation"></a>

在此範例中，您將建立檔案並使用分段上傳 API 作業，將此檔案以部分的形式上傳到 Amazon Glacier。
**重要**  
開始此程序之前，請確認您已執行所有必要步驟。若要上傳封存，您必須建立保存庫、設定 AWS CLI 並準備好使用 Java、C\# 或 Python 來計算 SHA256 樹雜湊。

下列程序使用 `initiate-multipart-upload`、 `upload-multipart-part`和 `complete-multipart-upload` AWS CLI 命令。

如需有關這些命令之一的詳細資訊，請參閱《AWS CLI 命令參考》**中 [https://docs.aws.amazon.com/cli/latest/reference/glacier/initiate-multipart-upload.html](https://docs.aws.amazon.com/cli/latest/reference/glacier/initiate-multipart-upload.html)、[https://docs.aws.amazon.com/cli/latest/reference/glacier/upload-multipart-part.html](https://docs.aws.amazon.com/cli/latest/reference/glacier/upload-multipart-part.html) 和 [https://docs.aws.amazon.com/cli/latest/reference/glacier/complete-multipart-upload.html](https://docs.aws.amazon.com/cli/latest/reference/glacier/complete-multipart-upload.html)。

1. 使用 [https://docs.aws.amazon.com/cli/latest/reference/glacier/initiate-multipart-upload.html](https://docs.aws.amazon.com/cli/latest/reference/glacier/initiate-multipart-upload.html) 命令以建立分段上傳資源。請指定在請求中部分大小 (以位元組為單位)。您上傳的每個部分，除了最後一個部分，都將是這個大小。您不需要了解啟動上傳時的整體封存大小。但是，在完成最後一步的上傳時，您將需要每個部分的總大小 (以位元組為單位)。

   在下列命令中，將 `--vault-name` 和 `--account-ID` 參數的值替換為您自己的資訊。此命令指定您將上傳每個檔案部分大小為 1 MiB (1024 x 1024 位元組) 的封存。如有需要，請替換此 `--part-size` 參數值。

   ```
   aws glacier initiate-multipart-upload --vault-name {{awsexamplevault}} --part-size {{1048576}} --account-id {{123456789012}}
   ```

   預期的輸出結果：

   ```
   {
   "location": "/{{123456789012}}/vaults/{{awsexamplevault}}/multipart-uploads/{{uploadId}}",
   "uploadId": "{{uploadId}}"
   }
   ```

   完成後，命令將輸出分段上傳資源在 Amazon Glacier 中的上傳 ID 和位置。於後續步驟中，您將會使用此上傳 ID。

1. 在此範例中，您可以使用下列命令建立 4.4 MiB 檔案，將其分割成 1 MiB 區塊，然後上傳每個區塊。若要上傳自己的檔案，您可以按照類似的程序，將資料分區並上傳每個部分。

   

**Linux 或 macOS**  
下列命令會在 Linux 或 macOS 上建立名為 `file_to_upload` 的 4.4 MiB 檔案。

   ```
   mkfile -n 9000b {{file_to_upload}}
   ```

**Windows**  
下列命令會在 Windows 上建立名為 `file_to_upload` 的 4.4 MiB 檔案。

   ```
   fsutil file createnew {{file_to_upload}} 4608000
   ```

1. 接下來，您將這個檔案分割成 1 MiB 區塊。

   ```
   split -b 1048576 {{file_to_upload}} chunk
   ```

   您現在擁有以下五個區塊。前四個是 1 MiB，最後一個大約是 400 KiB。

   ```
   chunkaa
   chunkab
   chunkac
   chunkad
   chunkae
   ```

1. 使用 [https://docs.aws.amazon.com/cli/latest/reference/glacier/upload-multipart-part.html](https://docs.aws.amazon.com/cli/latest/reference/glacier/upload-multipart-part.html) 命令以上傳部分封存。您可以依任何順序上傳封存部分。您也可以平行上傳這些部分。您可以上傳多達 10,000 個部分的分段上傳。

   在下列命令中，替換 `--vault-name`、`--account-ID` 和 `--upload-id` 參數的值。上傳 ID 必須與 `initiate-multipart-upload` 命令輸出的 ID 相符。此 `--range` 參數指定您將上傳大小為 1 MiB (1024 x 1024 位元組) 的部分。此大小必須符合您在 `initiate-multipart-upload` 命令中指定的大小。如有需要，請調整此大小值。此 `--body` 參數會指定您要上傳之部分的名稱。

   ```
   aws glacier upload-multipart-part --body {{chunkaa}} --range={{'bytes 0-1048575/*'}} --vault-name {{awsexamplevault}} --account-id {{123456789012}} --upload-id {{upload_ID}}
   ```

   如果成功，該命令將產生輸出，其中內含上傳部分的檢查總和。

1. 再次執行 `upload-multipart-part` 命令，以上傳分段上傳的剩餘部分。更新每個命令的 `--range` 和 `–-body` 參數值，以符合您要上傳的部分。

   ```
   aws glacier upload-multipart-part --body {{chunkab}} --range={{'bytes 1048576-2097151/*'}} --vault-name {{awsexamplevault}} --account-id {{123456789012}} --upload-id {{upload_ID}}
   ```

   ```
   aws glacier upload-multipart-part --body {{chunkac}} --range={{'bytes 2097152-3145727/*'}} --vault-name {{awsexamplevault}} --account-id {{123456789012}} --upload-id {{upload_ID}}
   ```

   ```
   aws glacier upload-multipart-part --body {{chunkad}} --range={{'bytes 3145728-4194303/*'}} --vault-name {{awsexamplevault}} --account-id {{123456789012}} --upload-id {{upload_ID}}
   ```

   ```
   aws glacier upload-multipart-part --body {{chunkae}} --range={{'bytes 4194304-4607999/*'}} --vault-name {{awsexamplevault}} --account-id {{123456789012}} --upload-id {{upload_ID}}
   ```
**注意**  
最終命令的 `--range` 參數值較小，因為上傳的最後一部分小於 1 MiB。如果成功，每個命令都會產生輸出，內含每個上傳部分的檢查總和。

1. 接下來，您將組合封存並完成上傳。您必須包含封存的總大小和 SHA256 樹雜湊。

   若要計算封存的 SHA256 樹雜湊，您可以使用 Java、C\# 或 Python。在此範例中，您將使用 Python。如需使用 Java 或 C\# 的指示，請參閱[運算檢查總和](checksum-calculations.md)。

   建立 Python 檔案 `checksum.py` 並插入下列程式碼。如果需要，請替換原始檔案的名稱。

   ```
   from botocore.utils import calculate_tree_hash
   					
   checksum = calculate_tree_hash(open('{{file_to_upload}}', 'rb'))
   print(checksum)
   ```

1. 執行 `checksum.py` 以計算 SHA256 樹雜湊。以下雜湊可能與輸出不相符。

   ```
   $ python3 checksum.py
   $ 3d760edb291bfc9d90d35809243de092aea4c47b308290ad12d084f69988ae0c
   ```

1. 使用 [https://docs.aws.amazon.com/cli/latest/reference/glacier/complete-multipart-upload.html](https://docs.aws.amazon.com/cli/latest/reference/glacier/complete-multipart-upload.html) 命令完成封存上傳。替換 `--vault-name`、`--account-ID`、`--upload-ID` 和 `--checksum` 參數的值。`--archive` 參數值指定封存的總大小 (以位元組為單位)。這個值必須是您上傳的個別部分之所有大小的總和。如有需要，請替換此值。

   ```
   aws glacier complete-multipart-upload --archive-size {{4608000}} --vault-name {{awsexamplevault}} --account-id {{123456789012}} --upload-id {{upload_ID}} --checksum {{checksum}}
   ```

   完成後，命令將輸出封存的 ID、檢查總和和和 Amazon Glacier 中的位置。