Exemple : Créer un stockage Azure en utilisant les bibliothèques Azure pour Python
Dans cet article, vous apprendrez comment utiliser les bibliothèques de gestion Azure dans un script Python pour créer un groupe de ressources contenant un compte de stockage Azure et un conteneur de stockage de blobs.
Après avoir créé les ressources, veuillez consulter la section Exemple : Utiliser le stockage Azure pour utiliser les bibliothèques clientes Azure dans le code d’application Python afin de télécharger un fichier dans le conteneur de stockage de blobs.
Sauf indication contraire, toutes les commandes de cet article fonctionnent de la même façon dans les interpréteurs de commandes Windows et bash Linux/macOS.
Les Commandes CLI Azure équivalentes sont listées plus loin dans cet article. Si vous préférez utiliser le portail Azure, veuillez consulter la section Créer un compte de stockage Azure et Créer un conteneur de blobs.
1 : Configurez votre environnement de développement local
Si ce n’est déjà fait, configurez un environnement où vous pouvez exécuter le code. Voici quelques options possibles :
Configurez un environnement virtuel Python en utilisant
venv
ou votre outil de choix. Vous pouvez créer l’environnement virtuel localement ou dans Azure Cloud Shell et y exécuter le code. Assurez-vous d’activer l’environnement virtuel pour commencer à l’utiliser.Utilisez un environnement conda.
Utilisez un conteneur de développement dans Visual Studio Code ou GitHub Codespaces.
2 : Installez les packages de bibliothèques Azure nécessaires
Créez un fichier requirements.txt qui répertorie les bibliothèques de gestion utilisées dans cet exemple :
azure-mgmt-resource azure-mgmt-storage azure-identity
Dans votre terminal avec l’environnement virtuel activé, installez les éléments requis :
pip install -r requirements.txt
3 : Écrivez le code pour créer les ressources de stockage
Créez un fichier Python nommé provision_blob.py avec le code suivant. Les commentaires expliquent les détails. Le script lit votre ID d’abonnement à partir d’une variable d’environnement, AZURE_SUBSCRIPTION_ID
. Vous définirez cette variable ultérieurement. Le nom du groupe de ressources, l’emplacement, le nom du compte de stockage et le nom du conteneur sont tous définis comme des constantes dans le code.
import os, random
# Import the needed management objects from the libraries. The azure.common library
# is installed automatically with the other libraries.
from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.storage import StorageManagementClient
# Acquire a credential object.
credential = DefaultAzureCredential()
# Retrieve subscription ID from environment variable.
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
# Obtain the management object for resources.
resource_client = ResourceManagementClient(credential, subscription_id)
# Constants we need in multiple places: the resource group name and the region
# in which we provision resources. You can change these values however you want.
RESOURCE_GROUP_NAME = "PythonAzureExample-Storage-rg"
LOCATION = "centralus"
# Step 1: Provision the resource group.
rg_result = resource_client.resource_groups.create_or_update(RESOURCE_GROUP_NAME,
{ "location": LOCATION })
print(f"Provisioned resource group {rg_result.name}")
# For details on the previous code, see Example: Provision a resource group
# at https://docs.microsoft.com/azure/developer/python/azure-sdk-example-resource-group
# Step 2: Provision the storage account, starting with a management object.
storage_client = StorageManagementClient(credential, subscription_id)
STORAGE_ACCOUNT_NAME = f"pythonazurestorage{random.randint(1,100000):05}"
# You can replace the storage account here with any unique name. A random number is used
# by default, but note that the name changes every time you run this script.
# The name must be 3-24 lower case letters and numbers only.
# Check if the account name is available. Storage account names must be unique across
# Azure because they're used in URLs.
availability_result = storage_client.storage_accounts.check_name_availability(
{ "name": STORAGE_ACCOUNT_NAME }
)
if not availability_result.name_available:
print(f"Storage name {STORAGE_ACCOUNT_NAME} is already in use. Try another name.")
exit()
# The name is available, so provision the account
poller = storage_client.storage_accounts.begin_create(RESOURCE_GROUP_NAME, STORAGE_ACCOUNT_NAME,
{
"location" : LOCATION,
"kind": "StorageV2",
"sku": {"name": "Standard_LRS"}
}
)
# Long-running operations return a poller object; calling poller.result()
# waits for completion.
account_result = poller.result()
print(f"Provisioned storage account {account_result.name}")
# Step 3: Retrieve the account's primary access key and generate a connection string.
keys = storage_client.storage_accounts.list_keys(RESOURCE_GROUP_NAME, STORAGE_ACCOUNT_NAME)
print(f"Primary key for storage account: {keys.keys[0].value}")
conn_string = f"DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName={STORAGE_ACCOUNT_NAME};AccountKey={keys.keys[0].value}"
print(f"Connection string: {conn_string}")
# Step 4: Provision the blob container in the account (this call is synchronous)
CONTAINER_NAME = "blob-container-01"
container = storage_client.blob_containers.create(RESOURCE_GROUP_NAME, STORAGE_ACCOUNT_NAME, CONTAINER_NAME, {})
# The fourth argument is a required BlobContainer object, but because we don't need any
# special values there, so we just pass empty JSON.
print(f"Provisioned blob container {container.name}")
Authentification dans le code
Plus loin dans cet article, vous vous connecterez à Azure avec l’Azure CLI pour exécuter le code d’exemple. Si votre compte dispose des autorisations pour créer des groupes de ressources et des ressources de stockage dans votre abonnement Azure, le code s’exécutera avec succès.
Pour utiliser un tel code dans un script de production, vous pouvez définir des variables d’environnement pour utiliser une méthode d’authentification basée sur un principal de service. Pour en savoir plus, veuillez consulter la section Comment authentifier les applications Python avec les services Azure. Vous devez vous assurer que le principal de service dispose des autorisations suffisantes pour créer des groupes de ressources et des ressources de stockage dans votre abonnement en lui attribuant un Rôle approprié dans Azure; par exemple, le rôle Contributeur sur votre abonnement.
Liens de référence pour les classes utilisées dans le code
- DefaultAzureCredential (azure.identity)
- ResourceManagementClient (azure.mgmt.resource)
- StorageManagementClient (azure.mgmt.storage)
4. Exécutez le script
Si ce n’est déjà fait, connectez-vous à Azure en utilisant l’Azure CLI :
az login
Définissez la variable d’environnement
AZURE_SUBSCRIPTION_ID
à votre ID d’abonnement. (Vous pouvez exécuter la commande az account show et obtenir votre ID d’abonnement à partir de la propriétéid
dans la sortie) :Exécutez le script :
python provision_blob.py
L’exécution du script peut prendre une ou deux minutes.
5 : Vérifiez les ressources
Ouvrez le portail Azure pour vérifier que le groupe de ressources et le compte de stockage ont été créés comme prévu. Vous devrez peut-être attendre une minute et également sélectionner Afficher les types cachés dans le groupe de ressources.
Choisissez le compte de stockage, puis sélectionnez Stockage de données>Conteneurs dans le menu de gauche pour vérifier que « bloc-container-01 » s’affiche :
Si vous souhaitez essayer d’utiliser ces ressources à partir du code de l’application, continuez avec Exemple : Utiliser le stockage Azure.
Pour obtenir un autre exemple de l’utilisation de la bibliothèque de gestion du stockage Azure, consultez l’exemple de gestion du stockage Python.
Pour référence : commandes Azure CLI équivalentes
Les commandes CLI Azure suivantes complètent les mêmes étapes de création que le script Python :
rem Provision the resource group
az group create ^
-n PythonAzureExample-Storage-rg ^
-l centralus
rem Provision the storage account
set account=pythonazurestorage%random%
echo Storage account name is %account%
az storage account create ^
-g PythonAzureExample-Storage-rg ^
-l centralus ^
-n %account% ^
--kind StorageV2 ^
--sku Standard_LRS
rem Retrieve the connection string
FOR /F %i IN ('az storage account show-connection-string -g PythonAzureExample-Storage-rg -n %account% --query connectionString') do (SET connstr=%i)
rem Provision the blob container
az storage container create ^
--name blob-container-01 ^
--account-name %account% ^
--connection-string %connstr%
6 : Nettoyez les ressources
Laissez les ressources en place si vous souhaitez suivre l’article Exemple : Utiliser le stockage Azure pour utiliser ces ressources dans le code de l’application. Sinon, exécutez la commande az group delete si vous n’avez pas besoin de conserver le groupe de ressources et les ressources de stockage créées dans cet exemple.
Les groupes de ressources n’entraînent aucun frais continu dans votre abonnement, mais les ressources, comme les comptes de stockage, dans le groupe de ressources peuvent entraîner des frais. Il est conseillé de nettoyer tout groupe que vous n’utilisez pas activement. L’argument --no-wait
permet à la commande de retourner immédiatement un résultat au lieu d’attendre que l’opération se termine.
az group delete -n PythonAzureExample-Storage-rg --no-wait
Vous pouvez également utiliser la méthode ResourceManagementClient.resource_groups.begin_delete
pour supprimer un groupe de ressources du code. Le code dans Exemple : Créer un groupe de ressources démontre l’utilisation.
Voir aussi
- Exemple : Utiliser le stockage Azure
- Exemple : Créer un groupe de ressources
- Exemple : Lister les groupes de ressources dans un abonnement
- Exemple : Créer une application web et déployer le code
- Exemple : Créer et interroger une base de données
- Exemple : Créer une machine virtuelle
- Utiliser des disques managés Azure avec des machines virtuelles
- Répondre à une courte enquête sur le SDK Azure pour Python