共用方式為


使用 JAVA 設定或變更區塊 Blob 的存取層

本文說明如何使用適用於 JAVA 的 Azure 儲存體用戶端程式庫來設定或變更區塊 Blob 的存取層。

必要條件

  • 本文假設您已有專案準備好要使用適用於 JAVA 的 Azure Blob 儲存體用戶端程式庫。 若要了解如何設定您的專案 (包括套件安裝、新增 import 指示詞以及建立授權的用戶端物件),請參閱開始使用 Azure 儲存體和 JAVA
  • 授權機制必須具有設定 Blob 存取層的權限。 若要深入了解,請參閱下列 REST API 作業的授權指導:

關於區塊 Blob 存取層

為了管理擴展儲存體需求的成本,根據資料的存取頻率和將保留的時間長度來組織資料,會很有幫助。 Azure 儲存體提供不同的存取層,讓您可以根據 Blob 資料的使用方式,以最符合成本效益的方式來儲存 Blob 資料。

blob 資料的存取層

Azure 儲存體存取層包括:

  • 經常性存取層:已針對儲存經常存取或修改的資料最佳化的線上層。 經常性存取層的儲存體成本最高,但存取成本最低。
  • 非經常性儲存層:已針對儲存不常存取或修改的資料最佳化的線上層。 非經常性存取層中的資料至少應儲存 30 天。 相較於經常性存取層,非經常性存取層的儲存體成本較低且存取成本較高。
  • 非經常性存取層:已針對儲存不常存取或修改的資料最佳化的線上層。 極非經常性存取層中的資料至少應儲存 90 天。 相較於非經常性存取層,極非經常性存取層的儲存體成本較低但存取成本較高。
  • 封存層:已針對儲存極少存取且具有彈性延遲需求的資料最佳化 (以小時為單位) 的離線層。 封存層中的資料至少應儲存 180 天。

若要深入了解存取層,請參閱 Blob 資料的存取層 (部分機器翻譯)。

位於封存存取層的 Blob 會被視為離線,而且無法讀取或修改。 若要讀取或修改封存 Blob 中的資料,您必須先將 Blob 解除凍結至線上層。 如需有關將 Blob 從封存層解除凍結至線上層的詳細資訊,請參閱從封存層將 Blob 解除凍結

限制

只有區塊 Blob 才能設定存取層。 若要深入了解設定區塊 Blob 存取層的限制,請參閱設定 Blob 層 (REST API) (部分機器翻譯)。

注意

若要使用 JAVA 將存取層設定為 Cold,您必須至少使用用戶端程式庫版本 12.21.0。

在 Blob 上傳期間設定存取層

您可以使用 BlobUploadFromFileOptions 類別在 Blob 上傳時設定存取層。 下列程式碼範例說明如何在上傳 Blob 時設定存取層:

public void uploadBlobWithAccessTier(BlobContainerClient blobContainerClient, Path filePath) {
    String fileName = filePath.getFileName().toString();
    BlobClient blobClient = blobContainerClient.getBlobClient(fileName);

    BlobUploadFromFileOptions options = new BlobUploadFromFileOptions(filePath.toString())
            .setTier(AccessTier.COOL);

    try {
        Response<BlockBlobItem> blockBlob = blobClient.uploadFromFileWithResponse(options, null, null);
    } catch (UncheckedIOException ex) {
        System.err.printf("Failed to upload from file: %s%n", ex.getMessage());
    }
}

若要深入了解使用 JAVA 上傳 Blob,請參閱使用 JAVA 上傳 Blob (部分機器翻譯)。

為現有的區塊 Blob 變更存取層

您可以使用下列其中一項方法來變更現有區塊 Blob 的存取層:

下列程式碼範例說明如何將現有 Blob 的存取層變更為非經常性存取層:

public void changeBlobAccessTier(BlobClient blobClient) {
    // Change the blob's access tier to cool
    blobClient.setAccessTier(AccessTier.COOL);
}

如果您要解除凍結封存的 Blob,請使用 setAccessTierWithResponse 方法。 將 tier 參數設定為有效的 AccessTier 值:HOTCOOLCOLDARCHIVE。 您可以選擇性地將 priority 參數設定為有效的 RehydratePriority 值:HIGHSTANDARD

下列程式碼範例說明如何將存取層變更為經常性存取層,以將封存的 Blob 解除凍結:

public void rehydrateBlobSetAccessTier(BlobClient blobClient) {
    // Rehydrate the blob to hot tier using a standard rehydrate priority
    blobClient.setAccessTierWithResponse(
        AccessTier.HOT,
        RehydratePriority.STANDARD,
        null, 
        null, 
        null);
}

setAccessTierWithResponse 方法也可以接受 BlobSetAccessTierOptions 參數來指定設定選項。

將 Blob 複製到不同的存取層

您可以將存取層指定為複製作業的一部分,以變更現有區塊 Blob 的存取層。 若要在複製作業期間變更存取層,請使用 BlobBeginCopyOptions 類別。

您可以使用 setTier 方法,將 AccessTier 值指定為 HOTCOOLCOLDARCHIVE。 如果您使用複製作業從封存層解除凍結 Blob,請使用 setRehydratePriority 方法以將 RehydratePriority 值指定為 HIGHSTANDARD

下列程式碼範例說明如何使用複製作業,將封存的 Blob 解除凍結為經常性存取層:

public void rehydrateBlobUsingCopy(
    BlobClient sourceArchiveBlob,
    BlobClient destinationRehydratedBlob) {
    // Note: the destination blob must have a different name than the archived source blob

    // Start the copy operation and wait for it to complete
    final SyncPoller<BlobCopyInfo, Void> poller = destinationRehydratedBlob.beginCopy(
            new BlobBeginCopyOptions(sourceArchiveBlob.getBlobUrl())
                    .setTier(AccessTier.HOT)
                    .setRehydratePriority(RehydratePriority.STANDARD));
                    
    PollResponse<BlobCopyInfo> response = poller
            .waitUntil(LongRunningOperationStatus.SUCCESSFULLY_COMPLETED);
}

若要深入了解使用 JAVA 複製 Blob,請參閱使用 JAVA 複製 Blob (部分機器翻譯)。

資源

若要深入了解使用適用於 JAVA 的 Azure Blob 儲存體用戶端程式庫來設定存取層,請參閱下列資源。

REST API 操作

適用於 JAVA 的 Azure SDK 包含建置在 Azure REST API 上的程式庫,可讓您透過熟悉的 JAVA 範例與 REST API 作業進行互動。 用來設定存取層的用戶端程式庫方法會使用下列 REST API 作業:

用戶端程式庫資源

程式碼範例

另請參閱