Compartir vía


Establecimiento o cambio del nivel de acceso de un blob en bloques con .NET

Este artículo muestra cómo establecer o cambiar el nivel de acceso de un blob en bloques con la biblioteca cliente de Azure Storage para .NET.

Requisitos previos

Configurar el entorno

Si no tiene un proyecto existente, esta sección le muestra cómo configurar un proyecto para que funcione con la biblioteca de clientes Azure Blob Storage para .NET. Los pasos incluyen la instalación del paquete, la adición de directivas using y la creación de un objeto cliente autorizado. Para más información, consulte Introducción a Azure Blob Storage y .NET.

Instalar paquetes

En el directorio del proyecto, instale los paquetes para las bibliotecas cliente de Azure Blob Storage y Azure Identity mediante el comando dotnet add package. El paquete Azure.Identity es necesario para las conexiones sin contraseña a los servicios de Azure.

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

Agregue directivas using.

Agregue estas directivas using al principio del archivo de código:

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

Algunos ejemplos de código de este artículo pueden requerir directivas using adicionales.

Creación de un objeto de cliente

Para conectar una aplicación a Blob Storage, cree una instancia de BlobServiceClient. En el ejemplo siguiente se muestra cómo crear un objeto de cliente mediante DefaultAzureCredential para la autorización:

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

    return client;
}

Puede registrar un cliente de servicio para la inserción de dependencias en una aplicación .NET.

También puede crear objetos de cliente para contenedores o blobs específicos. Para obtener más información sobre cómo crear y administrar objetos de cliente, consulte Crear y administrar objetos de cliente que interactúan con los recursos de datos.

Authorization

El mecanismo de autorización debe tener los permisos necesarios para actualizar un blob. Para la autorización con Microsoft Entra ID (recomendado) se necesita el rol integrado de RBAC de Azure de Colaborador de datos de Storage Blob o superior. Para más información, consulte la guía de autorización para Set Blob Tier.

Acerca de los niveles de acceso de blobs en bloques

Para administrar los costes de las necesidades de almacenamiento, podría resultar útil organizar los datos en función de la frecuencia con la que se acceda a ellos y del tiempo que se conserven. Azure Storage ofrece diferentes niveles de acceso para que pueda almacenar los datos de blobs de la manera más rentable en función de cómo se usen.

Niveles de acceso frecuente, esporádico y de archivo para los datos de blobs

Los niveles de acceso de Azure Storage incluyen:

  • Nivel de acceso frecuente: nivel en línea optimizado para almacenar datos a los que se accede o se modifican con frecuencia. El nivel de acceso frecuente tiene los costos de almacenamiento más altos, pero los costos de acceso más bajos.
  • Nivel de acceso esporádico: nivel en línea optimizado para almacenar datos a los que se accede o se modifican con poca frecuencia. Los datos del nivel de acceso esporádico se deben almacenar durante un mínimo de 30 días. El nivel de acceso esporádico tiene menores costos de almacenamiento y mayores costos de acceso en comparación con el nivel de acceso frecuente.
  • Nivel de acceso esporádico: nivel en línea optimizado para almacenar datos a los que se accede o se modifican con poca frecuencia. Los datos del nivel de acceso esporádico se deben almacenar durante un mínimo de 90 días. El nivel de acceso esporádico tiene menores costes de almacenamiento y mayores costes de acceso en comparación con el nivel de acceso esporádico.
  • Nivel de acceso de archivo: nivel sin conexión optimizado para almacenar datos a los que se accede muy pocas veces y que tienen requisitos de latencia flexibles, p. ej., horas. Los datos del nivel de acceso de archivo se deben almacenar durante un mínimo de 180 días.

Si desea obtener más información sobre los niveles de acceso, consulte Niveles de acceso para los datos de blobs.

Mientras un blob se encuentra en el nivel de acceso de archivo, se considera que está sin conexión y no se puede leer ni modificar. Para leer o modificar los datos de un blob archivado, primero debe rehidratar el blob en un nivel en línea. Para obtener más información sobre la rehidratación de un blob del nivel de archivo a un nivel en línea, consulte Rehidratación de blobs desde el nivel de archivo.

Restricciones

Solo se permite establecer el nivel de acceso en los blobs en bloques. Para más información sobre las restricciones sobre cómo establecer el nivel de acceso de un blob en bloques, consulte Establecimiento del nivel de blob (API de REST).

Nota

Para establecer el nivel de acceso en Cold con .NET, es necesario usar la versión mínima de la biblioteca cliente: versión 12.15.0.

Establecimiento del nivel de acceso de un blob durante la carga

Puede establecer el nivel de acceso de un blob en la carga mediante la clase BlobUploadOptions. En el ejemplo de código siguiente se muestra cómo establecer el nivel de acceso al cargar un 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();
}

Para obtener más información sobre cómo cargar un blob con .NET, consulte Carga de un blob con .NET.

Cambio del nivel de acceso de un blob en bloques existente

Puede cambiar el nivel de acceso de un blob en bloques existente mediante una de las siguientes funciones:

En el ejemplo de código siguiente se muestra cómo cambiar el nivel de acceso de un blob existente a Cool:

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

Si va a rehidratar un blob archivado, opcionalmente puede establecer el parámetro rehydratePriority en High o Standard.

Copia de un blob en otro nivel de acceso

Es posible cambiar el nivel de acceso de un blob en bloques existente especificando un nivel de acceso como parte de una operación de copia. Para cambiar el nivel de acceso durante una operación de copia, use la clase BlobCopyFromUriOptions y especifique la propiedad AccessTier. Si va a rehidratar un blob desde el nivel de archivo mediante una operación de copia, opcionalmente puede establecer la propiedad RehydratePriority en High o Standard.

En el ejemplo de código siguiente se muestra cómo rehidratar un blob archivado en el nivel Hot mediante una operación de copia:

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();
}

Para más información sobre cómo copiar un blob con .NET, consulte Copia de un blob con .NET.

Recursos

Para obtener más información sobre cómo configurar niveles de acceso con la biblioteca cliente de Azure Blob Storage para .NET, consulte los recursos siguientes.

Ejemplos de código

Operaciones de API REST

El SDK de Azure para .NET contiene bibliotecas que se crean a partir de la API REST de Azure, lo que le permite interactuar con las operaciones de API REST a través de paradigmas conocidos de .NET. Los métodos de la biblioteca cliente para configurar niveles de acceso usan esta operación de la API de REST:

Recursos de la biblioteca cliente

Consulte también

  • Este artículo forma parte de la guía para desarrolladores de Blob Storage para .NET. Para obtener más información, consulte la lista completa de artículos de la guía para desarrolladores en Compilación de la aplicación .NET.