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
- Python 3.7 of hoger is vereist voor het gebruik van dit pakket.
- U hebt een Azure-abonnement en een configuratiearchief nodig om dit pakket te kunnen gebruiken.
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
- Een configuratie-instelling ophalen
- Een configuratie-instelling verwijderen
- Lijstconfiguratie-instellingen
- Een momentopname maken
- Een momentopname ophalen
- Een momentopname archiveren
- Een momentopname herstellen
- Momentopnamen weergeven
- Configuratie-instellingen van een momentopname weergeven
- Asynchrone API's
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:
- Hallo mensen / Asynchrone versie
- Hallo wereld met labels / Asynchrone versie
- Een configuratie-instelling alleen-lezen / makenAsynchrone versie
- Revisiegeschiedenis lezen / Asynchrone versie
- Een instelling ophalen als deze is gewijzigd / Asynchrone versie
- De status van een momentopname van configuratie-instellingen maken, ophalen en bijwerken / Asynchrone versie
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.
Azure SDK for Python