將 AWS SDK for Java 與 Amazon S3 Glacier 搭配使用 - Amazon S3 Glacier

此頁面僅適用於使用 Vaults 和 2012 年原始 REST API 的 S3 Glacier 服務的現有客戶。

如果您要尋找封存儲存解決方案,建議您在 Amazon S3、S3 Glacier S3 Instant RetrievalS3 Glacier Flexible RetrievalS3 Glacier Deep Archive 中使用 S3 Glacier 儲存類別。若要進一步了解這些儲存選項,請參閱《Amazon S3 使用者指南》中的使用 S3 Glacier 儲存類別的 S3 Glacier 儲存類別和長期資料儲存Amazon S3 這些儲存類別使用 Amazon S3 API,可在所有區域使用,並且可在 Amazon S3 主控台中管理。它們提供 Storage Cost Analysis、Storage Lens、進階選用加密功能等功能。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將 AWS SDK for Java 與 Amazon S3 Glacier 搭配使用

AWS SDK for Java 為 Amazon S3 Glacier (S3 Glacier) 提供高階和低階的 API,如 使用 AWS 軟體開發套件搭配 Amazon S3 冰川 所述。如需下載 AWS SDK for Java 的相關資訊,請參閱適用於 Java 的 Amazon 開發套件

注意

AWS SDK for Java 為存取 S3 Glacier 提供安全執行緒用戶端。根據最佳實務,您的應用程式應該建立一個用戶端,並在執行緒之間重複使用該用戶端。

使用低階 API

低階 AmazonGlacierClient 類別提供對應到 S3 Glacier (Amazon S3 Glacier API 參考) 基礎 REST 操作的所有方法。在呼叫這些方法中的任何一種方法時,您必須建立對應的請求物件,並提供一個回應物件,其中該方法可以將 S3 Glacier 回應傳回到該操作。

例如,AmazonGlacierClient 類別提供 createVault 方法來建立文件庫。此方法對應到底層建立文件庫 REST 操作 (請參閱 建立保存庫 (PUT 保存庫))。若要使用這個方法,您必須建立接收 S3 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。但是,當使用 AWS SDK for Java,請求中的 AccountId 是可選的,因此本指南中的所有低階範例都不設定這個值。AccountId 是 AWS 帳戶 識別碼。此值必須符合與用於簽署請求之憑證關聯的 AWS 帳戶 ID。您可以指定 AWS 帳戶 識別碼或選擇性使用「-」,在這種情況下,S3 Glacier 會使用與用於簽署請求之憑證關聯的 AWS 帳戶 ID。如果您要指定帳戶 ID,請勿在其中包含任何連字號。當您使用 AWS SDK for Java,如果不提供帳戶 ID,則該程式庫將帳戶 ID 設定為「-」。

使用高階 API

為了進一步簡化您的應用程式開發,AWS SDK for Java 提供 ArchiveTransferManager 類別,它為低階 API 中的某些方法實作較高階抽象概念。它為封存操作提供有用的方法,例如 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 物件時所指定的 AWS 區域。如果您不指定任何 AWS 區域,AWS SDK for Java 將 us-east-1 設定為預設 AWS 區域。

在指南中的所有高階範例都使用此模式。

注意

高階 ArchiveTransferManager 類別可以使用 AmazonGlacierClient 執行個體或 AWSCredentials 執行個體來建構。

使用 Eclipse 執行 Amazon S3 Glacier 的 Java 範例

開始使用 Java 程式碼範例的最簡單方式是安裝最新的 AWS Toolkit for Eclipse。如需安裝或更新到最新工具組的詳細資訊,請前往 http://aws.amazon.com/eclipse。下列任務會引導您建立與測試本節中所提供的 Java 程式碼範例。

建立 Java 程式碼之一般程序的範例

1

建立 AWS 憑證的預設憑證設定檔,如 AWS SDK for Java 主題在適用於 Java 的 Amazon 開發套件中提供 AWS 憑證中所述。

2

在 Eclipse 中建立新 AWS Java 專案。專案是使用AWS SDK for Java所預先設定。

3

將程式碼從您所讀取的區段複製至專案。

4

提供任何必要資料,以更新程式碼。例如,如果上傳檔案,請提供檔案路徑與儲存貯體名稱。

5

執行程式碼。驗證是使用 AWS Management Console來建立物件。如需有關 AWS Management Console 的詳細資訊,請移至 http://aws.amazon.com/console/

設定終端節點

預設情況下,AWS SDK for Java 使用端點 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);

如需支援 AWS 區域和端點的清單,請參閱存取 Amazon S3 Glacier