Поделиться через


Установка или изменение уровня доступа блочного BLOB-объекта с помощью .NET

В этой статье показано, как задать или изменить уровень доступа для блочного BLOB-объекта с помощью клиентской библиотеки службы хранилища Azure для .NET.

Prerequisites

Настройка среды

Если у вас нет существующего проекта, в этом разделе показано, как настроить проект для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для .NET. Ниже приведены шаги по установке пакета, добавлению using директив и созданию авторизованного клиентского объекта. Дополнительные сведения см. в статье «Начните с хранилища BLOB-объектов Azure и .NET».

Установка пакетов

В каталоге вашего проекта установите пакеты клиентских библиотек Azure Blob Storage и Azure Identity с помощью команды dotnet add package. Пакет Azure.Identity необходим для подключений к службам Azure без использования паролей.

dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity

Добавьте директивы using.

Добавьте эти using директивы в начало файла кода:

using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;

Для некоторых примеров кода в этой статье могут потребоваться дополнительные using директивы.

Создание клиентского объекта

Чтобы подключить приложение к хранилищу BLOB-объектов, создайте экземпляр BLOBServiceClient. В следующем примере показано, как создать клиентский объект с помощью DefaultAzureCredential авторизации:

public BlobServiceClient GetBlobServiceClient(string accountName)
{
    BlobServiceClient client = new(
        new Uri($"https://{accountName}.blob.core.windows.net"),
        new DefaultAzureCredential());

    return client;
}

Вы можете зарегистрировать клиент службы для внедрения зависимостей в приложении .NET.

Вы также можете создавать клиентские объекты для определенных контейнеров или объектов BLOB. Дополнительные сведения о создании клиентских объектов и управлении ими см. в статье "Создание клиентских объектов и управление ими", взаимодействующих с ресурсами данных.

Authorization

Механизм авторизации должен иметь необходимые разрешения для задания слоя доступа блоба. Для авторизации с помощью идентификатора Microsoft Entra (рекомендуется) требуется встроенная роль управления доступом на основе ролей (RBAC) Сотрудник данных BLOB-объектов хранилища или более высокая. Дополнительные сведения см. в руководстве по авторизации для установки уровня хранения Blob.

Сведения о уровнях доступа к блочным BLOBам

Чтобы управлять затратами на хранение, можно упорядочить данные на основе частоты доступа к ней и длительности хранения. Хранилище Azure предоставляет различные уровни доступа, что позволяет наиболее экономично хранить данные BLOB в зависимости от того, как они используются.

Уровни доступа к данным BLOB-объектов

Уровни доступа службы хранилища Azure:

  • Горячий уровень — сетевой уровень, оптимизированный для хранения часто используемых или изменяемых данных. Горячий уровень имеет самые высокие затраты на хранение, но самые низкие затраты на доступ.
  • Холодный уровень — сетевой уровень, оптимизированный для хранения редко используемых или изменяемых данных. Данные на холодном уровне должны храниться не менее 30 дней. Уровень "холодный" имеет более низкие затраты на хранение и более высокие затраты на доступ по сравнению с горячим уровнем.
  • Холодный уровень — сетевой уровень, оптимизированный для хранения данных, которые редко обращаются или изменяются. Данные на холодном уровне должны храниться не менее 90 дней. На холодном уровне хранилища данные хранить дешевле, зато доступ к ним стоит дороже по сравнению с горячим уровнем.
  • Архивный уровень — автономный уровень, оптимизированный для хранения данных, которые используются редко и имеют нестрогие требования к задержке (порядка нескольких часов). Данные на уровне архива должны храниться не менее 180 дней.

Дополнительные сведения о уровнях доступа см. в разделе "Уровни доступа" для данных BLOB-объектов.

Хотя блоб находится на уровне доступа к архиву, он считается в неактивном состоянии и не может быть прочитан или изменен. Чтобы считывать или изменять данные в архивном BLOB-объекте, его необходимо сначала разархивировать на уровень онлайн-доступа. Чтобы узнать больше о возвращении большого двоичного объекта из уровня "Архив" в онлайн-уровень, см. в статье о повторной гидратации BLOB-объектов из архивного уровня.

Restrictions

Установка уровня доступа разрешена только для блочных BLOB-объектов. Дополнительные сведения об ограничениях на настройку уровня доступа блочного BLOB-объекта см. в разделе Set Blob Tier (REST API).

Note

Чтобы задать уровень доступа для Cold использования .NET, необходимо использовать минимальную версию клиентской библиотеки 12.15.0.

Установка уровня доступа блоба во время загрузки

Уровень доступа большого двоичного объекта можно задать при загрузке с использованием класса BlobUploadOptions. В следующем примере кода показано, как задать уровень доступа при загрузке большого двоичного объекта.

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 см. в статье "Отправка БОЛЬШОго двоичного объекта с помощью .NET".

Изменение уровня доступа для существующего блочного BLOB-объекта

Уровень доступа существующего блочного BLOB-объекта можно изменить с помощью одной из следующих функций:

В следующем примере кода показано, как изменить уровень доступа для существующего большого двоичного объекта на Cool.

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

При восстановлении архивного большого двоичного объекта можно при необходимости задать параметр rehydratePriority на High или Standard.

Копирование объекта данных на другой уровень доступа

Уровень доступа существующего блочного BLOB-объекта можно изменить, указав уровень доступа в рамках операции копирования. Чтобы изменить уровень доступа во время операции копирования, используйте класс BlobCopyFromUriOptions и укажите свойство AccessTier . Если вы восстанавливаете большой двоичный объект из архивного уровня с помощью операции копирования, можно при необходимости задать значение свойства RehydratePriority как High или Standard.

В следующем примере кода показано, как восстановить архивированный элемент до уровня 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 см. в статье "Копирование большого двоичного объекта с помощью .NET".

Resources

Дополнительные сведения о настройке уровней доступа с помощью клиентской библиотеки хранилища BLOB-объектов Azure для .NET см. в следующих ресурсах.

Примеры кода

Операции REST API

Пакет SDK Azure для .NET содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы .NET. Методы клиентской библиотеки для настройки уровней доступа используют следующую операцию REST API:

Ресурсы клиентской библиотеки

См. также

  • Эта статья является частью руководства разработчика хранилища BLOB-объектов для .NET. Дополнительные сведения см. в полном списке статей руководства разработчика по созданию приложения .NET.