Lister les conteneurs d’objets blob en Python
Quand vous listez des conteneurs dans un compte de stockage Azure à partir de votre code, vous pouvez spécifier plusieurs options pour gérer la façon dont les résultats sont retournés à partir du stockage Azure. Cet article montre comment lister les conteneurs à l’aide de la bibliothèque de client Stockage Azure pour Python.
Pour en savoir plus sur le répertoriage des conteneurs d’objets blob à l’aide d’API asynchrones, consultez Répertorier les conteneurs de manière asynchrone.
Prérequis
- Abonnement Azure : créez-en un gratuitement
- Compte de stockage Azure : créez un compte de stockage
- Python 3.8+
Paramétrer votre environnement
Si vous n’avez aucun projet existant, cette section vous montre comment configurer un projet de façon à utiliser la bibliothèque de client Stockage Blob Azure pour Python. Pour plus d’informations, consultez Bien démarrer avec le service Stockage Blob Azure et Python.
Pour utiliser les exemples de code de cet article, effectuez les étapes suivantes pour configurer votre projet.
Installer des packages
Installez les packages suivants en utilisant pip install
:
pip install azure-storage-blob azure-identity
Ajouter des instructions import
Ajoutez les instructions import
suivantes :
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Autorisation
Le mécanisme d’autorisation doit disposer des autorisations nécessaires pour répertorier des conteneurs d’objets blob. Pour l’autorisation avec Microsoft Entra ID (recommandé), vous devez disposer au minimum du rôle RBAC Azure intégré Contributeur aux données Blob du stockage. Pour en savoir plus, consultez les conseils d’autorisation pour Lister des conteneurs (API REST).
Créer un objet client
Pour connecter une application au Stockage Blob, créez une instance de BlobServiceClient. L’exemple suivant montre comment créer un objet client à l’aide de DefaultAzureCredential
pour l’autorisation :
# 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)
Vous pouvez également créer des objets clients pour des conteneurs ou des objets blob spécifiques, directement ou à partir de l’objet BlobServiceClient
. Pour en savoir plus sur la création et la gestion d’objets clients, consultez Créer et gérer des objets clients qui interagissent avec des ressources de données.
À propos des options de la liste de conteneurs
Quand vous listez les conteneurs dans votre code, vous pouvez spécifier des options pour gérer la façon dont les résultats sont retournés par le Stockage Azure. Vous pouvez spécifier le nombre de résultats à retourner dans chaque ensemble de résultats, puis récupérer les ensembles suivants. Vous pouvez également filtrer les résultats par un préfixe et retourner des métadonnées de conteneur avec les résultats. Les étapes de cette procédure sont décrites dans les sections suivantes.
Pour répertorier les conteneurs dans un compte de stockage, appelez la méthode suivante :
Cette méthode retourne une itérable de type ContainerProperties. Les conteneurs sont classés lexicographiquement par nom.
Gérez le nombre de résultats retournés
Par défaut, une opération de dressage de liste renvoie jusqu’à 5 000 résultats à la fois. Pour retourner un jeu de résultats plus petit, fournissez une valeur différente de zéro pour l’argument de mot clé results_per_page
.
Filtrez les résultats avec un préfixe
Si vous souhaitez filtrer la liste des conteneurs, spécifiez une chaîne ou un caractère pour l’argument de mot clé name_starts_with
. La chaîne de préfixe peut inclure un ou plusieurs caractères. Le stockage Azure retourne alors uniquement les conteneurs dont les noms commencent par ce préfixe.
Inclure des métadonnées de conteneur
Pour inclure des métadonnées de conteneur avec les résultats, définissez l’argument de mot clé include_metadata
sur True
. Le Stockage Azure comprend des métadonnées avec chaque conteneur retourné. Vous n’avez donc pas besoin de récupérer les métadonnées de conteneur séparément.
Inclure des conteneurs supprimés
Pour inclure des conteneurs supprimés de manière réversible avec les résultats, définissez l’argument de mot clé include_deleted
sur True
.
Exemples de code
L’exemple suivant liste la totalité des conteneurs et des métadonnées. Vous pouvez inclure des métadonnées de conteneur en affectant la valeur True
à include_metadata
:
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'])
L’exemple suivant liste uniquement les conteneurs qui commencent par le préfixe spécifié dans le paramètre 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'])
Vous pouvez également spécifier une limite pour le nombre de résultats par page. Cet exemple passe results_per_page
, et pagine les résultats :
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'])
Répertorier les conteneurs de manière asynchrone
La bibliothèque de client Stockage Blob Azure pour Python prend en charge le répertoriage de conteneurs de manière asynchrone. Pour en savoir plus sur les exigences de configuration de projet, consultez programmation asynchrone.
Pour répertorier les conteneurs à l’aide d’API asynchrones, effectuez les étapes suivantes :
Ajoutez les instructions d’importation suivantes :
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Ajoutez du code pour exécuter le programme à l’aide de
asyncio.run
. Cette fonction exécute la coroutine passée,main()
dans notre exemple et gère la boucle d’événementasyncio
. Les coroutines sont déclarées avec la syntaxe asynchrone/await. Dans cet exemple, lamain()
coroutine crée d’abord le niveau supérieurBlobServiceClient
à l’aide deasync with
, puis appelle la méthode qui répertorie les conteneurs. Notez que seul le client de niveau supérieur doit utiliserasync with
, car d’autres clients créés à partir de celui-ci partagent le même pool de connexions.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())
Ajoutez du code pour répertorier les conteneurs. Le code est identique à celui de l’exemple synchrone, sauf que la méthode est déclarée avec le mot clé
async
et queasync for
est utilisé lors de l’appel de la méthodelist_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'])
Avec cette configuration de base en place, vous pouvez implémenter d’autres exemples dans cet article en tant que coroutines à l’aide de la syntaxe asynchrone/await.
Ressources
Pour en savoir plus sur le listage des conteneur à l’aide de la bibliothèque de client Stockage Blob Azure pour Python, consultez les ressources suivantes.
Exemples de code
- Afficher synchrone ou exemples de code asynchrones de cet article (GitHub)
Opérations de l'API REST
Le kit SDK Azure pour Python contient des bibliothèques qui reposent sur l’API REST Azure, ce qui vous permet d’interagir avec les opérations de l’API REST via des paradigmes Python familiers. Les méthodes de bibliothèque de client pour le listage des conteneurs utilisent l’opération d’API REST suivante :
- List Containers (API REST)
Ressources de bibliothèque cliente
- Documentation de référence sur la bibliothèque cliente
- Code source de la bibliothèque de client
- Package (PyPi)
Voir aussi
Contenu connexe
- Cet article fait partie du guide Stockage Blob pour Python pour les développeurs. Pour découvrir plus d’informations, consultez la liste complète des articles du guide du développeur dans Générer votre application Python.