Поделиться через


клиентская библиотека Конфигурация приложений Azure для Python версии 1.5.0

Конфигурация приложений Azure — это управляемая служба, которая обеспечивает простую и безопасную централизацию настройки приложений для разработчиков.

Как правило, современные программы (особенно выполняемые в облаке) состоят из множества распределенных компонентов. Распространение параметров конфигурации между этими компонентами может привести к неполадкам во время развертывания приложения, которые будет трудно устранить. Используйте Конфигурация приложений для безопасного хранения всех параметров приложения в одном месте.

Использование клиентской библиотеки для Конфигурация приложений для создания параметров конфигурации приложения и управления ими.

Исходный код | Пакет (Pypi) | Пакет (Conda) | Справочная документация по | APIДокументация по продукту

Заявление об отказе

Поддержка пакетов Python для Пакета Sdk Azure для Python 2.7 закончилась 1 января 2022 г. Дополнительные сведения и вопросы см. в https://github.com/Azure/azure-sdk-for-python/issues/20691 статье Python 3.7 или более поздней версии, необходимой для использования этого пакета. Дополнительные сведения см. в статье Политика поддержки версий Пакета SDK Azure для Python.

Начало работы

Установка пакета

Установите клиентская библиотека Конфигурация приложений Azure для Python с помощью pip:

pip install azure-appconfiguration

Предварительные требования

Чтобы создать хранилище конфигураций, можно использовать портал Azure или Azure CLI.

После этого создайте хранилище конфигураций:

az appconfig create --name <config-store-name> --resource-group <resource-group-name> --location eastus

Аутентификация клиента

Чтобы взаимодействовать со службой Конфигурация приложений, необходимо создать экземпляр класса AzureAppConfigurationClient. Чтобы сделать это возможным, можно использовать строка подключения хранилища конфигураций или маркер AAD.

Использование строки подключения

Получение учетных данных

Используйте приведенный ниже фрагмент Azure CLI, чтобы получить строка подключения из хранилища конфигураций.

az appconfig credential list --name <config-store-name>

Кроме того, можно получить строка подключения на портале Azure.

Создание клиента

Получив значение строка подключения, можно создать AzureAppConfigurationClient:

import os
from azure.appconfiguration import AzureAppConfigurationClient

CONNECTION_STRING = os.environ["APPCONFIGURATION_CONNECTION_STRING"]

# Create app config client
client = AzureAppConfigurationClient.from_connection_string(CONNECTION_STRING)

Использование маркера AAD

Здесь демонстрируется использование DefaultAzureCredential для проверки подлинности в качестве субъекта-службы. Однако AzureAppConfigurationClient принимает любые учетные данные azure-identity . Дополнительные сведения о других учетных данных см. в документации по azure-identity .

Создание субъекта-службы (необязательно)

В этом фрагменте кода Azure CLI показано, как создать субъект-службу. Прежде чем использовать его, замените "your-application-name" соответствующим именем для субъекта-службы.

Создайте субъект-службу:

az ad sp create-for-rbac --name http://my-application --skip-assignment

Выходные данные:

{
    "appId": "generated app id",
    "displayName": "my-application",
    "name": "http://my-application",
    "password": "random password",
    "tenant": "tenant id"
}

Используйте выходные данные, чтобы задать AZURE_CLIENT_ID ("appId" выше), AZURE_CLIENT_SECRET ("пароль" выше) и AZURE_TENANT_ID ("tenant" выше) переменных среды. В следующем примере показано, как это сделать в Bash:

export AZURE_CLIENT_ID="generated app id"
export AZURE_CLIENT_SECRET="random password"
export AZURE_TENANT_ID="tenant id"

Назначьте субъекту-службе одну из применимых ролей Конфигурация приложений.

Создание клиента

После настройки AZURE_CLIENT_ID, AZURE_CLIENT_SECRET и AZURE_TENANT_ID переменных среды DefaultAzureCredential сможет пройти проверку подлинности AzureAppConfigurationClient.

Для создания клиента также требуется URL-адрес хранилища конфигураций, который можно получить из Azure CLI или портала Azure. На портале Azure URL-адрес можно найти в списке "Конечная точка" службы.

from azure.identity import DefaultAzureCredential
from azure.appconfiguration import AzureAppConfigurationClient

credential = DefaultAzureCredential()

client = AzureAppConfigurationClient(base_url="your_endpoint_url", credential=credential)

Основные понятия

Параметр конфигурации

Параметр конфигурации является основным ресурсом в хранилище конфигураций. В простейшей форме это ключ и значение. Однако существуют дополнительные свойства, такие как изменяемый тип контента и поля тегов, которые позволяют интерпретировать или связывать значение различными способами.

Свойство Label параметра конфигурации позволяет разделить параметры конфигурации на разные измерения. Эти измерения определяются пользователем и могут принимать любую форму. Некоторые распространенные примеры измерений, используемых для метки, включают регионы, семантические версии или среды. Многие приложения имеют обязательный набор ключей конфигурации, которые имеют различные значения, так как приложение существует в разных измерениях.

Например, MaxRequests может иметь значение 100 в "NorthAmerica" и 200 в "WestEurope". Создав параметр конфигурации с именем MaxRequests с меткой "NorthAmerica" и другим ( только с другим значением) в метке "WestEurope", приложение может легко получить параметры конфигурации при выполнении в этих двух измерениях.

Свойства параметра конфигурации:

key : str
label : str
content_type : str
value : str
last_modified : str
read_only : bool
tags : dict
etag : str

Снимок

Конфигурация приложений Azure позволяет пользователям создавать snapshot на определенный момент времени хранилища конфигураций, предоставляя им возможность обрабатывать параметры как единую согласованную версию. Эта функция позволяет приложениям сохранять согласованное представление конфигурации, гарантируя отсутствие несоответствий версий с отдельными параметрами из-за чтения по мере внесения обновлений. Моментальные снимки являются неизменяемыми, что гарантирует, что конфигурация может быть уверенно отката к последней известной конфигурации в случае возникновения проблемы.

Примеры

В следующих разделах представлено несколько фрагментов кода, охватывающих некоторые из наиболее распространенных задач службы конфигурации, в том числе:

Создание параметра конфигурации

Создайте параметр конфигурации, который будет храниться в хранилище конфигураций. Существует два способа хранения параметра конфигурации:

  • add_configuration_setting создает параметр, только если он еще не существует в хранилище.
config_setting = ConfigurationSetting(
    key="MyKey", label="MyLabel", value="my value", content_type="my content type", tags={"my tag": "my tag value"}
)
added_config_setting = client.add_configuration_setting(config_setting)
  • set_configuration_setting создает параметр, если он не существует, или переопределяет существующий параметр.
added_config_setting.value = "new value"
added_config_setting.content_type = "new content type"
updated_config_setting = client.set_configuration_setting(added_config_setting)

Получение параметра конфигурации

Получите ранее сохраненный параметр конфигурации.

fetched_config_setting = client.get_configuration_setting(key="MyKey", label="MyLabel")

Удаление параметра конфигурации

Удалите существующий параметр конфигурации.

client.delete_configuration_setting(
    key="MyKey",
    label="MyLabel",
)

Список параметров конфигурации

Список всех параметров конфигурации, отфильтруемых с помощью label_filter и (или) key_filter.

config_settings = client.list_configuration_settings(label_filter="MyLabel")
for item in config_settings:
    print_configuration_setting(item)

Создание моментального снимка

from azure.appconfiguration import ConfigurationSettingsFilter

filters = [ConfigurationSettingsFilter(key="my_key1", label="my_label1")]
response = client.begin_create_snapshot(name=snapshot_name, filters=filters)
created_snapshot = response.result()
print_snapshot(created_snapshot)

Получение моментального снимка

received_snapshot = client.get_snapshot(name=snapshot_name)

Архивация моментального снимка

archived_snapshot = client.archive_snapshot(name=snapshot_name)
print_snapshot(archived_snapshot)

Восстановление моментального снимка

recovered_snapshot = client.recover_snapshot(name=snapshot_name)
print_snapshot(recovered_snapshot)

Вывод списка моментальных снимков

for snapshot in client.list_snapshots():
    print_snapshot(snapshot)

Список параметров конфигурации моментального снимка

for config_setting in client.list_configuration_settings(snapshot_name=snapshot_name):
    print_configuration_setting(config_setting)

Асинхронные API

Поддерживается асинхронный клиент. Для использования асинхронной клиентской библиотеки импортируйте AzureAppConfigurationClient из пакета azure.appconfiguration.aio вместо azure.appconfiguration.

import os
from azure.appconfiguration.aio import AzureAppConfigurationClient

CONNECTION_STRING = os.environ["APPCONFIGURATION_CONNECTION_STRING"]

# Create app config client
client = AzureAppConfigurationClient.from_connection_string(CONNECTION_STRING)

Этот async AzureAppConfigurationClient имеет те же сигнатуры методов, что и синхронные, за исключением того, что они являются асинхронными. Например, чтобы асинхронно получить параметр конфигурации, можно использовать async_client:

fetched_config_setting = await client.get_configuration_setting(key="MyKey", label="MyLabel")

Чтобы использовать list_configuration_settings, вызовите его синхронно и асинхронно выполните итерацию по возвращенному асинхронному итератору.

config_settings = client.list_configuration_settings(label_filter="MyLabel")
async for item in config_settings:
    print_configuration_setting(item)
from azure.appconfiguration import ConfigurationSettingsFilter

filters = [ConfigurationSettingsFilter(key="my_key1", label="my_label1")]
response = await client.begin_create_snapshot(name=snapshot_name, filters=filters)
created_snapshot = await response.result()
print_snapshot(created_snapshot)
received_snapshot = await client.get_snapshot(name=snapshot_name)
archived_snapshot = await client.archive_snapshot(name=snapshot_name)
print_snapshot(archived_snapshot)
recovered_snapshot = await client.recover_snapshot(name=snapshot_name)
print_snapshot(recovered_snapshot)
async for snapshot in client.list_snapshots():
    print_snapshot(snapshot)
async for config_setting in client.list_configuration_settings(snapshot_name=snapshot_name):
    print_configuration_setting(config_setting)

Устранение неполадок

Дополнительные сведения о диагностике различных сценариев сбоя см. в руководстве по устранению неполадок .

Дальнейшие действия

Больше примеров кода

В этом репозитории GitHub доступно несколько примеров Конфигурация приложений клиентской библиотеки. К ним относятся следующие объекты.

Дополнительные сведения см. в примерах сведений.

Участие

На этом проекте приветствуются публикации и предложения. Для участия в большинстве процессов по разработке документации необходимо принять лицензионное соглашение участника (CLA), в котором указывается, что вы предоставляете нам права на использование ваших публикаций. Для получения подробных сведений посетите веб-страницу https://cla.microsoft.com.

При отправке запроса на включение внесенных изменений CLA-бот автоматически определит необходимость предоставления соглашения CLA и соответствующего оформления запроса на включение внесенных изменений (например, добавление метки, комментария). Просто следуйте инструкциям бота. Будет достаточно выполнить их один раз для всех репозиториев, поддерживающих соглашение CLA.

В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения: Вопросы и ответы по правилам поведения. С любыми другими вопросами или комментариями обращайтесь по адресу opencode@microsoft.com.