Delen via


Azure App Configuration clientbibliotheek voor Python - versie 1.5.0

Azure App Configuration is een beheerde service waarmee ontwikkelaars hun toepassingsconfiguraties eenvoudig en veilig kunnen centraliseren.

Moderne programma's, met name programma’s die in een cloud worden uitgevoerd, hebben doorgaans veel onderdelen die zijn gedistribueerd. Het verspreiden van configuratie-instellingen over deze onderdelen kan leiden tot moeilijk oplosbare fouten tijdens de implementatie van een toepassing. Gebruik App Configuration om alle instellingen voor uw toepassing veilig op één plek op te slaan.

Gebruik de clientbibliotheek voor App Configuration om configuratie-instellingen voor toepassingen te maken en te beheren.

Broncode | Pakket (Pypi) | Pakket (Conda) | API-referentiedocumentatie | Productdocumentatie

Disclaimer

Ondersteuning voor Azure SDK Python-pakketten voor Python 2.7 is beëindigd op 1 januari 2022. Raadpleeg https://github.com/Azure/azure-sdk-for-python/issues/20691Python 3.7 of hoger is vereist voor het gebruik van dit pakket voor meer informatie en vragen. Raadpleeg het ondersteuningsbeleid voor Azure SDK voor Python-versies voor meer informatie.

Aan de slag

Het pakket installeren

Installeer de Azure App Configuration-clientbibliotheek voor Python met pip:

pip install azure-appconfiguration

Vereisten

Als u een configuratiearchief wilt maken, kunt u azure portal of Azure CLI gebruiken.

Maak daarna het configuratiearchief:

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

De client verifiëren

Als u wilt communiceren met de App Configuration-service, moet u een exemplaar van de klasse AzureAppConfigurationClient maken. Om dit mogelijk te maken, kunt u de verbindingsreeks van het configuratiearchief gebruiken of een AAD-token gebruiken.

Verbindingsreeks gebruiken

Referenties ophalen

Gebruik het onderstaande Azure CLI-fragment om de verbindingsreeks op te halen uit het configuratiearchief.

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

U kunt ook de verbindingsreeks ophalen via Azure Portal.

Client maken

Zodra u de waarde van de verbindingsreeks hebt, kunt u de AzureAppConfigurationClient maken:

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-token gebruiken

Hier laten we zien hoe u DefaultAzureCredential gebruikt om te verifiëren als een service-principal. AzureAppConfigurationClient accepteert echter alle azure-identity-referenties. Zie de documentatie over azure-identity voor meer informatie over andere referenties.

Een service-principal maken (optioneel)

Dit Azure CLI-fragment laat zien hoe u een nieuwe service-principal maakt. Voordat u deze gebruikt, vervangt u 'uw-toepassingsnaam' door de juiste naam voor uw service-principal.

Een service-principal maken:

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

Uitvoer:

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

Gebruik de uitvoer om AZURE_CLIENT_ID (appId) hierboven), AZURE_CLIENT_SECRET ('wachtwoord' hierboven) en AZURE_TENANT_ID ('tenant' hierboven) in te stellen. In het volgende voorbeeld ziet u een manier om dit te doen in Bash:

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

Wijs een van de toepasselijke App Configuration rollen toe aan de service-principal.

Client maken

Zodra de AZURE_CLIENT_ID, AZURE_CLIENT_SECRET en AZURE_TENANT_ID omgevingsvariabelen zijn ingesteld, kan DefaultAzureCredential de AzureAppConfigurationClient verifiëren.

Voor het samenstellen van de client is ook de URL van uw configuratiearchief vereist, die u kunt ophalen via de Azure CLI of de Azure-portal. In de Azure-portal vindt u de URL die wordt vermeld als de service 'Eindpunt'

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

credential = DefaultAzureCredential()

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

Belangrijkste concepten

Configuratie-instelling

Een configuratie-instelling is de fundamentele resource in een configuratiearchief. In de eenvoudigste vorm is het een sleutel en een waarde. Er zijn echter aanvullende eigenschappen, zoals de aanpasbare inhoudstype- en tagsvelden, waarmee de waarde op verschillende manieren kan worden geïnterpreteerd of gekoppeld.

De eigenschap Label van een configuratie-instelling biedt een manier om configuratie-instellingen te scheiden in verschillende dimensies. Deze dimensies zijn door de gebruiker gedefinieerd en kunnen elke vorm aannemen. Enkele veelvoorkomende voorbeelden van dimensies die voor een label kunnen worden gebruikt, zijn regio's, semantische versies of omgevingen. Veel toepassingen hebben een vereiste set configuratiesleutels met verschillende waarden omdat de toepassing bestaat in verschillende dimensies.

MaxRequests kan bijvoorbeeld 100 zijn in 'NorthAmerica' en 200 in 'WestEurope'. Door een configuratie-instelling met de naam MaxRequests te maken met het label 'NorthAmerica' en een andere, alleen met een andere waarde, in het label 'WestEurope', kan een toepassing de configuratie-instellingen naadloos ophalen terwijl deze wordt uitgevoerd in deze twee dimensies.

Eigenschappen van een configuratie-instelling:

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

Momentopname

met Azure App Configuration kunnen gebruikers een momentopname naar een bepaald tijdstip maken van hun configuratiearchief, zodat ze instellingen als één consistente versie kunnen behandelen. Met deze functie kunnen toepassingen een consistente weergave van de configuratie houden, zodat er geen versies zijn die niet overeenkomen met afzonderlijke instellingen vanwege het lezen van updates. Momentopnamen zijn onveranderbaar, waardoor de configuratie met vertrouwen kan worden teruggedraaid naar een laatst bekende goede configuratie in het geval van een probleem.

Voorbeelden

De volgende secties bevatten verschillende codefragmenten die betrekking hebben op enkele van de meest voorkomende configuratieservicetaken, waaronder:

Een configuratie-instelling maken

Maak een configuratie-instelling die moet worden opgeslagen in het configuratiearchief. Er zijn twee manieren om een configuratie-instelling op te slaan:

  • add_configuration_setting maakt alleen een instelling als de instelling nog niet in de store bestaat.
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 maakt een instelling als deze niet bestaat of overschrijft een bestaande instelling.
added_config_setting.value = "new value"
added_config_setting.content_type = "new content type"
updated_config_setting = client.set_configuration_setting(added_config_setting)

Een configuratie-instelling ophalen

Haal een eerder opgeslagen configuratie-instelling op.

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

Een configuratie-instelling verwijderen

Een bestaande configuratie-instelling verwijderen.

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

Lijstconfiguratie-instellingen

Alle configuratie-instellingen weergeven die zijn gefilterd met label_filter en/of key_filter.

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

Een momentopname maken

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)

Een momentopname ophalen

received_snapshot = client.get_snapshot(name=snapshot_name)

Een momentopname archiveren

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

Een momentopname herstellen

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

Momentopnamen weergeven

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

Configuratie-instellingen van een momentopname weergeven

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

Asynchrone API's

Asynchrone client wordt ondersteund. Als u de asynchrone clientbibliotheek wilt gebruiken, importeert u de AzureAppConfigurationClient uit het pakket azure.appconfiguration.aio in plaats van 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)

Deze asynchrone AzureAppConfigurationClient heeft dezelfde methodehandtekeningen als de synchronisatie-handtekeningen, behalve dat ze asynchroon zijn. Als u bijvoorbeeld een configuratie-instelling asynchroon wilt ophalen, kunt u async_client gebruiken:

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

Als u list_configuration_settings wilt gebruiken, roept u deze synchroon aan en gaat u asynchroon over de geretourneerde asynchrone iterator

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)

Problemen oplossen

Zie de handleiding voor probleemoplossing voor meer informatie over het diagnosticeren van verschillende foutscenario's.

Volgende stappen

Meer voorbeeldcode

In deze GitHub-opslagplaats zijn verschillende voorbeelden van App Configuration-clientbibliotheek voor u beschikbaar. Deze omvatten:

Zie de voorbeelden LEESMIJ voor meer informatie.

Bijdragen

Wij verwelkomen bijdragen en suggesties voor dit project. Voor de meeste bijdragen moet u instemmen met een licentieovereenkomst voor bijdragers (CLA: Contributor License Agreement) waarin u verklaart dat u gerechtigd bent ons het recht te geven uw bijdrage te gebruiken, en dat u dit ook doet. Ga naar https://cla.microsoft.com voor meer informatie.

Wanneer u een pull-aanvraag indient, wordt met een CLA-bot automatisch bepaald of u een CLA moet verschaffen en wordt de pull-aanvraag dienovereenkomstig opgemaakt (bijvoorbeeld met een label of commentaar). Volg gewoon de instructies van de bot. U hoeft dit maar eenmaal te doen voor alle repo's waar gebruik wordt gemaakt van onze CLA.

Op dit project is de Microsoft Open Source Code of Conduct (Microsoft Open Source-gedragscode) van toepassing. Raadpleeg de Veelgestelde vragen over de gedragscode voor meer informatie of neem contact op met opencode@microsoft.com als u meer vragen of opmerkingen hebt.