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
- Python 3.7 eller senare krävs för att använda det här paketet.
- Du behöver en Azure-prenumeration och ett Configuration Store för att använda det här paketet.
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
- Hämta en konfigurationsinställning
- Ta bort en konfigurationsinställning
- Lista konfigurationsinställningar
- Skapa en ögonblicksbild
- Hämta en ögonblicksbild
- Arkivera en ögonblicksbild
- Återställa en ögonblicksbild
- Lista ögonblicksbilder
- Lista konfigurationsinställningar för en ögonblicksbild
- Async-API:er
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:
- Hej världen / Asynkron version
- Hello World med etiketter / Asynkron version
- Gör en konfigurationsinställning skrivskyddad / Asynkron version
- Läs revisionshistorik / Asynkron version
- Hämta en inställning om den ändras / Asynkron version
- Skapa, hämta och uppdatera status för en ögonblicksbild / av konfigurationsinställningarAsynkron version
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.
Azure SDK for Python
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för