Listar contêineres de blob com Python
Ao listar os contêineres em uma conta de Armazenamento do Azure a partir do seu código, você pode especificar várias opções para gerenciar como os resultados são retornados do Armazenamento do Azure. Este artigo mostra como listar contêineres usando a biblioteca de cliente do Armazenamento do Azure para Python.
Para saber mais sobre como listar contêineres de blob usando APIs assíncronas, consulte Listar contêineres de forma assíncrona.
Pré-requisitos
- Subscrição do Azure - crie uma gratuitamente
- Conta de armazenamento do Azure - criar uma conta de armazenamento
- Python 3.8+
Configurar o ambiente
Se você não tiver um projeto existente, esta seção mostra como configurar um projeto para trabalhar com a biblioteca de cliente do Armazenamento de Blobs do Azure para Python. Para obter mais detalhes, consulte Introdução ao Armazenamento de Blobs do Azure e Python.
Para trabalhar com os exemplos de código neste artigo, siga estas etapas para configurar seu projeto.
Instalar pacotes
Instale os seguintes pacotes usando pip install
:
pip install azure-storage-blob azure-identity
Adicionar instruções de importação
Adicione as seguintes instruções import
:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Autorização
O mecanismo de autorização deve ter as permissões necessárias para listar contêineres de blob. Para autorização com o Microsoft Entra ID (recomendado), você precisa da função interna do RBAC do Azure RBAC Storage Blob Data Contributor ou superior. Para saber mais, consulte as diretrizes de autorização para Listar contêineres (API REST).
Criar um objeto cliente
Para conectar um aplicativo ao Armazenamento de Blob, crie uma instância de BlobServiceClient. O exemplo a seguir mostra como criar um objeto cliente usando DefaultAzureCredential
para autorização:
# 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)
Você também pode criar objetos de cliente para contêineres ou blobs específicos, diretamente ou a partir do BlobServiceClient
objeto. Para saber mais sobre como criar e gerenciar objetos de cliente, consulte Criar e gerenciar objetos de cliente que interagem com recursos de dados.
Sobre as opções de listagem de contêineres
Ao listar contêineres do seu código, você pode especificar opções para gerenciar como os resultados são retornados do Armazenamento do Azure. Você pode especificar o número de resultados a serem retornados em cada conjunto de resultados e, em seguida, recuperar os conjuntos subsequentes. Você também pode filtrar os resultados por um prefixo e retornar metadados de contêiner com os resultados. Essas opções são descritas nas seções a seguir.
Para listar contêineres em uma conta de armazenamento, chame o seguinte método:
Esse método retorna um iterável do tipo ContainerProperties. Os contentores são ordenados lexicograficamente pelo nome.
Gerenciar quantos resultados são retornados
Por padrão, uma operação de listagem retorna até 5000 resultados de cada vez. Para retornar um conjunto menor de resultados, forneça um valor diferente de zero para o argumento de results_per_page
palavra-chave.
Filtrar resultados com um prefixo
Para filtrar a lista de contêineres, especifique uma cadeia de caracteres ou caractere para o argumento de name_starts_with
palavra-chave. A cadeia de caracteres de prefixo pode incluir um ou mais caracteres. Em seguida, o Armazenamento do Azure retorna apenas os contêineres cujos nomes começam com esse prefixo.
Incluir metadados de contêiner
Para incluir metadados de contêiner com os resultados, defina o argumento de include_metadata
palavra-chave como True
. O Armazenamento do Azure inclui metadados com cada contêiner retornado, portanto, você não precisa buscar os metadados do contêiner separadamente.
Incluir contêineres excluídos
Para incluir contêineres excluídos suavemente com os resultados, defina o argumento de include_deleted
palavra-chave como True
.
Exemplos de código
O exemplo a seguir lista todos os contêineres e metadados. Você pode incluir metadados de contêiner definindo include_metadata
como True
:
def list_containers(self, blob_service_client: BlobServiceClient):
containers = blob_service_client.list_containers(include_metadata=True)
for container in containers:
print(container['name'], container['metadata'])
O exemplo a seguir lista apenas contêineres que começam com um prefixo name_starts_with
especificado no parâmetro:
def list_containers_prefix(self, blob_service_client: BlobServiceClient):
containers = blob_service_client.list_containers(name_starts_with='test-')
for container in containers:
print(container['name'])
Você também pode especificar um limite para o número de resultados por página. Este exemplo passa results_per_page
e pagina os resultados:
def list_containers_pages(self, blob_service_client: BlobServiceClient):
i=0
all_pages = blob_service_client.list_containers(results_per_page=5).by_page()
for container_page in all_pages:
i += 1
print(f"Page {i}")
for container in container_page:
print(container['name'])
Listar contêineres de forma assíncrona
A biblioteca de cliente do Armazenamento de Blobs do Azure para Python dá suporte à listagem de contêineres de forma assíncrona. Para saber mais sobre os requisitos de configuração do projeto, consulte Programação assíncrona.
Siga estas etapas para listar contêineres usando APIs assíncronas:
Adicione as seguintes instruções de importação:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Adicione código para executar o programa usando
asyncio.run
o . Essa função executa a co-rotina passada,main()
em nosso exemplo, e gerencia o loop deasyncio
eventos. As co-rotinas são declaradas com a sintaxe async/await. Neste exemplo, amain()
co-rotina primeiro cria o nívelBlobServiceClient
superior usandoasync with
e, em seguida, chama o método que lista os contêineres. Observe que apenas o cliente de nível superior precisa usarasync with
o , pois outros clientes criados a partir dele compartilham o mesmo pool de conexões.async def main(): sample = ContainerSamples() # 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: await sample.list_containers(blob_service_client) if __name__ == '__main__': asyncio.run(main())
Adicione código para listar os contêineres. O código é o mesmo que o exemplo síncrono, exceto que o método é declarado com a
async
palavra-chave easync for
é usado ao chamar olist_containers
método.async def list_containers(self, blob_service_client: BlobServiceClient): async for container in blob_service_client.list_containers(include_metadata=True): print(container['name'], container['metadata'])
Com essa configuração básica em vigor, você pode implementar outros exemplos neste artigo como co-rotinas usando a sintaxe async/await.
Recursos
Para saber mais sobre como listar contêineres usando a biblioteca de cliente do Armazenamento de Blobs do Azure para Python, consulte os recursos a seguir.
Amostras de código
- Exibir exemplos de código síncrono ou assíncrono deste artigo (GitHub)
Operações da API REST
O SDK do Azure para Python contém bibliotecas que se baseiam na API REST do Azure, permitindo que você interaja com operações da API REST por meio de paradigmas Python familiares. Os métodos de biblioteca de cliente para listar contêineres usam a seguinte operação de API REST:
- Listar contêineres (API REST)
Recursos da biblioteca do cliente
Consulte também
Conteúdos relacionados
- Este artigo faz parte do guia do desenvolvedor do Blob Storage para Python. Para saber mais, consulte a lista completa de artigos do guia do desenvolvedor em Build your Python app.