biblioteka klienta Azure App Configuration dla języka Python — wersja 1.5.0

Usługa Azure App Configuration to usługa zarządzana, która pomaga deweloperom w prosty i bezpieczny sposób scentralizować konfigurację aplikacji.

Nowoczesne programy, zwłaszcza programy działające w chmurze, zazwyczaj mają wiele składników, które są rozproszone w naturze. Posiadanie ustawień konfiguracji w ramach tych składników może powodować występowanie błędów podczas wdrażania aplikacji, których diagnozowanie będzie bardzo skomplikowane. Użyj App Configuration, aby bezpiecznie przechowywać wszystkie ustawienia aplikacji w jednym miejscu.

Użyj biblioteki klienta dla App Configuration, aby utworzyć ustawienia konfiguracji aplikacji i zarządzać nimi.

Kod | źródłowyPakiet (Pypi) | Pakiet (Conda) | Dokumentacja referencyjna interfejsu | APIDokumentacja produktu

Zrzeczenie odpowiedzialności

Obsługa pakietów języka Python zestawu Azure SDK dla języka Python 2.7 została zakończona 01 stycznia 2022 r. Aby uzyskać więcej informacji i pytań, zapoznaj się z tematem https://github.com/Azure/azure-sdk-for-python/issues/20691Python 3.7 lub nowszym wymaganym do korzystania z tego pakietu. Aby uzyskać więcej informacji, zapoznaj się z zasadami obsługi wersji zestawu Azure SDK dla języka Python.

Wprowadzenie

Instalowanie pakietu

Zainstaluj bibliotekę klienta Azure App Configuration dla języka Python przy użyciu narzędzia pip:

pip install azure-appconfiguration

Wymagania wstępne

Aby utworzyć magazyn konfiguracji, możesz użyć witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.

Następnie utwórz magazyn konfiguracji:

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

Uwierzytelnianie klienta

Aby móc korzystać z usługi App Configuration, należy utworzyć wystąpienie klasy AzureAppConfigurationClient. Aby to możliwe, możesz użyć parametry połączenia magazynu konfiguracji lub użyć tokenu usługi AAD.

Korzystanie z parametry połączenia

Pobieranie poświadczeń

Użyj poniższego fragmentu kodu interfejsu wiersza polecenia platformy Azure, aby uzyskać parametry połączenia z magazynu konfiguracji.

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

Alternatywnie pobierz parametry połączenia z witryny Azure Portal.

Tworzenie klienta

Po utworzeniu wartości parametry połączenia możesz utworzyć element 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)

Korzystanie z tokenu usługi AAD

W tym miejscu pokazano, jak używać wartości DefaultAzureCredential do uwierzytelniania jako jednostka usługi. Jednak usługa AzureAppConfigurationClient akceptuje wszelkie poświadczenia tożsamości platformy Azure . Aby uzyskać więcej informacji na temat innych poświadczeń, zobacz dokumentację dotyczącą tożsamości platformy Azure .

Tworzenie jednostki usługi (opcjonalnie)

Ten fragment kodu interfejsu wiersza polecenia platformy Azure pokazuje, jak utworzyć nową jednostkę usługi. Przed użyciem zastąp ciąg "nazwa-aplikacji" odpowiednią nazwą jednostki usługi.

Utwórz jednostkę usługi:

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

Dane wyjściowe:

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

Użyj danych wyjściowych, aby ustawić AZURE_CLIENT_ID ("appId" powyżej), AZURE_CLIENT_SECRET ("hasło" powyżej) i AZURE_TENANT_ID ("dzierżawa" powyżej) zmienne środowiskowe. W poniższym przykładzie przedstawiono sposób wykonania tej czynności w programie Bash:

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

Przypisz jedną z odpowiednich ról App Configuration do jednostki usługi.

Tworzenie klienta

Po ustawieniu AZURE_CLIENT_ID zmiennych środowiskowych AZURE_CLIENT_SECRET i AZURE_TENANT_IDdomyślnaAzureCredential będzie mogła uwierzytelnić obiekt AzureAppConfigurationClient.

Konstruowanie klienta wymaga również adresu URL magazynu konfiguracji, który można pobrać z interfejsu wiersza polecenia platformy Azure lub witryny Azure Portal. W witrynie Azure Portal adres URL można znaleźć jako usługę "Punkt końcowy"

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

credential = DefaultAzureCredential()

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

Kluczowe pojęcia

Ustawienie konfiguracji

Ustawienie konfiguracji to podstawowy zasób w magazynie konfiguracji. W najprostszej formie jest to klucz i wartość. Istnieją jednak dodatkowe właściwości, takie jak modyfikowalny typ zawartości i pola tagów, które umożliwiają interpretowanie lub skojarzenie wartości na różne sposoby.

Właściwość Label ustawienia konfiguracji umożliwia rozdzielenie ustawień konfiguracji na różne wymiary. Te wymiary są definiowane przez użytkownika i mogą mieć dowolną formę. Niektóre typowe przykłady wymiarów do użycia dla etykiety obejmują regiony, wersje semantyczne lub środowiska. Wiele aplikacji ma wymagany zestaw kluczy konfiguracji, które mają różne wartości, ponieważ aplikacja istnieje w różnych wymiarach.

Na przykład wartość MaxRequests może być 100 w obszarze "NorthAmerica" i 200 w obszarze "WestEurope". Tworząc ustawienie konfiguracji o nazwie MaxRequests z etykietą "NorthAmerica" i inną, tylko z inną wartością, w etykiecie "WestEurope" aplikacja może bezproblemowo pobrać ustawienia konfiguracji, ponieważ działa w tych dwóch wymiarach.

Właściwości ustawienia konfiguracji:

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

Snapshot

Azure App Configuration umożliwia użytkownikom tworzenie migawki magazynu konfiguracji do punktu w czasie, zapewniając im możliwość traktowania ustawień jako jednej spójnej wersji. Ta funkcja umożliwia aplikacjom przechowywanie spójnego widoku konfiguracji, zapewniając, że nie ma niezgodności wersji z poszczególnymi ustawieniami z powodu odczytu w miarę wprowadzania aktualizacji. Migawki są niezmienne, zapewniając, że konfiguracja może zostać bezpiecznie wycofana do ostatniej znanej konfiguracji w przypadku wystąpienia problemu.

Przykłady

W poniższych sekcjach przedstawiono kilka fragmentów kodu obejmujących niektóre z najbardziej typowych zadań usługi Configuration Service, w tym:

Tworzenie ustawienia konfiguracji

Utwórz ustawienie konfiguracji do przechowywania w magazynie konfiguracji. Istnieją dwa sposoby przechowywania ustawienia konfiguracji:

  • add_configuration_setting tworzy ustawienie tylko wtedy, gdy ustawienie jeszcze nie istnieje w sklepie.
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 tworzy ustawienie, jeśli nie istnieje lub zastępuje istniejące ustawienie.
added_config_setting.value = "new value"
added_config_setting.content_type = "new content type"
updated_config_setting = client.set_configuration_setting(added_config_setting)

Pobieranie ustawienia konfiguracji

Pobierz wcześniej przechowywane ustawienie konfiguracji.

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

Usuwanie ustawienia konfiguracji

Usuń istniejące ustawienie konfiguracji.

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

Wyświetlanie listy ustawień konfiguracji

Wyświetl listę wszystkich ustawień konfiguracji filtrowanych przy użyciu label_filter i/lub key_filter.

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

Tworzenie migawki

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)

Pobieranie migawki

received_snapshot = client.get_snapshot(name=snapshot_name)

Archiwizowanie migawki

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

Odzyskiwanie migawki

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

Tworzenie listy migawek

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

Wyświetlanie listy ustawień konfiguracji migawki

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

Asynchroniczne interfejsy API

Obsługiwany jest klient asynchroniczny. Aby użyć biblioteki klienta asynchronicznego, zaimportuj element AzureAppConfigurationClient z pakietu azure.appconfiguration.aio zamiast 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)

Ten asynchroniczny element AzureAppConfigurationClient ma te same sygnatury metody co synchronizacja, z wyjątkiem tego, że są asynchroniczne. Aby na przykład pobrać ustawienie konfiguracji asynchronicznie, można użyć async_client:

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

Aby użyć list_configuration_settings, wywołaj ją synchronicznie i iteruj przez zwrócony iterator asynchronicznie

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)

Rozwiązywanie problemów

Aby uzyskać szczegółowe informacje na temat diagnozowania różnych scenariuszy awarii, zobacz przewodnik rozwiązywania problemów .

Następne kroki

Więcej przykładów kodu

W tym repozytorium GitHub jest dostępnych kilka App Configuration przykładów biblioteki klienta. Są one następujące:

Aby uzyskać więcej informacji, zobacz przykłady README.

Współtworzenie

W tym projekcie zachęcamy do współtworzenia i zgłaszania sugestii. Współtworzenie w większości przypadków wymaga zgody na umowę licencyjną dotyczącą współautorów (CLA, Contributor License Agreement), zgodnie z którą współautor ma prawo udzielić i faktycznie udziela nam praw do używania wytworzonej przez siebie zawartości. Aby uzyskać szczegółowe informacje, odwiedź stronę https://cla.microsoft.com.

Po przesłaniu żądania ściągnięcia robot CLA automatycznie określi, czy musisz przekazać umowę CLA, i doda odpowiednie informacje do tego żądania (na przykład etykietę czy komentarz). Po prostu postępuj zgodnie z instrukcjami robota. Wystarczy zrobić to raz dla wszystkich repozytoriów, w przypadku których jest używana nasza umowa CLA.

W tym projekcie przyjęto Kodeks postępowania oprogramowania Open Source firmy Microsoft. Aby uzyskać więcej informacji, zobacz artykuł Code of Conduct FAQ (Często zadawane pytania dotyczące kodeksu postępowania). Jeśli będziesz mieć jeszcze jakieś pytania lub komentarze, wyślij wiadomość e-mail na adres opencode@microsoft.com.