Příklad: Vytvoření služby Azure Storage pomocí knihoven Azure pro Python

V tomto článku se dozvíte, jak pomocí knihoven pro správu Azure pro Python vytvořit skupinu prostředků společně s účtem služby Azure Storage a kontejnerem úložiště objektů blob.

Po zřízení těchto prostředků si projděte část Příklad: Použití služby Azure Storage k nahrání souboru do kontejneru objektů blob pomocí klientských knihoven Azure v Pythonu.

Ekvivalentní příkazy Azure CLI pro Bash a PowerShell jsou uvedeny dále v tomto článku. Pokud dáváte přednost používání webu Azure Portal, přečtěte si téma Vytvoření účtu úložiště Azure a vytvoření kontejneru objektů blob.

1: Nastavení místního vývojového prostředí

Pokud jste to ještě neudělali, nastavte prostředí, ve kterém můžete kód spustit. Tady jsou některé možnosti:

  • Nakonfigurujte virtuální prostředí Pythonu pomocí venv nebo libovolného nástroje podle vašeho výběru. Pokud chcete začít používat virtuální prostředí, nezapomeňte ho aktivovat. Pokud chcete nainstalovat Python, přečtěte si téma Instalace Pythonu.

    #!/bin/bash
    # Create a virtual environment
    python -m venv .venv
    # Activate the virtual environment
    source .venv/Scripts/activate # only required for Windows (Git Bash)
    
  • Použijte prostředí Conda. Pokud chcete nainstalovat Conda, přečtěte si téma Instalace Miniconda.

  • Použijte vývojový kontejner v editoru Visual Studio Code nebo GitHub Codespaces.

2: Instalace potřebných balíčků knihovny Azure

  1. V konzole vytvořte souborrequirements.txt se seznamem knihoven pro správu použitých v tomto příkladu:

    azure-mgmt-resource
    azure-mgmt-storage
    azure-identity
    
  2. V konzole s aktivovaným virtuálním prostředím nainstalujte požadavky:

    pip install -r requirements.txt
    

3. Nastavení proměnných prostředí

V tomto kroku nastavíte proměnné prostředí pro použití v kódu v tomto článku. Kód používá metodu os.environ k načtení hodnot.

#!/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: Napište kód pro vytvoření účtu úložiště a blob kontejneru

V tomto kroku vytvoříte soubor Pythonu s názvem provision_blob.py s následujícím kódem. Tento skript v jazyce Python používá knihovny Azure SDK pro Python pro správu k vytvoření skupiny prostředků, účtu Azure Storage a kontejneru objektů blob.

import os

# Import the needed credential and management objects from the 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: Create a resource group:
# https://learn.microsoft.com/azure/developer/python/sdk/examples/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, "type": "Microsoft.Storage/storageAccounts" }
)

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("Retrieved the primary key for the storage account")

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

Ověřování v kódu

Později v tomto článku se přihlásíte k Azure pomocí Azure CLI ke spuštění ukázkového kódu. Pokud má váš účet dostatečná oprávnění k vytváření skupin prostředků a prostředků úložiště ve vašem Azure předplatném, skript se úspěšně spustí bez další konfigurace.

Chcete-li tento kód používat v produkčním prostředí, pro ověřování použijte instanční objekt služby a nastavte proměnné prostředí. Tento přístup umožňuje zabezpečený a automatizovaný přístup bez nutnosti spoléhat se na interaktivní přihlašování. Podrobné pokyny najdete v tématu Ověřování aplikací v Pythonu pomocí služeb Azure.

Zajistěte, aby byl servisnímu účtu přiřazená role s dostatečnými oprávněními pro vytváření skupin prostředků a účtů úložiště. Například přiřazení role Přispěvatel na úrovni předplatného poskytuje potřebný přístup. Další informace o přiřazeních rolí najdete v tématu Řízení přístupu na základě role (RBAC) v Azure.

5. Spusťte skript.

  1. Pokud jste to ještě neudělali, přihlaste se k Azure pomocí Azure CLI:

    az login
    

  2. Spusťte skript:

    python provision_blob.py
    

    Dokončení skriptu trvá minutu nebo dvě.

6: Ověření prostředků

  1. Otevřete Azure Portal a ověřte, že se skupina prostředků a účet úložiště vytvořily podle očekávání. Možná budete muset minutu počkat a poté aktualizovat zobrazení skupiny prostředků.

  2. Vyberte účet úložiště a v nabídce vlevo vyberteKontejnery> dat, abyste ověřili, že se kontejner, který jste vytvořili, zobrazí:

    Stránka portálu Azure pro účet úložiště zobrazující blob kontejnery

  3. Pokud se chcete pokusit použít tyto prostředky z kódu aplikace, pokračujte v příkladu: Použijte Azure Storage.

Další příklad použití knihovny pro správu služby Azure Storage najdete v ukázce Správa úložiště Pythonu.

7: Vyčištění prostředků

Pokud chcete tyto prostředky použít v kódu aplikace, postupujte podle článku Example: Použijte Azure Storage. V opačném případě spusťte příkaz az group delete , pokud nepotřebujete zachovat skupinu prostředků a prostředky úložiště, které jste vytvořili v tomto příkladu.

Ve vašem předplatném se za skupiny prostředků neúčtují žádné průběžné poplatky, ale za prostředky, jako jsou účty úložiště, se můžou účtovat poplatky. Je vhodné vyčistit jakoukoli skupinu prostředků, kterou aktivně nepoužíváte. Argument --no-wait umožňuje, aby se příkaz vrátil okamžitě místo čekání na dokončení operace.

#!/bin/bash
az group delete -n $AZURE_RESOURCE_GROUP_NAME --no-wait

Referenční informace: Ekvivalentní příkazy Azure CLI

Následující příkazy Azure CLI dokončí stejné kroky vytvoření jako skript Pythonu:

#!/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 \
    --resource-group "$AZURE_RESOURCE_GROUP_NAME" \
    --location "$LOCATION" \
    --name "$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 \
    --resource-group "$AZURE_RESOURCE_GROUP_NAME" \
    --name "$STORAGE_ACCOUNT_NAME" \
    --query connectionString \
    --output tsv)

# Provision the blob container
az storage container create \
    --name "$CONTAINER_NAME" \
    --account-name "$STORAGE_ACCOUNT_NAME" \
    --connection-string "$CONNECTION_STRING"

Viz také