适用于 Java 的 Amazon SDK 与 Amazon Glacier 搭配使用 - Amazon Glacier
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

如果您正在寻找档案存储解决方案,我们建议您在亚马逊 S3、S3 Glacier 即时检索、S3 Glacier 灵活检索和 S3 Glacier Deep Archive Deep Archive 中使用 Amazon Glacier 存储类。要了解有关这些存储选项的更多信息,请参阅 Amazon Glacier 存储类别

从 2025 年 12 月 15 日起,Amazon Glacier(最初基于保管库的独立服务)将不再接受新客户,对现有客户不产生任何影响。Amazon Glacier 是一项独立的服务 APIs ,拥有自己的服务,可将数据存储在文件库中,不同于亚马逊 S3 和 Amazon S3 Glacier 存储类别。在 Amazon Glacier 中,您的现有数据将保持安全且可以无限期地访问。无需迁移。对于低成本、长期的存档存储, Amazon 建议使用 Amazon S3 Glacier 存储类别,这些存储类别基于S3存储桶 APIs、完全 Amazon Web Services 区域 可用性、更低的成本和 Amazon 服务集成,可提供卓越的客户体验。如果您想要增强功能,可以考虑使用我们的Amazon 解决方案指南迁移到 Amazon S3 Glacier 存储类别,将数据从 Amazon Glacier 文件库传输到 Amazon S3 Glacier 存储类

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

适用于 Java 的 Amazon SDK 与 Amazon Glacier 搭配使用

为亚马逊冰川(Amazon Glacier) 适用于 Java 的 Amazon SDK 提供了高级和低级别 APIs ,如中所述。Amazon SDKs 与 Amazon Glacier 搭配使用有关下载的信息 适用于 Java 的 Amazon SDK,请参阅适用于 Java 的亚马逊 SDK

注意

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

使用低级 API

低级AmazonGlacierClient类提供了映射到 Amazon Glacier (亚马逊 Glacier 的 API 参考) 底层 REST 操作的所有方法。调用这些方法中的任何一个时,您都必须创建相应的请求对象并提供一个响应对象,方法可以在其中返回对操作的 Amazon Glacier 响应。

例如,AmazonGlacierClient 类提供了 createVault 方法来创建文件库。此方法会映射到底层的创建文件库 REST 操作(请参阅“创建文件库(设置文件库)”)。要使用此方法,您必须创建接收 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

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

例如,以下 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 为亚马逊 Glacier 运行 Java 示例

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

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

1

按照在 A mazon SDK fo Amazon r Java 中提供 Amazon 凭证 适用于 Java 的 Amazon SDK 主题中所述,为您的证书创建默认凭证配置文件。

2

在 Eclipse 中创建一个新的 Amazon Java 项目。此项目使用 适用于 Java 的 Amazon SDK进行了预先配置。

3

将代码从您正在阅读的部分复制到您的项目。

4

通过提供任意所需数据更新代码。例如,如果上传某个文件,则提供文件路径和存储桶名称。

5

运行该代码。验证是否使用 Amazon Web Services Management Console创建了对象。有关该的更多信息 Amazon Web Services Management Console,请访问 http://aws.amazon.com/console/

设置端点

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

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

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 区域和终端节点的列表,请参阅访问亚马逊 Glacier