Delen via


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:

2: De benodigde Azure-bibliotheekpakketten installeren

  1. Maak een requirements.txt-bestand met de beheerbibliotheken die in dit voorbeeld worden gebruikt:

    azure-mgmt-resource
    azure-mgmt-storage
    azure-identity
    
  2. 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.

4. Voer het script uit

  1. Als u dat nog niet hebt gedaan, meldt u zich aan bij Azure met behulp van de Azure CLI:

    az login
    
  2. 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 de id eigenschap in de uitvoer):

    set AZURE_SUBSCRIPTION_ID=00000000-0000-0000-0000-000000000000
    
  3. Voer het script uit:

    python provision_blob.py
    

Het uitvoeren van het script duurt een paar minuten.

5: De resources controleren

  1. 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.

    Azure Portal-pagina voor de nieuwe resourcegroep, met het opslagaccount

  2. Selecteer het opslagaccount en selecteer vervolgens Data Storage>Containers in het linkermenu om te controleren of de blob-container-01 wordt weergegeven:

    Azure Portal-pagina voor het opslagaccount met de blobcontainer

  3. 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