Sdílet prostřednictvím


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 Pythonu používá knihovny pro správu Azure SDK pro Python k vytvoření skupiny prostředků, účtu služby Azure Storage a kontejneru objektů blob pomocí sady Azure SDK pro 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}")

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 předplatném Azure, skript by se měl úspěšně spustit bez další konfigurace.

Pokud chcete tento kód použít v produkčním prostředí, ověřte se pomocí instančního objektu nastavením proměnných prostředí. Tento přístup umožňuje zabezpečený a automatizovaný přístup bez nutnosti spoléhat se na interaktivní přihlášení. 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 chvíli počkat a také vybrat Zobrazit skryté typy ve skupině prostředků.

    Stránka webu Azure Portal pro novou skupinu prostředků zobrazující účet úložiště

  2. Vyberte účet úložiště a pak v nabídce vlevo vyberteKontejnery> dat a ověřte, že se zobrazí objekt blob-container-01:

    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 ponechat prostředky tak, jak jsou, a pokračovat podle článku Příklad: Použijte Azure Storage pro použití těchto prostředků v kódu aplikace. Jinak, pokud v tomto příkladu nepotřebujete zachovat skupinu prostředků a prostředky úložiště, spusťte příkaz az group delete.

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, 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
#!/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

Viz také