使用 .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
參數設定為 High
或 Standard
。
將 Blob 複製到不同的存取層
您可以將存取層指定為複製作業的一部分,以變更現有區塊 Blob 的存取層。 若要在複製作業期間變更存取層,請使用 BlobCopyFromUriOptions 類別,並指定 AccessTier 属性。 如果您使用複製作業從封存層重新凍結 Blob,您可以選擇性地將 RehydratePriority 屬性設定為 High
或 Standard
。
下列程式碼範例顯示如何使用複製作業,將封存的 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 作業:
- 設定 Blob 層 (REST API)