

 **此頁面僅適用於使用 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/)

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

# 在 Amazon Glacier 中使用 在單一操作 適用於 .NET 的 AWS SDK 中上傳封存
<a name="uploading-an-archive-single-op-using-dotnet"></a>

適用於 .NET 的 Amazon 開發套件提供的[高階和低階 API](using-aws-sdk.md) 都提供了在單一作業中上傳封存的方法。

**Topics**
+ [使用 的高階 API 上傳封存 適用於 .NET 的 AWS SDK](#uploading-an-archive-single-op-highlevel-using-dotnet)
+ [使用 的低階 API 在單一操作中上傳封存 適用於 .NET 的 AWS SDK](#uploading-an-archive-single-op-lowlevel-using-dotnet)

## 使用 的高階 API 上傳封存 適用於 .NET 的 AWS SDK
<a name="uploading-an-archive-single-op-highlevel-using-dotnet"></a>

高階 API 的 `ArchiveTransferManager` 類別提供 `Upload` 方法，您可以使用該方法將存檔上傳到文件庫。

**注意**  
您可以使用 `Upload` 方法上傳小型或大型檔案。根據您要上傳的檔案大小，此方法會判斷在單一操作上傳，或使用分段上傳 API 以將檔案分段上傳。

### 範例：使用 的高階 API 上傳封存 適用於 .NET 的 AWS SDK
<a name="upload-archive-highlevel-any-size-dotnet"></a>

以下 C\$1 程式碼範例將封存上傳到美國西部 (奧勒岡) 區域中的保存庫 (`examplevault`)。

如需執行此範例的逐步說明，請參閱 [執行程式碼範例](using-aws-sdk-for-dot-net.md#setting-up-and-testing-sdk-dotnet)。您必須如所示，使用要上傳的檔案名稱更新程式碼。

**Example**  

```
using System;
using Amazon.Glacier;
using Amazon.Glacier.Transfer;
using Amazon.Runtime;

namespace glacier.amazon.com.rproxy.govskope.us.docsamples
{
  class ArchiveUploadHighLevel
  {
    static string vaultName = "examplevault"; 
    static string archiveToUpload = "*** Provide file name (with full path) to upload ***";

    public static void Main(string[] args)
    {
       try
      {
         var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USWest2);
         // Upload an archive.
         string archiveId = manager.Upload(vaultName, "upload archive test", archiveToUpload).ArchiveId;
         Console.WriteLine("Archive ID: (Copy and save this ID for use in other examples.) : {0}", archiveId);
         Console.WriteLine("To continue, press Enter"); 
         Console.ReadKey();
      }
      catch (AmazonGlacierException e) { Console.WriteLine(e.Message); }
      catch (AmazonServiceException e) { Console.WriteLine(e.Message); }
      catch (Exception e) { Console.WriteLine(e.Message); }
      Console.WriteLine("To continue, press Enter");
      Console.ReadKey();
    }
  }
}
```

## 使用 的低階 API 在單一操作中上傳封存 適用於 .NET 的 AWS SDK
<a name="uploading-an-archive-single-op-lowlevel-using-dotnet"></a>

低階 API 提供所有封存操作的方法。以下是使用 適用於 .NET 的 AWS SDK上傳封存的步驟。

 

1. 建立 `AmazonGlacierClient` 類別的執行個體 (用戶端)。

   您需要指定要上傳封存 AWS 的區域。您使用此用戶端執行的所有操作都會套用到該 AWS 區域。

1. 您可以透過建立 `UploadArchiveRequest` 類別的執行個體來提供請求資訊。

   除了要上傳的資料外，還需要提供承載的檢查總和 (SHA-256 樹狀雜湊)、保存庫名稱和帳戶 ID。

   如果您不提供帳戶 ID，則會使用與您提供來簽署請求之登入資料關聯的帳戶 ID。如需詳細資訊，請參閱[適用於 .NET 的 AWS SDK 搭配 Amazon Glacier 使用](using-aws-sdk-for-dot-net.md)。

1. 以參數形式提供請求物件，以便執行 `UploadArchive` 方法。

   為了回應，Amazon Glacier 會傳回新上傳封存的封存 ID。

### 範例：使用 的低階 API 在單一操作中上傳封存 適用於 .NET 的 AWS SDK
<a name="upload-archive-single-op-lowlevel-dotnet"></a>

下列 C\$1 程式碼範例描述前述步驟。此範例使用 適用於 .NET 的 AWS SDK 將封存上傳至保存庫 (`examplevault`)。

**注意**  
如需有關底層 REST API 在單一請求中上傳封存的詳細資訊，請參閱 [上傳封存 (POST 封存)](api-archive-post.md)。

如需執行此範例的逐步說明，請參閱 [執行程式碼範例](using-aws-sdk-for-dot-net.md#setting-up-and-testing-sdk-dotnet)。您必須如所示，使用要上傳的檔案名稱更新程式碼。

**Example**  

```
using System;
using System.IO;
using Amazon.Glacier;
using Amazon.Glacier.Model;
using Amazon.Runtime;

namespace glacier.amazon.com.rproxy.govskope.us.docsamples
{
  class ArchiveUploadSingleOpLowLevel
  {
    static string vaultName       = "examplevault";
    static string archiveToUpload = "*** Provide file name (with full path) to upload ***";

    public static void Main(string[] args)
    {
      AmazonGlacierClient client;
      try
      {
         using (client = new AmazonGlacierClient(Amazon.RegionEndpoint.USWest2))
        {
          Console.WriteLine("Uploading an archive.");
          string archiveId = UploadAnArchive(client);
          Console.WriteLine("Archive ID: {0}", archiveId);
        }
      }
      catch (AmazonGlacierException e) { Console.WriteLine(e.Message); }
      catch (AmazonServiceException e) { Console.WriteLine(e.Message); }
      catch (Exception e) { Console.WriteLine(e.Message); }
      Console.WriteLine("To continue, press Enter");
      Console.ReadKey();
    }

    static string UploadAnArchive(AmazonGlacierClient client)
    {
      using (FileStream fileStream = new FileStream(archiveToUpload, FileMode.Open, FileAccess.Read))
      {
        string treeHash = TreeHashGenerator.CalculateTreeHash(fileStream);
        UploadArchiveRequest request = new UploadArchiveRequest()
        {
          VaultName = vaultName,
          Body = fileStream,
          Checksum = treeHash
        };
        UploadArchiveResponse response = client.UploadArchive(request);
        string archiveID = response.ArchiveId;
        return archiveID;
      }
    }
  }
}
```