Compartir por


Comenzar con Azure Blob Storage y Python

En este artículo se muestra cómo conectarse a Azure Blob Storage mediante la biblioteca cliente Azure Blob Storage para Python. Una vez conectado, el código puede funcionar en contenedores, blobs y características del servicio Blob Storage.

Referencia de API | Paquete (PyPi) | Código fuente de la biblioteca | Muestras | Enviar comentarios

Prerrequisitos

Configuración del proyecto

En esta sección se explica cómo preparar un proyecto para que funcione con la biblioteca cliente de Azure Blob Storage para Python.

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

pip install azure-storage-blob azure-identity

A continuación, abra el archivo de código y agregue las instrucciones de importación necesarias. En este ejemplo, agregamos lo siguiente al archivo .py:

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient

Información de la biblioteca cliente de blobs:

  • azure.storage.blob: contiene las clases principales (objetos de cliente) que puede usar para operar en el servicio, los contenedores y los blobs.

Programación asincrónica

La biblioteca cliente de Azure Blob Storage para Python admite API sincrónicas y asincrónicas. Las API asincrónicas se basan en la biblioteca asincrónica de Python.

Siga estos pasos para usar las API asincrónicas del proyecto:

  • Instale un transporte asincrónico, como aiohttp. Puede instalar aiohttp junto con azure-storage-blob mediante un comando opcional de instalación de dependencias. En este ejemplo, usamos el siguiente comando pip install:

    pip install azure-storage-blob[aio]
    
  • Abra el archivo de código y agregue las instrucciones de importación necesarias. En este ejemplo, agregamos lo siguiente al archivo .py:

    import asyncio
    
    from azure.identity.aio import DefaultAzureCredential
    from azure.storage.blob.aio import BlobServiceClient, BlobClient, ContainerClient
    

    La instrucción import asyncio solo es necesaria si usa la biblioteca en el código. Aquí se agrega para mayor claridad, ya que los ejemplos de los artículos de la guía para desarrolladores usan la biblioteca asyncio.

  • Cree un objeto de cliente mediante async with para empezar a trabajar con recursos de datos. Solo el cliente de nivel superior debe usar async with, ya que otros clientes creados a partir de él comparten el mismo grupo de conexiones. En este ejemplo, se crea un objeto BlobServiceClient mediante async with y, a continuación, se crea un objeto ContainerClient:

    async with BlobServiceClient(account_url, credential=credential) as blob_service_client:
        container_client = blob_service_client.get_container_client(container="sample-container")
    

    Para más información, consulte los ejemplos asincrónicos de Autorización del acceso y conexión a Blob Storage.

Información de la biblioteca cliente asincrónica de blobs:

  • azure.storage.blob.aio: contiene las clases principales que puede usar para operar en el servicio, los contenedores y los blobs de forma asincrónica.

Autorización del acceso y conexión a Blob Storage

Para conectar una aplicación a Blob Storage, cree una instancia de la clase BlobServiceClient. Este objeto es el punto inicial para interactuar con los recursos de datos en el nivel de cuenta de almacenamiento. Puede usarlo para operar en la cuenta de almacenamiento y sus contenedores. También puede usar el cliente de servicio para crear clientes de contenedor o clientes de blobs, en función del recurso con el que necesite trabajar.

Para obtener más información sobre cómo crear y administrar objetos de cliente, incluidos los procedimientos recomendados, consulte Crear y administrar objetos de cliente que interactúan con los recursos de datos.

Puede autorizar un objeto BlobServiceClient mediante un token de autorización de Microsoft Entra, una clave de acceso de cuenta o una firma de acceso compartido. Para una seguridad óptima, Microsoft recomienda usar Microsoft Entra ID con identidades administradas para autorizar solicitudes contra datos de blobs. Para más información, vea Autorización del acceso a blobs mediante Microsoft Entra ID.

Para autorizar con Microsoft Entra ID, debe usar una entidad de seguridad. El tipo de entidad de seguridad que necesita depende de dónde se ejecute la aplicación. Use la siguiente tabla como guía:

Dónde se ejecuta la aplicación Entidad de seguridad Guía
Máquina local (desarrollo y pruebas) Entidad de servicio Con el fin de descubrir cómo registrar la aplicación, configurar un grupo de Microsoft Entra, asignar roles y configurar variables de entorno, consulte Autorización del acceso mediante entidades de servicio para desarrolladores
Máquina local (desarrollo y pruebas) Identidad del usuario Con el fin de descubrir cómo configurar un grupo de Microsoft Entra, asignar roles e iniciar sesión en Azure, consulte Autorización del acceso mediante credenciales para desarrolladores
Hospedado en Azure Identidad administrada Para descubrir cómo habilitar la identidad administrada y asignar roles, vea Autorización del acceso desde aplicaciones hospedadas en Azure mediante una identidad administrada.
Hospedado fuera de Azure (por ejemplo, aplicaciones locales) Entidad de servicio Para descubrir cómo registrar la aplicación, asignar roles y configurar variables de entorno, vea Autorización del acceso desde aplicaciones locales mediante una entidad de servicio de aplicación.

Autorización del acceso mediante DefaultAzureCredential

Una manera fácil y segura de autorizar el acceso y conectarse a Blob Storage es obtener un token de OAuth mediante la creación de una instancia de DefaultAzureCredential. Después, puede usar esa credencial para crear un objeto BlobServiceClient.

En el ejemplo siguiente, se crea un objeto BlobServiceClient con DefaultAzureCredential:

def get_blob_service_client_token_credential(self):
    # TODO: Replace <storage-account-name> with your actual storage account name
    account_url = "https://<storage-account-name>.blob.core.windows.net"
    credential = DefaultAzureCredential()

    # Create the BlobServiceClient object
    blob_service_client = BlobServiceClient(account_url, credential=credential)

    return blob_service_client

Si el proyecto usa API asincrónicas, cree una instancia BlobServiceClient mediante async with:

# TODO: Replace <storage-account-name> with your actual storage account name
account_url = "https://<storage-account-name>.blob.core.windows.net"
credential = DefaultAzureCredential()

async with BlobServiceClient(account_url, credential=credential) as blob_service_client:
    # Work with data resources in the storage account

Compilación de la aplicación

A medida que compila aplicaciones para trabajar con recursos de datos en Azure Blob Storage, el código interactúa principalmente con tres tipos de recursos: cuentas de almacenamiento, contenedores y blobs. Para más información sobre estos tipos de recursos, cómo se relacionan entre sí y cómo interactúan las aplicaciones con los recursos, consulte Descripción de cómo interactúan las aplicaciones con los recursos de datos de Blob Storage.

En las guías siguientes se muestra cómo trabajar con recursos de datos y realizar acciones específicas mediante la biblioteca cliente de Azure Storage para Python:

Guía Descripción
Configuración de una directiva de reintentos Implemente directivas de reintento para las operaciones de cliente.
Copia de blobs Copie un blob de una ubicación a otra.
Creación de un contenedor Cree contenedores de blobs.
Creación de una SAS de delegación de usuario Creación de una SAS de delegación de usuarios para un contenedor o blob.
Creación y administración de concesiones de blobs Establezca y administre un bloqueo en un blob.
Creación y administración de concesiones de contenedores Establezca y administre un bloqueo en un contenedor.
Eliminación y restauración de blobs Elimine blobs y restaure los blobs eliminados temporalmente.
Eliminación y restauración de contenedores Elimine contenedores y restaure los contenedores eliminados temporalmente.
Descarga de los blobs Descargue blobs mediante cadenas, secuencias y rutas de acceso de archivo.
Búsqueda de blobs mediante etiquetas Establezca y recupere etiquetas, además de usar etiquetas para buscar blobs.
Enumeración de blobs Enumere los blobs de diferentes maneras.
Enumeración de contenedores Enumere los contenedores de una cuenta y las distintas opciones disponibles para personalizar una lista.
Administración de propiedades y metadatos (blobs) Obtenga y establezca las propiedades y los metadatos de los blobs.
Administración de propiedades y metadatos (contenedores) Obtenga y establezca las propiedades y los metadatos de los contenedores.
Optimización del rendimiento de las transferencias de datos Optimice el rendimiento de las transferencias de datos.
Establecer o cambiar el nivel de acceso de un blob Establezca o cambie el nivel de acceso de un blob en bloques.
Carga de blobs Aprenda a cargar blobs mediante cadenas, secuencias, rutas de acceso de archivo y otros métodos.