Introdução ao Armazenamento de Blobs do Azure e ao Python

Este artigo mostra como se conectar ao Armazenamento de Blobs do Azure usando a biblioteca de clientes do Armazenamento de Blobs do Azure para Python. Após se conectar, seu código pode operar em contêineres, blobs e recursos do serviço de Armazenamento de Blobs.

Referência de API | Pacote (PyPi) | Código-fonte da biblioteca | Amostras | Enviar comentários

Pré-requisitos

Configurar o seu projeto

Esta seção orienta você na preparação de um projeto para trabalhar com a biblioteca de clientes do Armazenamento de Blobs do Azure para Python.

No diretório do projeto, instale pacotes para as bibliotecas de cliente do Armazenamento de Blobs do Azure e do Azure Identity usando o comando pip install. O pacote azure-identity é necessário para conexões sem senha com os serviços do Azure.

pip install azure-storage-blob azure-identity

Em seguida, abra o arquivo de código e adicione as instruções de importação necessárias. Neste exemplo, adicionamos o seguinte ao nosso arquivo .py:

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

Informações da biblioteca de clientes do blob:

  • azure.storage.blob: contém as classes primárias (objetos cliente) que você pode usar para operar no serviço, contêineres e blobs.

Programação assíncrona

A biblioteca de clientes do Armazenamento de Blobs do Azure para Python dá suporte a APIs síncronas e assíncronas. As APIs assíncronas são baseadas na biblioteca assíncrona do Python.

Siga estas etapas para usar as APIs assíncronas no seu projeto:

  • Instale um transporte assíncrono, como aiohttp. Você pode instalar aiohttp juntamente com azure-storage-blob usando um comando de instalação de dependência opcional. Neste exemplo, usamos o seguinte comando pip install:

    pip install azure-storage-blob[aio]
    
  • Abra o arquivo de código e adicione as instruções de importação necessárias. Neste exemplo, adicionamos o seguinte ao nosso arquivo .py:

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

    A instrução import asyncio só será necessária se você estiver usando a biblioteca no seu código. Ela é adicionada aqui para maior clareza, pois os exemplos nos artigos do guia do desenvolvedor usam a biblioteca asyncio.

  • Crie um objeto cliente usando async with para começar a trabalhar com recursos de dados. Somente o cliente de nível superior precisa usar async with, pois os outros clientes criados a partir dele compartilham o mesmo pool de conexões. Neste exemplo, criamos um objeto BlobServiceClient usando async with e, em seguida, criamos um 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 saber mais, confira os exemplos assíncronos em Autorizar acesso e conectar-se ao Armazenamento de Blobs.

Informações da biblioteca de clientes assíncronos do blob:

  • azure.storage.blob.aio: contém as classes primárias que você pode usar para operar no serviço, contêineres e blobs de forma assíncrona.

Autorizar o acesso e se conectar ao Armazenamento de Blobs

Para conectar um aplicativo ao Armazenamento de Blobs, crie uma instância da classe BlobServiceClient. Esse objeto é seu ponto de partida para interagir com os recursos de dados no nível da conta de armazenamento. Você pode usá-lo para operar na conta de armazenamento e nos respectivos contêineres. Você também pode usar o cliente de serviço para criar clientes de contêiner ou clientes de blob, dependendo do recurso com o qual você precisa trabalhar.

Para saber mais sobre como criar e gerenciar objetos clientes, inclusive as melhores práticas, confira Criar e gerenciar objetos de cliente que interagem com recursos de dados.

Autorize um objeto BlobServiceClient usando um token de autorização do Microsoft Entra, uma chave de acesso de conta ou uma SAS (assinatura de acesso compartilhado). Para otimizar a segurança, a Microsoft recomenda o uso do Microsoft Entra ID com identidades gerenciadas para autorizar solicitações contra dados de blob. Para obter mais informações, consulte Autorizar o acesso a blobs usando o Microsoft Entra ID.

Para autorizar com a ID do Microsoft Entra, você precisará usar uma entidade de segurança. O tipo de entidade de segurança de que você precisa depende do local em que o aplicativo é executado. Use a tabela a seguir como guia:

O local em que o aplicativo é executado Entidade de segurança Diretrizes
Computador local (desenvolvimento e teste) Entidade de serviço Para saber como registrar o aplicativo, configurar um grupo do Microsoft Entra, atribuir funções e configurar variáveis de ambiente, confira Autorizar o acesso usando entidades de serviço do desenvolvedor
Computador local (desenvolvimento e teste) Identidade do usuário Para saber como configurar um grupo do Microsoft Entra, atribuir funções e entrar no Azure, confira Autorizar o acesso usando credenciais de desenvolvedor
Hospedada no Azure Identidade gerenciada Para saber como habilitar a identidade gerenciada e atribuir funções, confira Autorizar o acesso de aplicativos hospedados no Azure usando uma identidade gerenciada
Hospedado fora do Azure (por exemplo, aplicativos locais) Entidade de serviço Para saber como registrar o aplicativo, atribuir funções e configurar variáveis de ambiente, confira Autorizar o acesso em aplicativos locais usando uma entidade de serviço de aplicativo

Autorizar o acesso usando DefaultAzureCredential

Uma maneira fácil e segura de autorizar o acesso e se conectar ao Armazenamento de Blobs é obter um token OAuth criando uma instância de DefaultAzureCredential. Depois, você pode usar essa credencial para criar um objeto BlobServiceClient.

O exemplo a seguir cria um objeto BlobServiceClient usando 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

Se o projeto usar APIs assíncronas, crie uma instância BlobServiceClient usando 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

Compilar o aplicativo

À medida que você cria aplicativos para trabalhar com recursos de dados no Armazenamento de Blobs do Azure, seu código interage principalmente com três tipos de recursos: contas de armazenamento, contêineres e blobs. Para saber mais sobre esses tipos de recursos, como eles se relacionam entre si e como os aplicativos interagem com os recursos, confira Entender como os aplicativos interagem com os recursos de dados do Armazenamento de Blobs.

Os seguintes guias mostram como acessar dados e executar ações específicas usando a biblioteca de clientes do Armazenamento do Azure para Python:

Guia Descrição
Configurar uma política de repetição Implementar políticas de repetição para operações do cliente.
Copiar blobs Copie um blob de uma localização para outra.
Criar um contêiner Criar contêineres de blob.
Criar uma SAS de delegação de usuário Crie uma delegação de usuário SAS para um contêiner ou blob.
Criar e gerenciar concessões de blob Estabeleça e gerencie um bloqueio em um blob.
Criar e gerenciar concessões de contêiner Estabeleça e gerencie um bloqueio em um contêiner.
Excluir e restaurar blobs Excluir blobs e restaurar blobs removidos com a exclusão temporária.
Excluir e restaurar contêineres Excluir contêineres e restaurar contêineres removidos com a exclusão temporária.
Baixar blobs Baixe blobs usando cadeias de caracteres, fluxos e caminhos de arquivo.
Encontrar blobs usando marcas Defina e recupere marcas e use as marcas para localizar blobs.
Listar blobs Liste blobs de maneiras diferentes.
Listar contêineres Liste os contêineres em uma conta e as diversas opções disponíveis para personalizar uma listagem.
Gerenciar propriedades e metadados (blobs) Obtenha e defina as propriedades e metadados dos blobs.
Gerenciar propriedades e metadados (contêineres) Obtenha e defina as propriedades e metadados dos contêineres.
Ajuste de desempenho para transferências de dados Otimizar o desempenho para operações de transferência de dados.
Definir ou alterar o nível de acesso de um blob Defina ou altere a camada de acesso para um blob de blocos.
Carregar blobs Saiba como carregar blobs usando cadeias de caracteres, fluxos, caminhos de arquivo e outros métodos.