共用方式為


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

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

必要條件

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

關於區塊 Blob 存取層

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

blob 資料的存取層

Azure 儲存體存取層包括:

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

若要深入瞭解存取層,請參閱 Blob 資料的存取層

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

限制

只有區塊 Blob 才能設定存取層。 若要深入瞭解設定區塊 Blob 存取層的限制,請參閱設定 Blob 層 (REST API)

注意

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

在 Blob 上傳期間設定存取層

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

public static async Task UploadWithAccessTierAsync(
    BlobContainerClient containerClient,
    string localFilePath)
{
    string fileName = Path.GetFileName(localFilePath);
    BlockBlobClient blockBlobClient = containerClient.GetBlockBlobClient(fileName);

    var uploadOptions = new BlobUploadOptions()
    {
        AccessTier = AccessTier.Cool
    };

    FileStream fileStream = File.OpenRead(localFilePath);
    await blockBlobClient.UploadAsync(fileStream, uploadOptions);
    fileStream.Close();
}

若要深入了解使用 .NET 上傳 Blob,請參閱使用 .NET 上傳 Blob

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

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

下列程式碼範例顯示如何將現有 Blob 的存取層變更為 Cool

public static async Task ChangeBlobAccessTierAsync(
    BlobClient blobClient)
{
    // Change the access tier of the blob to cool
    await blobClient.SetAccessTierAsync(AccessTier.Cool);
}

如果您要重新凍結封存的 Blob,您可以選擇性地將 rehydratePriority 參數設定為 HighStandard

將 Blob 複製到不同的存取層

您可以將存取層指定為複製作業的一部分,以變更現有區塊 Blob 的存取層。 若要在複製作業期間變更存取層,請使用 BlobCopyFromUriOptions 類別,並指定 AccessTier 属性。 如果您使用複製作業從封存層重新凍結 Blob,您可以選擇性地將 RehydratePriority 屬性設定為 HighStandard

下列程式碼範例顯示如何使用複製作業,將封存的 Blob 解除凍結為 Hot 層:

public static async Task RehydrateBlobUsingCopyAsync(
    BlobClient sourceArchiveBlob,
    BlobClient destinationRehydratedBlob)
{
    // Note: the destination blob must have a different name than the archived source blob

    // Configure copy options to specify hot tier and standard priority
    BlobCopyFromUriOptions copyOptions = new()
    {
        AccessTier = AccessTier.Hot,
        RehydratePriority = RehydratePriority.Standard
    };

    // Copy source blob from archive tier to destination blob in hot tier
    CopyFromUriOperation copyOperation = await destinationRehydratedBlob
        .StartCopyFromUriAsync(sourceArchiveBlob.Uri, copyOptions);
    await copyOperation.WaitForCompletionAsync();
}

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

資源

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

REST API 操作

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

用戶端程式庫資源

程式碼範例

另請參閱