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 ve skriptu Pythonu vytvořit skupinu prostředků, která obsahuje účet služby Azure Storage a kontejner úložiště objektů blob.
Po vytvoření prostředků si přečtěte příklad : Použití klientských knihoven Azure v kódu aplikace Pythonu k nahrání souboru do kontejneru úložiště objektů blob pomocí služby Azure Storage .
Všechny příkazy v tomto článku fungují stejně v prostředích Bash pro Linux/macOS a Windows, pokud není uvedeno.
Ekvivalentní příkazy Azure CLI 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. Zde je uvedeno několik možností:
Nakonfigurujte virtuální prostředí Pythonu pomocí
venv
libovolného nástroje nebo nástroje. Virtuální prostředí můžete vytvořit místně nebo v Azure Cloud Shellu a spustit ho tam. Nezapomeňte aktivovat virtuální prostředí, abyste ho mohli začít používat.Použijte prostředí Conda.
Použijte vývojový kontejner v editoru Visual Studio Code nebo GitHub Codespaces.
2: Instalace potřebných balíčků knihovny Azure
Vytvořte soubor requirements.txt se seznamem knihoven pro správu použitých v tomto příkladu:
azure-mgmt-resource azure-mgmt-storage azure-identity
V terminálu s aktivovaným virtuálním prostředím nainstalujte požadavky:
pip install -r requirements.txt
3: Napsání kódu pro vytvoření prostředků úložiště
Vytvořte soubor Pythonu s názvem provision_blob.py s následujícím kódem. Komentáře vysvětlují podrobnosti. Skript načte ID vašeho předplatného z proměnné prostředí. AZURE_SUBSCRIPTION_ID
Tuto proměnnou nastavíte v pozdějším kroku. Název skupiny prostředků, umístění, název účtu úložiště a název kontejneru jsou definovány jako konstanty v kódu.
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}")
Ověřování v kódu
Později v tomto článku se přihlásíte k Azure pomocí Azure CLI a spustíte vzorový kód. Pokud má váš účet oprávnění k vytváření skupin prostředků a prostředků úložiště ve vašem předplatném Azure, kód se úspěšně spustí.
Pokud chcete tento kód použít v produkčním skriptu, můžete nastavit proměnné prostředí tak, aby pro ověřování používaly metodu založenou na instančním objektu. Další informace najdete v tématu Ověřování aplikací v Pythonu pomocí služeb Azure. Musíte zajistit, aby instanční objekt má dostatečná oprávnění k vytváření skupin prostředků a prostředků úložiště ve vašem předplatném tím, že mu v Azure přiřadíte odpovídající roli, například roli Přispěvatel ve vašem předplatném.
Referenční odkazy pro třídy použité v kódu
- DefaultAzureCredential (azure.identity)
- ResourceManagementClient (azure.mgmt.resource)
- StorageManagementClient (azure.mgmt.storage)
4. Spusťte skript.
Pokud jste to ještě neudělali, přihlaste se k Azure pomocí Azure CLI:
az login
Nastavte proměnnou
AZURE_SUBSCRIPTION_ID
prostředí na ID vašeho předplatného. (Příkaz az account show můžete spustit a získat ID předplatnéhoid
z vlastnosti ve výstupu):Spusťte skript:
python provision_blob.py
Dokončení skriptu bude trvat minutu nebo dvě.
5: Ověření prostředků
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ů.
Vyberte účet úložiště a pak v nabídce vlevo vyberte Kontejnery úložiště>dat a ověřte, že se zobrazí objekt blob-container-01:
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 Azure Storage najdete v ukázce Správa úložiště Pythonu.
Referenční informace: Ekvivalentní příkazy Azure CLI
Následující příkazy Azure CLI dokončí stejné kroky vytvoření jako skript Pythonu:
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: Vyčištění prostředků
Pokud chcete postupovat podle článku Příklad: Použijte Azure Storage k použití těchto prostředků v kódu aplikace. Pokud v tomto příkladu nepotřebujete zachovat skupinu prostředků a prostředky úložiště vytvořené v tomto příkladu , 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.
az group delete -n PythonAzureExample-Storage-rg --no-wait
Metodu ResourceManagementClient.resource_groups.begin_delete
můžete použít také k odstranění skupiny prostředků z kódu. Kód v příkladu: Vytvoření skupiny prostředků ukazuje použití.
Viz také
- Příklad: Použití Služby Azure Storage
- Příklad: Vytvoření skupiny prostředků
- Příklad: Výpis skupin prostředků v předplatném
- Příklad: Vytvoření webové aplikace a nasazení kódu
- Příklad: Vytvoření a dotazování databáze
- Příklad: Vytvoření virtuálního počítače
- Použití Azure Spravované disky s virtuálními počítači
- Dokončení krátkého průzkumu o sadě Azure SDK pro Python