

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

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

# 适用于 Java 的 Amazon SDK 与 Amazon Glacier 搭配使用
<a name="using-aws-sdk-for-java"></a>

为亚马逊冰川（Amazon Glacier） 适用于 Java 的 Amazon SDK 提供了高级和低级 APIs ，如中所述。[Amazon SDKs 与 Amazon Glacier 搭配使用](using-aws-sdk.md)有关下载的信息 适用于 Java 的 Amazon SDK，请参阅适用于 [Java 的亚马逊 SDK](https://www.amazonaws.cn/sdkforjava/)。

**注意**  
为访问 Amazon Glacier 适用于 Java 的 Amazon SDK 提供了线程安全的客户端。应用程序应创建一个客户端并在线程之间重复使用此客户端，您应将此作为一项最佳实践。

**Topics**
+ [

## 使用低级 API
](#about-low-level-java-api)
+ [

## 使用高级 API
](#about-high-level-java-api)
+ [

## 使用 Eclipse 运行 Amazon Glacier 的 Java 示例
](#setting-up-and-testing-sdk-java)
+ [

## 设置端点
](#setting-sdk-java-endpoint)

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

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

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

 

```
AmazonGlacierClient client = new AmazonGlacierClient(credentials);
client.setEndpoint("https://glacier.us-west-2.amazonaws.com/");

CreateVaultRequest request = new CreateVaultRequest()
    .withAccountId("-")
    .withVaultName(vaultName);
CreateVaultResult result = client.createVault(createVaultRequest);
```

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

 

**注意**  
在创建请求时，前面的代码段会指定 `AccountID`。但是，使用时 适用于 Java 的 Amazon SDK，请求`AccountId`中的是可选的，因此本指南中的所有低级示例都没有设置此值。`AccountId`就是 Amazon Web Services 账户 身份证。此值必须与用于签署请求的凭据关联的 Amazon Web Services 账户 ID 相匹配。您可以指定 Amazon Web Services 账户 ID，也可以选择指定 '-'，在这种情况下，Amazon Glacier 使用与用于签署请求的凭证关联的 Amazon Web Services 账户 ID。如果您指定您的账户 ID，请勿在其中包括连字符。使用时 适用于 Java 的 Amazon SDK，如果您不提供账户 ID，则库会将账户 ID 设置为 '-'。

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

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

例如，以下 Java 代码段使用了 `upload` 高级方法来上传档案。

 

```
String vaultName = "examplevault";
String archiveToUpload = "c:/folder/exampleArchive.zip";

ArchiveTransferManager atm = new ArchiveTransferManager(client, credentials);
String archiveId = atm.upload(vaultName, "Tax 2012 documents", new File(archiveToUpload)).getArchiveId();
```

请注意，您执行的任何操作都适用于您在创建`ArchiveTransferManager`对象时指定的 Amazon 区域。如果您未指定任何 Amazon 区域，则将 适用于 Java 的 Amazon SDK 设置`us-east-1`为默认 Amazon 区域。

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

 

**注意**  
高级 `ArchiveTransferManager` 类可以通过 `AmazonGlacierClient` 实例或 `AWSCredentials` 实例来构造。

## 使用 Eclipse 运行 Amazon Glacier 的 Java 示例
<a name="setting-up-and-testing-sdk-java"></a>

入门 Java 代码示例的最简单方式是安装最新的 Amazon Toolkit for Eclipse。有关安装或更新至工具包最新版本的信息，请转到 [http://aws.amazon.com/eclipse](https://www.amazonaws.cn/eclipse)。以下任务将引导您创建和测试本节中提供的 Java 代码示例。


**创建 Java 代码示例的常规过程**  

|  |  | 
| --- |--- |
| 1 |  按照在 A [mazon SDK fo Amazon r Java 中提供 Amazon 凭证 适用于 Java 的 Amazon SDK 主题中所述，](https://docs.amazonaws.cn/sdk-for-java/v1/developer-guide/credentials.html)为您的证书创建默认凭证配置文件。  | 
| 2 | 在 Eclipse 中创建一个新的 Amazon Java 项目。此项目使用 适用于 Java 的 Amazon SDK进行了预先配置。 | 
| 3 | 将代码从您正在阅读的部分复制到您的项目。 | 
| 4 | 通过提供任意所需数据更新代码。例如，如果上传某个文件，则提供文件路径和存储桶名称。 | 
| 5 | 运行该代码。验证是否使用 Amazon Web Services 管理控制台创建了对象。有关该的更多信息 Amazon Web Services 管理控制台，请访问 [http://aws.amazon.com/console/](https://www.amazonaws.cn/console/)。 | 

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

默认情况下， 适用于 Java 的 Amazon SDK 使用终端节点`https://glacier.us-east-1.amazonaws.com`。您可以显式设置端点，如以下 Java 代码段所示。

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

**Example**  

```
client = new AmazonGlacierClient(credentials);
client.setEndpoint("glacier.us-west-2.amazonaws.com");
```

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

 

```
glacierClient = new AmazonGlacierClient(credentials);
sqsClient = new AmazonSQSClient(credentials);
snsClient = new AmazonSNSClient(credentials);
        
glacierClient.setEndpoint("glacier.us-west-2.amazonaws.com");
sqsClient.setEndpoint("sqs.us-west-2.amazonaws.com");
snsClient.setEndpoint("sns.us-west-2.amazonaws.com");

ArchiveTransferManager atm = new ArchiveTransferManager(glacierClient, sqsClient, snsClient);
```

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