

 **此页面仅适用于使用文件库和 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 存储类别。

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

# 将适用于 .NET 的 Amazon SDK 与 Amazon Glacier 结合使用
<a name="using-aws-sdk-for-dot-net"></a>

适用于 .NET 的 Amazon SDK API 在 `AWSSDK.dll` 中可用。有关下载适用于 .NET 的 Amazon SDK 的信息，请转到[示例代码库](https://www.amazonaws.cn/sdkfornet/)。如[Amazon SDKs 与 Amazon Glacier 搭配使用](using-aws-sdk.md)中所述，适用于 .NET 的 Amazon SDK 提供高级和低级 API。

**注意**  
低级 API 和高级 API 提供线程安全客户端来访问 Amazon Glacier。应用程序应创建一个客户端并在线程之间重复使用此客户端，您应将此作为一项最佳实践。

**Topics**
+ [使用低级 API](#about-low-level-dotnet-api)
+ [使用高级 API](#about-high-level-dotnet-api)
+ [运行代码示例](#setting-up-and-testing-sdk-dotnet)
+ [设置端点](#setting-sdk-dot-net-endpoint)

## 使用低级 API
<a name="about-low-level-dotnet-api"></a>

低级 `AmazonGlacierClient` 类提供了映射到 Amazon Glacier（Amazon Glacier）（[Amazon Glacier 的 API 参考](amazon-glacier-api.md)）的底层 REST 操作的所有方法。调用其中任何一种方法时，您都必须创建相应的请求对象，并提供响应对象，所调用的方法可以在响应对象中向操作返回 Amazon Glacier 响应。

例如，`AmazonGlacierClient` 类提供了 `CreateVault` 方法来创建文件库。此方法会映射到底层的创建文件库 REST 操作（请参阅[创建文件库（PUT vault）](api-vault-put.md)）。要使用此方法，您必须创建 `CreateVaultRequest` 和 `CreateVaultResponse` 类的实例，以提供请求信息和接收 Amazon Glacier 响应，如以下 C\$1 代码段所示：

 

```
AmazonGlacierClient client;
client = new AmazonGlacierClient(Amazon.RegionEndpoint.USEast1); 

CreateVaultRequest request = new CreateVaultRequest()
{
  AccountId = "-",
  VaultName = "*** Provide vault name ***"
};

CreateVaultResponse response = client.CreateVault(request);
```

指南中的所有低级示例都使用了此模式。

 

**注意**  
在创建请求时，前面的代码段会指定 `AccountId`。但是，在使用适用于 .NET 的 Amazon SDK 时，请求中的 `AccountId` 是可选的，因此，本指南中的所有低级示例都未设置此值。`AccountId` 就是 Amazon Web Services 账户 ID。此值必须与用来对请求进行签名的凭证相关联的 Amazon Web Services 账户 ID 相匹配。您可以指定 Amazon Web Services 账户 ID，或者选择指定“-”，在后一种情况下，Amazon Glacier 使用与用来对请求进行签名的凭证关联的 Amazon Web Services 账户 ID。如果您指定您的账户 ID，请勿在其中包括连字符。使用适用于 .NET 的 Amazon SDK 时，如果您未提供账户 ID，则库会将账户 ID 设置为“-”。

## 使用高级 API
<a name="about-high-level-dotnet-api"></a>

为了进一步简化应用程序开发，适用于 .NET 的 Amazon SDK 提供了 `ArchiveTransferManager` 类，该类为低级 API 中的某些方法实现更高级的抽象。它为档案操作提供了有用的方法，例如 `Upload` 和 `Download`。

例如，以下 C\$1 代码段使用了 `Upload` 高级方法来上传档案。

 

```
string vaultName = "examplevault";
string archiveToUpload = "c:\folder\exampleArchive.zip";

var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USEast1);
string archiveId = manager.Upload(vaultName, "archive description", archiveToUpload).ArchiveId;
```

请注意，您执行的任何操作都会应用到您在创建 `ArchiveTransferManager` 对象时指定的 Amazon 区域。此指南中的所有高级示例都使用了此模式。

 

**注意**  
高级 `ArchiveTransferManager` 类仍然需要低级 `AmazonGlacierClient` 客户端，您可以显式传递该客户端或者让 `ArchiveTransferManager` 创建该客户端。

## 运行代码示例
<a name="setting-up-and-testing-sdk-dotnet"></a>

入门 .NET 代码示例的最简单方式是安装适用于 .NET 的 Amazon SDK。有关更多信息，请转到[适用于 .NET 的 Amazon SDK](https://www.amazonaws.cn/sdkfornet/)。

以下过程为您概述了测试此指南中提供的代码示例的步骤。


**创建 .NET 代码示例的一般流程（使用 Visual Studio）**  

|  |  | 
| --- |--- |
| 1 | 为 Amazon 凭证创建凭证配置文件，如适用于 .NET 的 Amazon SDK 主题[配置 Amazon 凭证](https://docs.amazonaws.cn/sdk-for-net/v4/developer-guide/creds-assign.html)中所述。  | 
| 2 |  使用 *Amazon 空项目*模板创建新的 Visual Studio 项目。  | 
| 3 | 将项目文件 `Program.cs` 中的代码替换为您正在阅读的部分中的代码。 | 
| 4 |   运行该代码。验证是否使用 Amazon Web Services 管理控制台创建了对象。有关 Amazon Web Services 管理控制台 的更多信息，请转到 [http://aws.amazon.com/console/](https://www.amazonaws.cn/console/)。  | 

## 设置端点
<a name="setting-sdk-dot-net-endpoint"></a>

默认情况下，适用于 .NET 的 Amazon SDK 将端点设置为美国西部（俄勒冈州）区域（`https://glacier.us-west-2.amazonaws.com`）。您可以将端点设置为其他 Amazon 区域，如以下 C\$1 代码段所示。

以下代码段说明如何使用低级 API 将端点设置为美国西部（俄勒冈州）区域（`us-west-2`）。

**Example**  

```
AmazonGlacierClient client = new AmazonGlacierClient(Amazon.RegionEndpoint.USWest2);
```

以下代码段说明如何使用高级 API 将端点设置为美国西部（俄勒冈州）区域。

 

```
var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USWest2);
```

有关受支持 Amazon 区域和端点的最新列表，请参阅[访问 Amazon Glacier](amazon-glacier-accessing.md)。