Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel leert u hoe u de Azure-beheerbibliotheken voor Python gebruikt om een resourcegroep te maken, samen met een Azure Storage-account en een Blob Storage-container.
Nadat u deze resources hebt ingericht, raadpleegt u het gedeelte Voorbeeld: Azure Storage gebruiken om te zien hoe u de Azure-clientbibliotheken in Python gebruikt om een bestand te uploaden naar de Blob-container.
De equivalente Azure CLI-opdrachten voor bash en PowerShell 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. Als u de virtuele omgeving wilt gaan gebruiken, moet u deze activeren. Om Python te installeren, raadpleeg Python installeren.#!/bin/bash # Create a virtual environment python -m venv .venv # Activate the virtual environment source .venv/Scripts/activate # only required for Windows (Git Bash)
Gebruik een Conda-omgeving. Zie Miniconda installeren om Conda te installeren.
Gebruik een Dev Container in Visual Studio Code of GitHub Codespaces.
2: De benodigde Azure-bibliotheekpakketten installeren
Maak in uw console 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 console waarop de virtuele omgeving is geactiveerd:
pip install -r requirements.txt
3. Omgevingsvariabelen instellen
In deze stap stelt u omgevingsvariabelen in voor gebruik in de code in dit artikel. De code gebruikt de os.environ
methode om de waarden op te halen.
#!/bin/bash
export AZURE_RESOURCE_GROUP_NAME=<ResourceGroupName> # Change to your preferred resource group name
export LOCATION=<Location> # Change to your preferred region
export AZURE_SUBSCRIPTION_ID=$(az account show --query id --output tsv)
export STORAGE_ACCOUNT_NAME=<StorageAccountName> # Change to your preferred storage account name
export CONTAINER_NAME=<ContainerName> # Change to your preferred container name
4: Code schrijven om een opslagaccount en blobcontainer te maken
In deze stap maakt u een Python-bestand met de naam provision_blob.py met de volgende code. Dit Python-script maakt gebruik van de Azure SDK voor Python-beheerbibliotheken om een resourcegroep, Een Azure Storage-account en een Blob-container te maken met behulp van de Azure SDK voor Python.
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
from azure.mgmt.storage.models import BlobContainer
# Acquire a credential object.
credential = DefaultAzureCredential()
# Retrieve subscription ID from environment variable.
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
# Retrieve resource group name and location from environment variables
RESOURCE_GROUP_NAME = os.environ["AZURE_RESOURCE_GROUP_NAME"]
LOCATION = os.environ["LOCATION"]
# Step 1: Provision the resource group.
resource_client = ResourceManagementClient(credential, subscription_id)
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 = os.environ["STORAGE_ACCOUNT_NAME"]
# 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 = os.environ["CONTAINER_NAME"]
container = storage_client.blob_containers.create(RESOURCE_GROUP_NAME, STORAGE_ACCOUNT_NAME, CONTAINER_NAME, BlobContainer())
print(f"Provisioned blob container {container.name}")
Verificatie in de code
Verderop in dit artikel meldt u zich aan bij Azure met behulp van de Azure CLI om de voorbeeldcode uit te voeren. Als uw account voldoende machtigingen heeft om resourcegroepen en opslagresources in uw Azure-abonnement te maken, moet het script zonder aanvullende configuratie worden uitgevoerd.
Als u deze code in een productieomgeving wilt gebruiken, moet u verifiëren met behulp van een service-principal door omgevingsvariabelen in te stellen. Met deze methode kunt u beveiligde, geautomatiseerde toegang krijgen zonder afhankelijk te zijn van interactieve aanmelding. Zie Python-apps verifiëren met Azure-services voor gedetailleerde richtlijnen.
Zorg ervoor dat aan de service-principal een rol is toegewezen met voldoende machtigingen voor het maken van resourcegroepen en opslagaccounts. Als u bijvoorbeeld de rol Inzender op abonnementsniveau toewijst, krijgt u de benodigde toegang. Zie op rollen gebaseerd toegangsbeheer (RBAC) in Azure voor meer informatie over roltoewijzingen.
Referentiekoppelingen voor klassen die in de code worden gebruikt
- DefaultAzureCredential (azure.identity)
- ResourceManagementClient (azure.mgmt.resource)
- StorageManagementClient (azure.mgmt.storage)
5. 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
Voer het script uit:
python provision_blob.py
Het duurt een paar minuten voordat het script is voltooid.
6: 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 ander voorbeeld van het gebruik van de Azure Storage-beheerbibliotheek.
7: 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 bronnen, zoals opslagaccounts, in de resourcegroep kunnen mogelijk kosten veroorzaken. Het is een goede gewoonte om een groep op te schonen die u niet actief gebruikt. Het --no-wait
argument zorgt ervoor dat de opdracht onmiddellijk terugkeert in plaats van te wachten tot de bewerking is voltooid.
#!/bin/bash
az group delete -n $AZURE_RESOURCE_GROUP_NAME --no-wait
Ter referentie: equivalente Azure CLI-opdrachten
Met de volgende Azure CLI-opdrachten worden dezelfde stappen voor het maken voltooid als het Python-script:
#!/bin/bash
#!/bin/bash
# Set variables
export LOCATION=<Location> # Change to your preferred region
export AZURE_RESOURCE_GROUP_NAME=<ResourceGroupName> # Change to your preferred resource group name
export STORAGE_ACCOUNT_NAME=<StorageAccountName> # Change to your preferred storage account name
export CONTAINER_NAME=<ContainerName> # Change to your preferred container name
# Provision the resource group
echo "Creating resource group: $AZURE_RESOURCE_GROUP_NAME"
az group create \
--location "$LOCATION" \
--name "$AZURE_RESOURCE_GROUP_NAME"
# Provision the storage account
az storage account create -g $AZURE_RESOURCE_GROUP_NAME -l $LOCATION -n $STORAGE ACCOUNT_NAME --kind StorageV2 --sku Standard_LRS
echo Storage account name is $STORAGE_ACCOUNT_NAME
# Retrieve the connection string
CONNECTION_STRING=$(az storage account show-connection-string -g $AZURE_RESOURCE_GROUP_NAME -n $STORAGE_ACCOUNT_NAME --query connectionString)
# Provision the blob container
az storage container create --name $CONTAINER_NAME --account-name $STORAGE_ACCOUNT_NAME --connection-string $CONNECTION_STRING
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