此页面仅适用于使用文件库和 2012 年原始 REST API 的 Amazon Glacier 服务的现有客户。
如果您正在寻找归档存储解决方案,建议使用 Amazon S3 中的 Amazon Glacier 存储类别 S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval 和 S3 Glacier Deep Archive。要了解有关这些存储选项的更多信息,请参阅 Amazon Glacier 存储类别
从 2025 年 12 月 15 日起,Amazon Glacier(最初基于独立文件库的服务)将不再接受新客户,对现有客户不存在任何影响。Amazon Glacier 是一项独立服务,拥有自己的 API,可将数据存储在文件库中,与 Amazon S3 和 Amazon S3 Glacier 存储类别不同。在 Amazon Glacier 中,您现有的数据将确保安全,并且可以无限期地访问。无需进行迁移。对于低成本、长期的存档存储,Amazon 建议使用 Amazon S3 Glacier 存储类别
将适用于 Java 的 Amazon SDK 与 Amazon Glacier 结合使用
如将 Amazon SDK 与 Amazon Glacier 结合使用中所述,适用于 Java 的 Amazon SDK 提供了面向 Amazon Glacier 的高级和低级 API。有关下载适用于 Java 的 Amazon SDK 的信息,请参阅适用于 Java 的 Amazon SDK
注意
适用于 Java 的 Amazon SDK 提供了用于访问 Amazon Glacier 的线程安全客户端。应用程序应创建一个客户端并在线程之间重复使用此客户端,您应将此作为一项最佳实践。
使用低级 API
低级 AmazonGlacierClient 类提供了映射到 Amazon Glacier(Amazon Glacier 的 API 参考)的底层 REST 操作的所有方法。调用其中任何一种方法时,您都必须创建相应的请求对象,并提供响应对象;在该响应对象中,方法可以向操作返回 Amazon Glacier 响应。
例如,AmazonGlacierClient 类提供了 createVault 方法来创建文件库。此方法会映射到底层的创建文件库 REST 操作(请参阅创建文件库(PUT vault))。要使用此方法,您必须创建接收 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 账户 ID。此值必须与用来对请求进行签名的凭证相关联的 Amazon Web Services 账户 ID 相匹配。您可以指定 Amazon Web Services 账户 ID,或者选择指定“-”,在后一种情况下,Amazon Glacier 使用与用来对请求进行签名的凭证关联的 Amazon Web Services 账户 ID。如果您指定您的账户 ID,请勿在其中包括连字符。使用适用于 Java 的 Amazon SDK 时,如果您未提供账户 ID,则库会将账户 ID 设置为“-”。
使用高级 API
为了进一步简化应用程序开发,适用于 Java 的 Amazon SDK 提供了 ArchiveTransferManager 类,该类为低级 API 中的某些方法实现了更高级的抽象。它为档案操作提供了有用的方法,例如 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 示例
入门 Java 代码示例的最简单方式是安装最新的Amazon Toolkit for Eclipse。有关安装或更新至工具包最新版本的信息,请转到 http://aws.amazon.com/eclipse
1 |
如 适用于 Java 的 Amazon SDK 主题在适用于 Java 的 Amazon SDK 中提供 Amazon 凭证中所述,为 Amazon 凭证创建默认凭证配置文件。 |
2 |
在 Eclipse 中创建一个新的 Amazon Java 项目。此项目使用适用于 Java 的 Amazon SDK 进行了预先配置。 |
3 |
将代码从您正在阅读的部分复制到您的项目。 |
4 |
通过提供任意所需数据更新代码。例如,如果上传某个文件,则提供文件路径和存储桶名称。 |
5 |
运行该代码。验证是否使用 Amazon Web Services 管理控制台创建了对象。有关 Amazon Web Services 管理控制台的更多信息,请转到 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 区域和端点的列表,请参阅访问 Amazon Glacier。