Condividi tramite


Configurazione app di Azure libreria client per Python - versione 1.5.0

Configurazione app di Azure è un servizio gestito che consente agli sviluppatori di centralizzare le configurazioni delle loro applicazioni in modo semplice e sicuro.

I programmi moderni, specialmente quelli eseguiti nel cloud, hanno in genere molti componenti che sono distribuiti per natura. Disseminare le impostazioni di configurazione tra questi componenti può generare errori difficili da risolvere durante la distribuzione di un'applicazione. Usare Configurazione app per archiviare in modo sicuro tutte le impostazioni per l'applicazione in un'unica posizione.

Usare la libreria client per Configurazione app per creare e gestire le impostazioni di configurazione dell'applicazione.

Codice | sorgentePacchetto (Pypi) | Pacchetto (Conda) | Documentazione di | riferimento sulle APIDocumentazione del prodotto

Dichiarazione di non responsabilità

Il supporto dei pacchetti Python di Azure SDK per Python 2.7 è terminato 01 gennaio 2022. Per altre informazioni e domande, vedere https://github.com/Azure/azure-sdk-for-python/issues/20691Python 3.7 o versione successiva per usare questo pacchetto. Per altre informazioni, vedere Criteri di supporto per la versione di Azure SDK per Python.

Introduzione

Installare il pacchetto

Installare la libreria client Configurazione app di Azure per Python con pip:

pip install azure-appconfiguration

Prerequisiti

Per creare un archivio di configurazione, è possibile usare il portale di Azure o l'interfaccia della riga di comando di Azure.

Successivamente, creare l'archivio di configurazione:

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

Autenticare il client

Per interagire con il servizio Configurazione app, è necessario creare un'istanza della classe AzureAppConfigurationClient. Per rendere possibile questa operazione, è possibile usare la stringa di connessione dell'archivio di configurazione o usare un token AAD.

Usa stringa di connessione

Ottenere le credenziali

Usare il frammento di interfaccia della riga di comando di Azure seguente per ottenere il stringa di connessione dall'archivio di configurazione.

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

In alternativa, ottenere il stringa di connessione dal portale di Azure.

Creare il client

Dopo aver ottenuto il valore dell'stringa di connessione, è possibile creare 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)

Usare il token AAD

Di seguito viene illustrato l'uso di DefaultAzureCredential per l'autenticazione come entità servizio. AzureAppConfigurationClient accetta tuttavia tutte le credenziali di azure-identity. Per altre informazioni sulle altre credenziali, vedere la documentazione di azure-identity .

Creare un'entità servizio (facoltativo)

Questo frammento di interfaccia della riga di comando di Azure illustra come creare una nuova entità servizio. Prima di usarlo, sostituire "your-application-name" con il nome appropriato per l'entità servizio.

Creare un'entità servizio:

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

Output:

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

Usare l'output per impostare AZURE_CLIENT_ID ("appId" sopra), AZURE_CLIENT_SECRET ("password" precedente) e AZURE_TENANT_ID ("tenant" sopra). Nell'esempio seguente viene illustrato un modo per eseguire questa operazione in Bash:

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

Assegnare uno dei ruoli Configurazione app applicabili all'entità servizio.

Creare un client

Dopo aver impostato le AZURE_CLIENT_ID, AZURE_CLIENT_SECRET e AZURE_TENANT_ID variabili di ambiente, DefaultAzureCredential sarà in grado di autenticare AzureAppConfigurationClient.

La creazione del client richiede anche l'URL dell'archivio di configurazione, che è possibile ottenere dall'interfaccia della riga di comando di Azure o dal portale di Azure. Nel portale di Azure è possibile trovare l'URL come "Endpoint" del servizio

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

credential = DefaultAzureCredential()

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

Concetti chiave

Impostazione di configurazione

Un'impostazione di configurazione è la risorsa fondamentale all'interno di un archivio di configurazione. Nella forma più semplice è una chiave e un valore. Esistono tuttavia proprietà aggiuntive, ad esempio il tipo di contenuto modificabile e i campi tag che consentono di interpretare o associare il valore in modi diversi.

La proprietà Label di un'impostazione di configurazione consente di separare le impostazioni di configurazione in dimensioni diverse. Queste dimensioni sono definite dall'utente e possono assumere qualsiasi forma. Alcuni esempi comuni di dimensioni da usare per un'etichetta includono aree, versioni semantiche o ambienti. Molte applicazioni hanno un set obbligatorio di chiavi di configurazione che hanno valori variabili in quanto l'applicazione esiste in dimensioni diverse.

Ad esempio, MaxRequests può essere 100 in "NorthAmerica" e 200 in "WestEurope". Creando un'impostazione di configurazione denominata MaxRequests con un'etichetta "NorthAmerica" e un'altra, solo con un valore diverso, nell'etichetta "WestEurope", un'applicazione può recuperare facilmente Impostazioni di configurazione durante l'esecuzione in queste due dimensioni.

Proprietà di un'impostazione di configurazione:

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

Snapshot

Configurazione app di Azure consente agli utenti di creare uno snapshot temporizzato dell'archivio di configurazione, fornendo loro la possibilità di trattare le impostazioni come una versione coerente. Questa funzionalità consente alle applicazioni di mantenere una visualizzazione coerente della configurazione, assicurandosi che non siano presenti mancate corrispondenze di versione alle singole impostazioni a causa della lettura degli aggiornamenti. Gli snapshot sono non modificabili, assicurandosi che la configurazione possa essere eseguito in modo sicuro a una configurazione valida per l'ultima nota in caso di problema.

Esempio

Le sezioni seguenti forniscono diversi frammenti di codice che coprono alcune delle attività del servizio di configurazione più comuni, tra cui:

Creare un'impostazione di configurazione

Creare un'impostazione di configurazione da archiviare nell'archivio di configurazione. Esistono due modi per archiviare un'impostazione di configurazione:

  • add_configuration_setting crea un'impostazione solo se l'impostazione non esiste già nell'archivio.
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 crea un'impostazione se non esiste o esegue l'override di un'impostazione esistente.
added_config_setting.value = "new value"
added_config_setting.content_type = "new content type"
updated_config_setting = client.set_configuration_setting(added_config_setting)

Ottenere un'impostazione di configurazione

Ottenere un'impostazione di configurazione archiviata in precedenza.

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

Eliminare un'impostazione di configurazione

Eliminare un'impostazione di configurazione esistente.

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

Impostazioni di configurazione elenco

Elencare tutte le impostazioni di configurazione filtrate con label_filter e/o key_filter.

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

Creare uno snapshot

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)

Ottenere uno snapshot

received_snapshot = client.get_snapshot(name=snapshot_name)

Archiviare uno snapshot

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

Ripristinare uno snapshot

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

Elencare gli snapshot

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

Elencare le impostazioni di configurazione di uno snapshot

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

API asincrone

Il client asincrono è supportato. Per usare la libreria client asincrona, importare AzureAppConfigurationClient dal pacchetto azure.appconfiguration.aio anziché 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)

Questo oggetto AzureAppConfigurationClient asincrono ha le stesse firme del metodo di sincronizzazione, ad eccezione del fatto che sono asincrone. Ad esempio, per recuperare un'impostazione di configurazione in modo asincrono, è possibile usare async_client:

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

Per usare list_configuration_settings, chiamarlo in modo sincrono e scorrere in modo asincrono l'iteratore asincrono restituito

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)

Risoluzione dei problemi

Per informazioni dettagliate su come diagnosticare vari scenari di errore, vedere la guida alla risoluzione dei problemi .

Passaggi successivi

Altro codice di esempio

In questo repository GitHub sono disponibili diversi esempi di libreria client Configurazione app. Queste includono:

Per altre informazioni, vedere gli esempi README.

Contributo

In questo progetto sono benvenuti i contributi e i suggerimenti. Per la maggior parte dei contenuti è necessario sottoscrivere un contratto di licenza di collaborazione (CLA, Contributor License Agreement) che stabilisce che l'utente ha il diritto di concedere, e di fatto concede a Microsoft i diritti d'uso del suo contributo. Per informazioni dettagliate, vedere https://cla.microsoft.com.

Quando si invia una richiesta pull, un bot CLA determina automaticamente se è necessario specificare un contratto CLA e completare la richiesta pull in modo appropriato (ad esempio con un'etichetta e un commento). Seguire le istruzioni specificate dal bot. È sufficiente eseguire questa operazione una sola volta per tutti i repository che usano il contratto CLA Microsoft.

Questo progetto ha adottato il Codice di comportamento di Microsoft per l'open source. Per altre informazioni, vedere Code of Conduct FAQ (Domande frequenti sul Codice di comportamento) oppure contattare opencode@microsoft.com per eventuali altre domande o commenti.