Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Z tego artykułu dowiesz się, jak za pomocą bibliotek zarządzania platformy Azure dla języka Python utworzyć grupę zasobów wraz z kontem usługi Azure Storage i kontenerem usługi Blob Storage.
Po aprowizacji tych zasobów zapoznaj się z sekcją Przykład: Używanie usługi Azure Storage do sprawdzenia, jak używać bibliotek klienckich platformy Azure w języku Python do przekazywania pliku do kontenera obiektów blob.
Równoważne polecenia Azure CLI dla bash i PowerShell są wymienione w dalszej części tego artykułu. Jeśli wolisz korzystać z witryny Azure Portal, zobacz Tworzenie konta usługi Azure Storage i Tworzenie kontenera obiektów blob.
1: Konfigurowanie lokalnego środowiska projektowego
Jeśli jeszcze tego nie zrobiono, skonfiguruj środowisko, w którym można uruchomić kod. Oto kilka opcji:
Skonfiguruj środowisko wirtualne języka Python przy użyciu
venvlub wybranego narzędzia. Aby rozpocząć korzystanie ze środowiska wirtualnego, pamiętaj, aby go aktywować. Aby zainstalować język Python, zobacz Instalowanie języka Python.#!/bin/bash # Create a virtual environment python -m venv .venv # Activate the virtual environment source .venv/Scripts/activate # only required for Windows (Git Bash)Użyj środowiska Conda. Aby zainstalować aplikację Conda, zobacz Instalowanie narzędzia Miniconda.
Użyj kontenera deweloperskiego w Visual Studio Code lub GitHub Codespaces.
2: Instalowanie wymaganych pakietów bibliotek platformy Azure
W konsoli utwórz plik requirements.txt zawierający listę bibliotek zarządzania używanych w tym przykładzie:
azure-mgmt-resource azure-mgmt-storage azure-identityW konsoli z aktywowanym środowiskiem wirtualnym zainstaluj wymagania:
pip install -r requirements.txt
3. Ustawianie zmiennych środowiskowych
W tym kroku ustawisz zmienne środowiskowe do użycia w kodzie w tym artykule. Kod używa os.environ metody do pobrania wartości.
#!/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
Napisz kod, aby utworzyć konto pamięci masowej i kontener obiektów blob
W tym kroku utworzysz plik w języku Python o nazwie provision_blob.py przy użyciu następującego kodu. Ten skrypt w języku Python używa bibliotek do zarządzania z zestawu Azure SDK dla języka Python do tworzenia grupy zasobów, konta usługi Azure Storage i kontenera obiektów 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}")
Uwierzytelnianie w kodzie
W dalszej części tego artykułu zalogujesz się do Azure przy użyciu Azure CLI w celu wykonania przykładowego kodu. Jeśli twoje konto ma wystarczające uprawnienia do tworzenia grup zasobów i zasobów magazynu w ramach subskrypcji Azure, skrypt zostanie uruchomiony pomyślnie bez dodatkowej konfiguracji.
Aby użyć tego kodu w środowisku produkcyjnym, należy uwierzytelnić się przy użyciu jednostki usługi i ustawić zmienne środowiskowe. Takie podejście umożliwia bezpieczny, zautomatyzowany dostęp bez konieczności polegania na logowaniu interakcyjnym. Aby uzyskać szczegółowe wskazówki, zobacz Jak uwierzytelniać aplikacje języka Python za pomocą usług platformy Azure.
Upewnij się, że jednostka usługi ma przypisaną rolę z wystarczającymi uprawnieniami do tworzenia grup zasobów i kont magazynowych. Na przykład przypisanie roli Współautor na poziomie subskrypcji zapewnia niezbędny dostęp. Aby dowiedzieć się więcej na temat przypisań ról, zobacz Kontrola dostępu oparta na rolach (RBAC) na platformie Azure.
Linki referencyjne dla klas używanych w kodzie
- DefaultAzureCredential (azure.identity)
- ResourceManagementClient (azure.mgmt.resource)
- StorageManagementClient (azure.mgmt.storage)
5. Uruchamianie skryptu
Jeśli jeszcze tego nie zrobiono, zaloguj się do Azure przy użyciu Azure CLI:
az login
Uruchom skrypt:
python provision_blob.pyWykonanie skryptu trwa minutę lub dwie.
6. Weryfikowanie zasobów
Otwórz portal Azure aby sprawdzić, czy grupa zasobów i konto magazynu zostały utworzone zgodnie z oczekiwaniami. Może być konieczne odczekenie minuty, a następnie odświeżenie widoku grupy zasobów.
Wybierz konto magazynowe, a następnie z menu po lewej stronie wybierz pozycje Magazyn danych>Kontenery, aby sprawdzić, czy utworzony kontener jest wyświetlany:
Jeśli chcesz spróbować użyć tych zasobów z poziomu kodu aplikacji, przejdź do artykułu Przykład: Korzystanie z usługi Azure Storage.
Aby zapoznać się z innym przykładem korzystania z biblioteki zarządzania usługi Azure Storage, zobacz przykład Zarządzanie usługą Python Storage.
7. Czyszczenie zasobów
Jeśli chcesz użyć tych zasobów w kodzie aplikacji, postępuj zgodnie z artykułem Example: Użyj Azure Storage. W przeciwnym razie uruchom polecenie az group delete , jeśli nie musisz przechowywać grupy zasobów i zasobów magazynu utworzonych w tym przykładzie.
Grupy zasobów nie generują żadnych bieżących opłat w ramach subskrypcji, ale zasoby, takie jak konta magazynu, w grupie zasobów mogą powodować naliczanie opłat. Dobrym rozwiązaniem jest wyczyszczenie żadnej grupy zasobów, której nie używasz aktywnie. Argument --no-wait umożliwia polecenie natychmiastowego zwrócenia zamiast oczekiwania na zakończenie operacji.
#!/bin/bash
az group delete -n $AZURE_RESOURCE_GROUP_NAME --no-wait
W celach informacyjnych: równoważne polecenia Azure CLI
Następujące polecenia interfejsu wiersza polecenia platformy Azure umożliwiają wykonanie tych samych kroków tworzenia co skrypt języka Python:
#!/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"
Zobacz także
- Przykład: korzystanie z usługi Azure Storage
- Przykład: tworzenie grupy zasobów
- Przykład: Wyświetlanie listy grup zasobów w subskrypcji
- Przykład: Utwórz aplikację internetową i wdrażaj kod
- Przykład: tworzenie bazy danych i wykonywanie względem jej zapytań
- Przykład: tworzenie maszyny wirtualnej
- Używaj zarządzanych dysków Azure z maszynami wirtualnymi
- Wykonaj krótką ankietę dotyczącą zestawu Azure SDK dla języka Python