使用 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 區域中的特定文件庫或所有文件庫擷取中繼資料。以下的步驟說明如何使用適用於 Java 的 Amazon 開發套件的低階 API,為特定文件庫擷取文件庫中繼資料。

  1. 建立 AmazonGlacierClient 類別的執行個體 (用戶端)。

    您需要指定文件庫所在的 AWS 區域。所有您使用此用戶端執行的操作均會套用到該 AWS 區域。

  2. 您可以透過建立 DescribeVaultRequest 類別的執行個體來提供請求資訊。

    Amazon S3 Glacier (S3 Glacier) 要求您提供文件庫名稱和帳戶 ID。如果您不提供帳戶 ID,則會使用與您提供來簽署請求之登入資料關聯的帳戶 ID。如需更多詳細資訊,請參閱 將 AWS SDK for Java 與 Amazon S3 Glacier 搭配使用

  3. 以參數形式提供請求物件,以便執行 describeVault 方法。

    S3 Glacier 傳回的文件庫中繼資料資訊在 DescribeVaultResult 物件中是可用的。

下列 Java 程式碼片段描述前述步驟。

DescribeVaultRequest request = new DescribeVaultRequest() .withVaultName("*** provide vault name***"); DescribeVaultResult result = client.describeVault(request); System.out.print( "\nCreationDate: " + result.getCreationDate() + "\nLastInventoryDate: " + result.getLastInventoryDate() + "\nNumberOfArchives: " + result.getNumberOfArchives() + "\nSizeInBytes: " + result.getSizeInBytes() + "\nVaultARN: " + result.getVaultARN() + "\nVaultName: " + result.getVaultName());

注意

如需基礎 REST API 的資訊,請參閱 描述文件庫 (GET 文件庫)

擷取區域中所有文件庫的文件庫中繼資料

您也可以使用 listVaults 方法,針對特定 AWS 區域中的所有文件庫擷取中繼資料。

以下 Java 程式碼片段擷取 us-west-2 區域中的文件庫清單。請求會限制回應中傳回的文件庫數量為 5 個。然後,程式碼片段將進行一系列 listVaults 呼叫,用以從該 AWS 區域擷取整個文件庫清單。

AmazonGlacierClient client; client.setEndpoint("https://glacier.us-west-2.amazonaws.com/"); String marker = null; do { ListVaultsRequest request = new ListVaultsRequest() .withLimit("5") .withMarker(marker); ListVaultsResult listVaultsResult = client.listVaults(request); List<DescribeVaultOutput> vaultList = listVaultsResult.getVaultList(); marker = listVaultsResult.getMarker(); for (DescribeVaultOutput vault : vaultList) { System.out.println( "\nCreationDate: " + vault.getCreationDate() + "\nLastInventoryDate: " + vault.getLastInventoryDate() + "\nNumberOfArchives: " + vault.getNumberOfArchives() + "\nSizeInBytes: " + vault.getSizeInBytes() + "\nVaultARN: " + vault.getVaultARN() + "\nVaultName: " + vault.getVaultName()); } } while (marker != null);

在前面的程式碼片段中,如果您沒有在請求中指定 Limit 值,則 S3 Glacier 將傳回多達 10 個文件庫,這些文件庫是由 S3 Glacier API 設定的。如果要列出更多的文件庫,則回應 marker 欄位包含文件庫 Amazon Resource Name (ARN),以便以新的請求繼續列出,否則 marker 欄位為 null。

請注意,清單中為每個文件庫傳回的資訊與透過呼叫特定文件庫的 describeVault 方法所獲得的資訊相同。

注意

listVaults 方法呼叫底層 REST API (請參閱 「列出文件庫」(GET 文件庫))。

範例:使用適用於 Java 的 Amazon 開發套件擷取文件庫中繼資料

如需運作中程式碼範例,請參閱「範例:使用 AWS SDK for Java 建立文件庫」。Java 程式碼範例建立文件庫和擷取文件庫中繼資料。