

 **此页面仅适用于使用文件库和 2012 年原始 REST API 的 Amazon Glacier 服务的现有客户。**

如果您正在寻找归档存储解决方案，建议使用 Amazon S3 中的 Amazon Glacier 存储类别 S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval 和 S3 Glacier Deep Archive。要了解有关这些存储选项的更多信息，请参阅 [Amazon Glacier 存储类别](https://www.amazonaws.cn/s3/storage-classes/glacier/)。

Amazon Glacier（最初基于保管库的独立服务）不再接受新客户。Amazon Glacier 是一项独立的服务 APIs ，拥有自己的服务，可将数据存储在文件库中，不同于亚马逊 S3 和 Amazon S3 Glacier 存储类别。在 Amazon Glacier 中，您现有的数据将确保安全，并且可以无限期地访问。无需进行迁移。对于低成本、长期的存档存储， Amazon 建议[使用 Amazon S3 Glacier 存储类别，这些存储类别](https://www.amazonaws.cn/s3/storage-classes/glacier/)基于S3存储桶 APIs、完全 Amazon Web Services 区域 可用性、更低的成本和 Amazon 服务集成，可提供卓越的客户体验。如果您希望加强功能，可以考虑使用我们的 [Amazon 将数据从 Amazon Glacier 文件库传输到 Amazon S3 Glacier 存储类别的解决方案指南](https://www.amazonaws.cn/solutions/guidance/data-transfer-from-amazon-s3-glacier-vaults-to-amazon-s3/)，迁移到 Amazon S3 Glacier 存储类别。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 Amazon Glacier 中创建文件库使用 适用于 .NET 的 Amazon SDK
<a name="creating-vaults-dotnet-sdk"></a>

适用于.NET 的 Amazon SDK APIs 提供的[高级和低级](using-aws-sdk.md)都提供了一种创建文件库的方法。

**Topics**
+ [使用的高级别 API 创建文件库 适用于 .NET 的 Amazon SDK](#create-vault-dotnet-highlevel)
+ [使用的低级 API 创建文件库 适用于 .NET 的 Amazon SDK](#create-vault-dotnet-lowlevel)

## 使用的高级别 API 创建文件库 适用于 .NET 的 Amazon SDK
<a name="create-vault-dotnet-highlevel"></a>

高级 API 的 `ArchiveTransferManager` 类提供了您可以用来在 Amazon 区域创建文件库的 `CreateVault` 方法。

### 示例：使用高级 API 进行文件库操作 适用于 .NET 的 Amazon SDK
<a name="vault-operations-example-dotnet-highlevel"></a>

以下 C\$1 代码示例在美国西部（俄勒冈州）区域创建了文件库，然后删除了该文件库。有关可以在其中创建文件库 Amazon Web Services 区域 的列表，请参阅[访问 Amazon Glacier](amazon-glacier-accessing.md)。

有关如何运行以下示例的 step-by-step说明，请参阅[运行代码示例](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.docsamples
{
  class VaultCreateDescribeListVaultsDeleteHighLevel
  {
    static string vaultName = "*** Provide vault name ***";

    public static void Main(string[] args)
    {
      try
      {
          var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USWest2);
          manager.CreateVault(vaultName);
          Console.WriteLine("Vault created. To delete the vault, press Enter");
          Console.ReadKey();
          manager.DeleteVault(vaultName);
          Console.WriteLine("\nVault deleted. 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 的 Amazon SDK
<a name="create-vault-dotnet-lowlevel"></a>

低级 API 为所有文件库操作提供了方法，包括创建和删除文件库、获取文件库描述以及获取在特定文件库中创建的文件库的列表。 Amazon Web Services 区域以下是使用 适用于 .NET 的 Amazon SDK创建文件库的步骤。

 

1. 创建 `AmazonGlacierClient` 类（客户端）的实例。

   您需要指定要 Amazon Web Services 区域 在其中创建文件库的。您使用此客户端执行的所有操作都会应用到该 Amazon Web Services 区域。

1. 通过创建一个 `CreateVaultRequest` 类的实例提供请求信息。

    Amazon Glacier（Amazon Glacier）要求您提供文件库名称和您的账户 ID。如果您不提供账户 ID，则系统会使用与您提供来对请求签名的证书相关联的账户 ID。有关更多信息，请参阅[将适用于 .NET 的 Amazon SDK 与 Amazon Glacier 结合使用](using-aws-sdk-for-dot-net.md)。

1. 以参数形式提供请求对象，运行 `CreateVault` 方法。

   Amazon Glacier 返回的响应在 `CreateVaultResponse` 对象中提供。

### 示例：使用的低级 API 进行文件库操作 适用于 .NET 的 Amazon SDK
<a name="vault-operations-example-dotnet-lowlevel"></a>

以下 C\$1 示例说明了前面的步骤。此示例可在美国西部（俄勒冈州）区域创建文件库。此外，该代码示例还会检索文件库信息，列出同一个文件库中的所有文件库 Amazon Web Services 区域，然后删除创建的文件库。`Location`打印的是文件库的相对 URI，其中包括您的账户 ID Amazon Web Services 区域、和文件库名称。

**注意**  
有关底层 REST API 的信息，请参阅[创建文件库（PUT vault）](api-vault-put.md)。

有关如何运行以下示例的 step-by-step说明，请参阅[运行代码示例](using-aws-sdk-for-dot-net.md#setting-up-and-testing-sdk-dotnet)。您需要更新文件库名称旁显示的代码。

**Example**  

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

namespace glacier.amazon.com.docsamples
{
  class VaultCreateDescribeListVaultsDelete
  {
    static string vaultName = "*** Provide vault name ***";
    static AmazonGlacierClient client;

    public static void Main(string[] args)
    {
       try
      {
         using (client = new AmazonGlacierClient(Amazon.RegionEndpoint.USWest2))
        {
          Console.WriteLine("Creating a vault.");
          CreateAVault();
          DescribeVault();
          GetVaultsList();
          Console.WriteLine("\nVault created. Now press Enter to delete the vault...");
          Console.ReadKey();
          DeleteVault();
        }
      }
      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 void CreateAVault()
    {
      CreateVaultRequest request = new CreateVaultRequest()
      {
        VaultName = vaultName
      };
      CreateVaultResponse response = client.CreateVault(request);
      Console.WriteLine("Vault created: {0}\n", response.Location); 
    }

    static void DescribeVault()
    {
      DescribeVaultRequest describeVaultRequest = new DescribeVaultRequest()
      {
        VaultName = vaultName
      };
   
      DescribeVaultResponse describeVaultResponse = client.DescribeVault(describeVaultRequest);
      Console.WriteLine("\nVault description...");
      Console.WriteLine(
        "\nVaultName: " + describeVaultResponse.VaultName +
        "\nVaultARN: " + describeVaultResponse.VaultARN +
        "\nVaultCreationDate: " + describeVaultResponse.CreationDate +
        "\nNumberOfArchives: " + describeVaultResponse.NumberOfArchives +
        "\nSizeInBytes: " + describeVaultResponse.SizeInBytes +
        "\nLastInventoryDate: " + describeVaultResponse.LastInventoryDate 
        );
    }

    static void GetVaultsList()
    {
      string lastMarker = null;
      Console.WriteLine("\n List of vaults in your account in the specific region ...");
      do
      {
        ListVaultsRequest request = new ListVaultsRequest()
        {
          Marker = lastMarker
        };
        ListVaultsResponse response = client.ListVaults(request);
         
        foreach (DescribeVaultOutput output in response.VaultList)
        {
          Console.WriteLine("Vault Name: {0} \tCreation Date: {1} \t #of archives: {2}",
                            output.VaultName, output.CreationDate, output.NumberOfArchives); 
        }
        lastMarker = response.Marker;
      } while (lastMarker != null);
    }

    static void DeleteVault()
    {
      DeleteVaultRequest request = new DeleteVaultRequest()
      {
        VaultName = vaultName
      };
      DeleteVaultResponse response = client.DeleteVault(request);
    }
  }
}
```