使用 .NET 设置或更改块 blob 的访问层
本文介绍了如何使用适用于 .NET 的 Azure 存储客户端库设置或更改块 blob 的访问层。
先决条件
- 本文假设已经设置了项目来使用适用于 .NET 的 Azure Blob 存储客户端库。 要了解有关设置项目的信息,包括包安装、添加
using
指令和创建授权客户端对象,请参阅开始使用 Azure Blob 存储和 .NET。 - 授权机制必须具有设置 blob 的访问层的权限。 若要了解详细信息,请参阅以下 REST API 操作的授权指南:
关于块 blob 访问层
要管理存储需求产生的成本,根据数据的访问频率和所需的保留期来整理数据会很有帮助。 Azure 存储提供不同的访问层,以便你可以基于使用方式,以最具成本效益的方式存储 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 操作
Azure SDK for .NET 包含基于 Azure REST API 而生成的库,允许你通过熟悉的 .NET 范例与 REST API 操作进行交互。 用于设置访问层的客户端库方法使用以下 REST API 操作:
- Set Blob Tier (REST API)