Eventos
Junte-se a nós na FabCon Vegas
31 de mar., 23 - 2 de abr., 23
O melhor evento liderado pela comunidade Microsoft Fabric, Power BI, SQL e AI. 31 de março a 2 de abril de 2025.
Registre-se hoje mesmoNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Ao listar contêineres em uma conta de Armazenamento do Microsoft Azure do seu código, você pode especificar várias opções para gerenciar o modo como os resultados são retornados do Armazenamento do Microsoft Azure. Esse artigo mostra como listar contêineres usando a biblioteca de clientes do Armazenamento do Azure para Python.
Para saber mais sobre como listar contêoneres de blobs usando APIs assíncronas, confira Listar contêineres de forma assíncrona.
Se você não tiver um projeto existente, esta seção mostrará como configurar um projeto para funcionar com a biblioteca de clientes do Armazenamento de Blobs do Azure para Python. Para obter mais detalhes, confira Introdução ao Armazenamento de Blobs do Azure e ao Python.
Para trabalhar com os exemplos de código neste artigo, siga estas etapas para configurar seu projeto.
Instale os seguintes pacotes por meio de pip install
:
pip install azure-storage-blob azure-identity
Adicione as seguintes declarações de import
:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
O mecanismo de autorização precisa 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 de Colaborador de Dados de Blob de Armazenamento ou superior do RBAC do Azure. Para saber mais, consulte as diretrizes de autorização para Listar Contêineres (API REST).
Para conectar um aplicativo ao Armazenamento de Blobs, crie uma instância do 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 cliente para contêineres ou blobs específicos, diretamente ou do objeto BlobServiceClient
. Para saber mais sobre como criar e gerenciar objetos clientes, confira Criar e gerenciar objetos clientes que interagem com recursos de dados.
Ao listar contêineres do 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 uma iterável do tipo ContainerProperties. Os contêineres são ordenados lexicograficamente pelo nome.
Por padrão, uma operação de listagem retorna até 5.000 resultados por vez. Para retornar um conjunto menor de resultados, forneça um valor diferente de zero para o argumento de results_per_page
palavra-chave.
Para filtrar a lista de contêineres, especifique uma cadeia de caracteres ou um caractere para o argumento de palavra-chave name_starts_with
. A cadeia de caracteres de prefixo pode incluir um ou mais caracteres. O Armazenamento do Azure então retorna somente os contêineres cujos nomes começam com esse prefixo.
Para incluir metadados de contêiner com os resultados, defina o argumento de palavra-chave include_metadata
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.
Para incluir contêineres com exclusão reversível com os resultados, defina o argumento de palavra-chave include_deleted
como True
.
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 seguinte exemplo lista apenas contêineres que começam com um prefixo especificado no parâmetro name_starts_with
:
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'])
A biblioteca cliente do Armazenamento de Blobs do Azure para Python é compatível com a listagem de contêineres de forma assíncrona. Para saber mais sobre os requisitos de instalação do projeto, confira Programação assíncrona.
Siga as etapas abaixo para listar blobs 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 o código para executar o programa usando asyncio.run
. Essa função executa a corrotina passada, main()
no nosso exemplo, e gerencia o loop de eventos asyncio
. As corrotinas são declaradas com a sintaxe async/await. Nesse exemplo, a corrotina main()
primeiro cria o BlobServiceClient
de nível superior usando async with
e, em seguida, chama o método para listar os contêineres. Observe que 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.
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 é igual ao exemplo síncrono, exceto que o método é declarado com a palavra-chave async
e async for
é usada ao chamar o método list_containers
.
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 corrotinas usando sintaxe a async/await.
Para saber mais sobre como listar contêineres usando a biblioteca de clientes do Armazenamento de Blobs do Azure para Python, consulte os recursos a seguir.
O SDK do Azure para Python contém bibliotecas que se baseiam na API REST do Azure, permitindo a interação com as operações da API REST por meio de paradigmas conhecidos do Python. Os métodos da biblioteca de clientes para listar contêineres usam a seguinte operação de API REST:
Eventos
Junte-se a nós na FabCon Vegas
31 de mar., 23 - 2 de abr., 23
O melhor evento liderado pela comunidade Microsoft Fabric, Power BI, SQL e AI. 31 de março a 2 de abril de 2025.
Registre-se hoje mesmoTreinamento
Roteiro de aprendizagem
AZ-204: Desenvolver soluções que usam o Armazenamento de Blobs - Training
AZ-204: Desenvolver soluções que usam o Armazenamento de Blobs