Share via


Beispiel: Erstellen von Azure Storage mithilfe der Azure-Bibliotheken für Python

In diesem Artikel erfahren Sie, wie Sie die Azure-Verwaltungsbibliotheken in einem Python-Skript verwenden, um eine Ressourcengruppe zu erstellen, die ein Azure Storage-Konto und einen BLOB-Speichercontainer enthält.

Nach dem Erstellen der Ressourcen siehe Beispiel: Verwenden von Azure Storage zum Verwenden der Azure-Clientbibliotheken im Python-Anwendungscode zum Hochladen einer Datei in den Blob-Speichercontainer.

Alle Befehle in diesem Artikel funktionieren in Linux-/macOS-Bash- und Windows-Befehlsshells identisch, sofern nicht anders angegeben.

Die entsprechenden Azure CLI-Befehle werden weiter unten in diesem Artikel aufgeführt. Wenn Sie die Azure-Portal verwenden möchten, lesen Sie "Erstellen eines Azure-Speicherkontos" und "Erstellen eines BLOB-Containers".

1: Einrichten Ihrer lokalen Entwicklungsumgebung

Falls noch nicht geschehen, richten Sie eine Umgebung ein, in der Sie den Code ausführen können. Hier einige Optionen:

2: Installieren der erforderlichen Azure-Bibliothekspakete

  1. Erstellen Sie eine Datei requirements.txt, in der die in diesem Beispiel verwendeten Verwaltungsbibliotheken aufgeführt sind:

    azure-mgmt-resource
    azure-mgmt-storage
    azure-identity
    
  2. Installieren Sie in Ihrem Terminal bei aktivierter virtueller Umgebung die Voraussetzungen:

    pip install -r requirements.txt
    

3: Schreiben von Code zum Erstellen von Speicherressourcen

Erstellen Sie eine Python-Datei mit dem Namen provision_blob.py und dem folgenden Code. Die Details werden in den Kommentaren erläutert: Das Skript liest Ihre Abonnement-ID aus einer Umgebungsvariablen. AZURE_SUBSCRIPTION_ID Sie legen diese Variable in einem späteren Schritt fest. Der Name der Ressourcengruppe, der Speicherort, der Name des Speicherkontos und der Containername sind alle als Konstanten im Code definiert.

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}")

Authentifizierung im Code

Später in diesem Artikel melden Sie sich mit der Azure CLI bei Azure an, um den Beispielcode auszuführen. Wenn Ihr Konto über Berechtigungen zum Erstellen von Ressourcengruppen und Speicherressourcen in Ihrem Azure-Abonnement verfügt, wird der Code erfolgreich ausgeführt.

Um diesen Code in einem Produktionsskript zu verwenden, können Sie Umgebungsvariablen so festlegen, dass eine dienstprinzipalbasierte Methode für die Authentifizierung verwendet wird. Weitere Informationen finden Sie unter Authentifizieren von Python-Apps mit Azure-Diensten. Sie müssen sicherstellen, dass der Dienstprinzipal über ausreichende Berechtigungen zum Erstellen von Ressourcengruppen und Speicherressourcen in Ihrem Abonnement verfügt, indem Sie ihm eine entsprechende Rolle in Azure zuweisen, z. B. die Rolle "Mitwirkender " in Ihrem Abonnement.

4. Ausführen des Skripts

  1. Falls noch nicht geschehen, melden Sie sich mit der Azure CLI bei Azure an:

    az login
    
  2. Legen Sie die AZURE_SUBSCRIPTION_ID Umgebungsvariable auf Ihre Abonnement-ID fest. (Sie können den Befehl "az account show" ausführen und Ihre Abonnement-ID aus der Eigenschaft in der id Ausgabe abrufen):

    set AZURE_SUBSCRIPTION_ID=00000000-0000-0000-0000-000000000000
    
  3. Ausführen des Skripts:

    python provision_blob.py
    

Es kann ein oder zwei Minuten dauern, bis das Skript abgeschlossen ist.

5: Überprüfen der Ressourcen

  1. Öffnen Sie die Azure-Portal, um zu überprüfen, ob die Ressourcengruppe und das Speicherkonto wie erwartet erstellt wurden. Möglicherweise müssen Sie eine Minute warten und auch ausgeblendete Typen in der Ressourcengruppe anzeigen auswählen.

    Azure portal page for the new resource group, showing the storage account

  2. Wählen Sie das Speicherkonto und dann im Menü auf der linken Seite die Option Datenspeicher>Container aus, um zu überprüfen, ob „blob-container-01“ angezeigt wird:

    Azure portal page for the storage account showing the blob container

  3. Wenn Sie versuchen möchten, diese Ressourcen aus Dem Anwendungscode zu verwenden, fahren Sie mit Beispiel fort: Verwenden Sie Azure Storage.

Ein weiteres Beispiel mit der Azure Storage-Verwaltungsbibliothek finden Sie unter Erste Schritte mit der Azure Storage-Verwaltung in Python.

Zur Referenz: äquivalente Azure CLI-Befehle

Die folgenden Azure CLI-Befehle führen dieselben Erstellungsschritte wie das Python-Skript aus:

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: Ressourcen bereinigen

Behalten Sie die Ressourcen bei, wenn Sie dem Artikel "Beispiel" folgen möchten: Verwenden Sie Azure Storage , um diese Ressourcen im App-Code zu verwenden. Führen Sie andernfalls den Befehl "az group delete " aus, wenn Sie die in diesem Beispiel erstellte Ressourcengruppe und Speicherressourcen nicht beibehalten müssen.

Ressourcengruppen verursachen keine laufenden Gebühren in Ihrem Abonnement, aber Ressourcen, z. B. Speicherkonten, in der Ressourcengruppe können Gebühren anfallen. Es empfiehlt sich, jede Gruppe zu sauber, die Sie nicht aktiv verwenden. Das Argument --no-wait ermöglicht die direkte Rückgabe des Befehls, und es muss nicht auf den Abschluss des Vorgangs gewartet werden.

az group delete -n PythonAzureExample-Storage-rg  --no-wait

Sie können auch die ResourceManagementClient.resource_groups.begin_delete-Methode verwenden, um eine Ressourcengruppe aus dem Code zu löschen. Der Code im Beispiel: Erstellen einer Ressourcengruppe veranschaulicht die Verwendung.

Weitere Informationen