Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье вы узнаете, как использовать библиотеки управления Azure для Python для создания группы ресурсов, а также учетной записи хранения Azure и контейнера хранилища BLOB-объектов.
После подготовки этих ресурсов см. раздел "Пример. Использование службы хранилища Azure для просмотра использования клиентских библиотек Azure в Python для отправки файла в контейнер BLOB-объектов".
Эквивалентные команды Azure CLI для bash и PowerShell перечислены далее в этой статье. Если вы предпочитаете использовать портал Azure, см. статью "Создание учетной записи хранения Azure " и создание контейнера BLOB-объектов.
1. Настройка локальной среды разработки
Если вы еще не сделали этого, настройте среду, в которой можно запустить код. Ниже приведено несколько вариантов:
Настройте виртуальную среду Python с помощью
venvили выбранного средства. Чтобы начать использовать виртуальную среду, обязательно активируйте ее. Сведения об установке Python см. в разделе "Установка 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)Используйте конда-среду. Сведения об установке Conda см. в разделе "Установка Miniconda".
Используйте контейнер разработки в Visual Studio Code или GitHub Codespaces.
2. Установка необходимых пакетов библиотек Azure
В консоли создайте файлrequirements.txt , в который перечислены библиотеки управления, используемые в этом примере:
azure-mgmt-resource azure-mgmt-storage azure-identityВ консоли с активированной виртуальной средой установите требования:
pip install -r requirements.txt
3. Установите переменные среды
На этом шаге вы устанавливаете переменные среды для использования в коде в этой статье. Код использует os.environ метод для получения значений.
#!/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. Напишите код, чтобы создать учетную запись хранения и контейнер блобов
На этом шаге вы создадите файл Python с именем provision_blob.py со следующим кодом. Этот скрипт Python использует библиотеки управления Azure SDK для Python для создания группы ресурсов, учетной записи служба хранилища Azure и контейнера 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}")
Аутентификация в коде
Далее в этой статье вы выполните вход в Azure с помощью Azure CLI для выполнения примера кода. Если у вашей учетной записи есть достаточные разрешения для создания групп ресурсов и ресурсов хранилища в подписке Azure, скрипт успешно выполняется без дополнительной настройки.
Чтобы использовать этот код в рабочей среде, выполните проверку подлинности с помощью субъекта-службы и задайте переменные среды. Этот подход обеспечивает безопасный, автоматизированный доступ без использования интерактивного входа. Подробные инструкции см. в статье "Проверка подлинности приложений Python с помощью служб Azure".
Убедитесь, что субъект-служба назначена роль с достаточными разрешениями для создания групп ресурсов и учетных записей хранения. Например, назначение роли участника на уровне подписки обеспечивает необходимый доступ. Дополнительные сведения о назначениях ролей см. в статье "Управление доступом на основе ролей" (RBAC) в Azure.
Ссылки на классы, используемые в коде
- DefaultAzureCredential (azure.identity)
- ResourceManagementClient (azure.mgmt.resource)
- StorageManagementClient (azure.mgmt.storage)
5. Запуск скрипта
Если вы еще не сделали этого, войдите в Azure с помощью Azure CLI:
az login
Запустите скрипт:
python provision_blob.pyВыполнение скрипта занимает минуту или два.
6. Проверка ресурсов
Откройте портал Azure , чтобы убедиться, что группа ресурсов и учетная запись хранения были созданы должным образом. Возможно, потребуется подождать минуту, а затем обновить представление группы ресурсов.
Выберите учетную запись хранения и выберитеконтейнеры> данных в меню слева, чтобы убедиться, что созданный контейнер отображается:
Если вы хотите использовать эти ресурсы из кода приложения, перейдите к примеру: использование службы хранилища Azure.
Другой пример использования библиотеки управления службами хранилища Azure см. в примере службы "Управление хранилищем Python".
7. Очистка ресурсов
Если вы хотите использовать эти ресурсы в коде приложения, следуйте статье Example: используйте служба хранилища Azure. В противном случае выполните команду az group delete, если вам не нужно сохранять группу ресурсов и ресурсы хранилища, созданные в этом примере.
Группы ресурсов не несут никаких текущих расходов в вашей подписке, но ресурсы, такие как учетные записи хранения, в группе ресурсов могут подлежать оплате. Рекомендуется очистить любую группу ресурсов, которую вы не используете. Аргумент --no-wait позволяет команде немедленно вернуться, а не ожидать завершения операции.
#!/bin/bash
az group delete -n $AZURE_RESOURCE_GROUP_NAME --no-wait
Для справки: эквивалентные команды Azure CLI
Следующие команды Azure CLI выполняют те же действия по созданию, что и скрипт 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"
См. также
- Пример. Использование службы хранилища Azure
- Пример. Создание группы ресурсов
- Пример. Перечисление групп ресурсов в подписке
- Пример. Создание веб-приложения и развертывание кода
- Пример. Создание и запрос базы данных
- Пример. Создание виртуальной машины
- Использование управляемых дисков Azure с виртуальными машинами
- Пройдите краткий опрос о пакете SDK Azure для Python