Voorbeeld: Azure Storage maken met behulp van de Azure-bibliotheken voor Python
In dit artikel leert u hoe u de Azure-beheerbibliotheken in een Python-script gebruikt om een resourcegroep te maken die een Azure Storage-account en een Blob Storage-container bevat.
Nadat u de resources hebt gemaakt, raadpleegt u Voorbeeld: Azure Storage gebruiken om de Azure-clientbibliotheken in Python-toepassingscode te gebruiken om een bestand te uploaden naar de Blob Storage-container.
Alle opdrachten in dit artikel werken hetzelfde in Linux-/macOS-bash- en Windows-opdrachtshells, tenzij vermeld.
De equivalente Azure CLI-opdrachten worden verderop in dit artikel vermeld. Als u liever Azure Portal gebruikt, raadpleegt u Een Azure-opslagaccount maken en een blobcontainer maken.
1: Uw lokale ontwikkelomgeving instellen
Als u dat nog niet hebt gedaan, stelt u een omgeving in waar u de code kunt uitvoeren. Hieronder volgen een aantal opties:
Configureer een virtuele Python-omgeving met behulp van
venv
of uw hulpprogramma naar keuze. U kunt de virtuele omgeving lokaal of in Azure Cloud Shell maken en daar de code uitvoeren. Zorg ervoor dat u de virtuele omgeving activeert om deze te gaan gebruiken.Gebruik een Conda-omgeving.
Gebruik een Dev-container in Visual Studio Code of GitHub Codespaces.
2: De benodigde Azure-bibliotheekpakketten installeren
Maak een requirements.txt-bestand met de beheerbibliotheken die in dit voorbeeld worden gebruikt:
azure-mgmt-resource azure-mgmt-storage azure-identity
Installeer de vereisten in de terminal waarop de virtuele omgeving is geactiveerd:
pip install -r requirements.txt
3: Code schrijven om opslagbronnen te maken
Maak een Python-bestand met de naam provision_blob.py met de volgende code. In de opmerkingen worden de details uitgelegd. Het script leest uw abonnements-id uit een omgevingsvariabele. AZURE_SUBSCRIPTION_ID
U stelt deze variabele in een latere stap in. De naam van de resourcegroep, de locatie, de naam van het opslagaccount en de containernaam worden allemaal gedefinieerd als constanten in de 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}")
Verificatie in de code
Verderop in dit artikel meldt u zich aan bij Azure met de Azure CLI om de voorbeeldcode uit te voeren. Als uw account machtigingen heeft voor het maken van resourcegroepen en opslagresources in uw Azure-abonnement, wordt de code uitgevoerd.
Als u dergelijke code in een productiescript wilt gebruiken, kunt u omgevingsvariabelen instellen om een op een service-principal gebaseerde methode voor verificatie te gebruiken. Zie Python-apps verifiëren met Azure-services voor meer informatie. U moet ervoor zorgen dat de service-principal voldoende machtigingen heeft om resourcegroepen en opslagresources in uw abonnement te maken door deze toe te wijzen aan een juiste rol in Azure, bijvoorbeeld de rol Inzender voor uw abonnement.
Referentiekoppelingen voor klassen die in de code worden gebruikt
- DefaultAzureCredential (azure.identity)
- ResourceManagementClient (azure.mgmt.resource)
- StorageManagementClient (azure.mgmt.storage)
4. Voer het script uit
Als u dat nog niet hebt gedaan, meldt u zich aan bij Azure met behulp van de Azure CLI:
az login
Stel de
AZURE_SUBSCRIPTION_ID
omgevingsvariabele in op uw abonnements-id. (U kunt de opdracht az account show uitvoeren en uw abonnements-id ophalen uit deid
eigenschap in de uitvoer):Voer het script uit:
python provision_blob.py
Het uitvoeren van het script duurt een paar minuten.
5: De resources controleren
Open Azure Portal om te controleren of de resourcegroep en het opslagaccount zijn gemaakt zoals verwacht. Mogelijk moet u even wachten en ook verborgen typen weergeven selecteren in de resourcegroep.
Selecteer het opslagaccount en selecteer vervolgens Data Storage>Containers in het linkermenu om te controleren of de blob-container-01 wordt weergegeven:
Als u deze resources uit toepassingscode wilt gebruiken, gaat u verder met voorbeeld: Azure Storage gebruiken.
Zie het voorbeeld Python Storage beheren voor een extra voorbeeld van het gebruik van de Azure Storage-beheerbibliotheek.
Ter referentie: equivalente Azure CLI-opdrachten
Met de volgende Azure CLI-opdrachten worden dezelfde stappen voor het maken voltooid als het Python-script:
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: Resources opschonen
Laat de resources staan als u het artikel Voorbeeld wilt volgen: Gebruik Azure Storage om deze resources in app-code te gebruiken. Voer anders de opdracht az group delete uit als u de resourcegroep en opslagresources die in dit voorbeeld zijn gemaakt, niet hoeft te behouden.
Voor resourcegroepen worden geen lopende kosten in uw abonnement in rekening gebracht, maar voor resources, zoals opslagaccounts, in de resourcegroep worden mogelijk kosten in rekening gebracht. Het is een goede gewoonte om een groep op te schonen die u niet actief gebruikt. Met --no-wait
het argument kan de opdracht onmiddellijk worden geretourneerd in plaats van te wachten tot de bewerking is voltooid.
az group delete -n PythonAzureExample-Storage-rg --no-wait
U kunt ook de ResourceManagementClient.resource_groups.begin_delete
methode gebruiken om een resourcegroep uit code te verwijderen. De code in voorbeeld: Een resourcegroep maken laat het gebruik zien.
Zie ook
- Voorbeeld: Azure Storage gebruiken
- Voorbeeld: Een resourcegroep maken
- Voorbeeld: Resourcegroepen weergeven in een abonnement
- Voorbeeld: Een web-app maken en code implementeren
- Voorbeeld: Een database maken en er query's op uitvoeren
- Voorbeeld: Een virtuele machine maken
- Azure Managed Disks gebruiken met virtuele machines
- Een korte enquête over de Azure SDK voor Python voltooien