Share via


Azure App Configuration klientbibliotek för Python – version 1.5.0

Azure App Configuration är en hanterad tjänst som hjälper utvecklare att centralisera sina programkonfigurationer enkelt och säkert.

Moderna program, särskilt program som körs i ett moln, har vanligtvis många komponenter som är distribuerade till sin natur. Om konfigurationsinställningar sprids mellan dessa komponenter kan det ge upphov till fel som är svåra att felsöka under en programdistribution. Använd App Configuration för att lagra alla inställningar för ditt program på ett säkert sätt.

Använd klientbiblioteket för App Configuration för att skapa och hantera inställningar för programkonfiguration.

Källkod | Paket (Pypi) | Paket (Conda) | API-referensdokumentation | Produktdokumentation

Friskrivning

Stöd för Azure SDK Python-paket för Python 2.7 har upphört den 1 januari 2022. Mer information och frågor finns i https://github.com/Azure/azure-sdk-for-python/issues/20691Python 3.7 eller senare som krävs för att använda det här paketet. Mer information finns i Supportprincip för Azure SDK för Python-version.

Komma igång

Installera paketet

Installera Azure App Configuration-klientbiblioteket för Python med pip:

pip install azure-appconfiguration

Förutsättningar

Om du vill skapa ett konfigurationsarkiv kan du använda Azure-portalen eller Azure CLI.

Därefter skapar du konfigurationsarkivet:

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

Autentisera klienten

För att kunna interagera med App Configuration-tjänsten måste du skapa en instans av klassen AzureAppConfigurationClient. För att göra detta möjligt kan du antingen använda anslutningssträng i Configuration Store eller använda en AAD-token.

Använda anslutningssträng

Hämta autentiseringsuppgifter

Använd Azure CLI-kodfragmentet nedan för att hämta anslutningssträng från Configuration Store.

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

Du kan också hämta anslutningssträng från Azure Portal.

Skapa en klient

När du har värdet för anslutningssträng kan du skapa 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)

Använda AAD-token

Här visar vi hur du använder DefaultAzureCredential för att autentisera som tjänstens huvudnamn. AzureAppConfigurationClient accepterar dock alla azure-identity-autentiseringsuppgifter. Mer information om andra autentiseringsuppgifter finns i dokumentationen om azure-identity .

Skapa ett huvudnamn för tjänsten (valfritt)

Det här Azure CLI-kodfragmentet visar hur du skapar ett nytt huvudnamn för tjänsten. Ersätt "ditt programnamn" med lämpligt namn för tjänstens huvudnamn innan du använder det.

Skapa ett huvudnamn för tjänsten:

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

Utdata:

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

Använd utdata för att ange miljövariabler för AZURE_CLIENT_ID ("appId" ovan), AZURE_CLIENT_SECRET ("lösenord" ovan) och AZURE_TENANT_ID ("klient" ovan). I följande exempel visas ett sätt att göra detta i Bash:

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

Tilldela en av de tillämpliga App Configuration rollerna till tjänstens huvudnamn.

Skapa en klient

När AZURE_CLIENT_ID, AZURE_CLIENT_SECRET och AZURE_TENANT_ID miljövariabler har angetts kan DefaultAzureCredential autentisera AzureAppConfigurationClient.

För att skapa klienten krävs även konfigurationsarkivets URL, som du kan hämta från Azure CLI eller Azure-portalen. I Azure-portalen finns URL:en listad som tjänsten "Slutpunkt"

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

credential = DefaultAzureCredential()

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

Viktiga begrepp

Konfigurationsinställning

En konfigurationsinställning är den grundläggande resursen i ett konfigurationsarkiv. I sin enklaste form är det en nyckel och ett värde. Det finns dock ytterligare egenskaper som den ändringsbara innehållstypen och taggar som gör att värdet kan tolkas eller associeras på olika sätt.

Egenskapen Etikett för en konfigurationsinställning är ett sätt att separera konfigurationsinställningar i olika dimensioner. De här dimensionerna är användardefinierade och kan ha valfritt formulär. Några vanliga exempel på dimensioner som ska användas för en etikett är regioner, semantiska versioner eller miljöer. Många program har en obligatorisk uppsättning konfigurationsnycklar som har olika värden eftersom programmet finns i olika dimensioner.

MaxRequests kan till exempel vara 100 i "NorthAmerica" och 200 i "WestEurope". Genom att skapa en konfigurationsinställning med namnet MaxRequests med etiketten "NorthAmerica" och en annan, endast med ett annat värde, i etiketten "WestEurope" kan ett program sömlöst hämta konfigurationsinställningar när det körs i dessa två dimensioner.

Egenskaper för en konfigurationsinställning:

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

Ögonblicksbild

Azure App Configuration gör det möjligt för användare att skapa en ögonblicksbild av konfigurationsarkivet, vilket ger dem möjlighet att behandla inställningarna som en konsekvent version. Den här funktionen gör det möjligt för program att ha en konsekvent vy över konfigurationen, vilket säkerställer att det inte finns några versionsmatchningsfel för enskilda inställningar på grund av läsning när uppdateringar gjordes. Ögonblicksbilder är oföränderliga, vilket säkerställer att konfigurationen säkert kan återställas till en senast fungerande konfiguration i händelse av ett problem.

Exempel

Följande avsnitt innehåller flera kodfragment som täcker några av de vanligaste konfigurationstjänstuppgifterna, inklusive:

Skapa en konfigurationsinställning

Skapa en konfigurationsinställning som ska lagras i konfigurationsarkivet. Det finns två sätt att lagra en konfigurationsinställning:

  • add_configuration_setting skapar bara en inställning om inställningen inte redan finns i arkivet.
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 skapar en inställning om den inte finns eller åsidosätter en befintlig inställning.
added_config_setting.value = "new value"
added_config_setting.content_type = "new content type"
updated_config_setting = client.set_configuration_setting(added_config_setting)

Hämta en konfigurationsinställning

Hämta en tidigare lagrad konfigurationsinställning.

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

Ta bort en konfigurationsinställning

Ta bort en befintlig konfigurationsinställning.

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

Lista konfigurationsinställningar

Visa en lista över alla konfigurationsinställningar som filtrerats med label_filter och/eller key_filter.

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

Skapa en ögonblicksbild

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)

Hämta en ögonblicksbild

received_snapshot = client.get_snapshot(name=snapshot_name)

Arkivera en ögonblicksbild

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

Återställa en ögonblicksbild

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

Lista ögonblicksbilder

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

Lista konfigurationsinställningar för en ögonblicksbild

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

Async-API:er

Async-klienten stöds. Om du vill använda async-klientbiblioteket importerar du AzureAppConfigurationClient från paketet azure.appconfiguration.aio i stället för 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)

Den här asynkrona AzureAppConfigurationClient har samma metodsignaturer som synkroniseringen förutom att de är asynkrona. Om du till exempel vill hämta en konfigurationsinställning asynkront kan async_client användas:

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

Om du vill använda list_configuration_settings anropar du det synkront och itererar över den returnerade asynkrona iteratorn asynkront

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)

Felsökning

Mer information om hur du diagnostiserar olika felscenarier finns i felsökningsguiden .

Nästa steg

Mer exempelkod

Det finns flera App Configuration klientbiblioteksexempel på den här GitHub-lagringsplatsen. Dessa omfattar:

Mer information finns i README-exempel.

Bidra

Det här projektet välkomnar bidrag och förslag. Merparten av bidragen kräver att du godkänner ett licensavtal för bidrag, där du deklarerar att du har behörighet att bevilja oss rättigheten att använda ditt bidrag, och att du dessutom uttryckligen gör så. Mer information finns på https://cla.microsoft.com.

När du skickar en pull-förfrågan avgör en CLA-robot automatiskt om du måste tillhandahålla ett licensavtal för bidrag med lämplig PR (t.ex. etikett eller kommentar). Följ bara robotens anvisningar. Du behöver bara göra detta en gång för alla repor som använder vårt licensavtal för bidrag.

Det här projektet använder sig av Microsofts uppförandekod för öppen källkod. Du hittar mer information i Vanliga frågor om uppförandekod eller kontakta opencode@microsoft.com för ytterligare frågor eller kommentarer.