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

此頁面僅適用於使用保管庫和 2012 年起原始 REST API 的 S3 冰川服務的現有客戶。

如果您正在尋找存檔儲存解決方案,我們建議您使用 Amazon S3 中的 S3 Glacier 儲存類別、S3 冰川即時擷取S3 冰川彈性擷取和 S3 Glacier Deep Archive。若要進一步了解這些儲存選項,請參閱 Amazon S3 使用者指南中的 S3 Glacier 儲存類別和使用 S3 Glacier 儲存類別的長期資料儲存。這些儲存類別使用 Amazon S3 API,可在所有區域使用,並且可以在 Amazon S3 主控台中管理。它們提供了諸如存儲成本分析,存儲鏡頭,包括多種加密選項的安全功能等功能。

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

將 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 程式碼範例。

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