Compartir a través de


biblioteca cliente de Azure App Configuration para Python: versión 1.5.0

Azure App Configuration es un servicio administrado que ayuda a los desarrolladores a centralizar la configuración de sus aplicaciones de forma sencilla y segura.

Los programas actuales, especialmente los que se ejecutan en una nube, tienen por lo general muchos componentes que están distribuidos por naturaleza. La propagación de valores de configuración entre estos componentes puede conducir a errores difíciles de solucionar durante la implementación de una aplicación. Use App Configuration para almacenar de forma segura toda la configuración de la aplicación en un solo lugar.

Use la biblioteca cliente para App Configuration para crear y administrar las opciones de configuración de la aplicación.

Código | fuentePaquete (Pypi) | Paquete (Conda) | Documentación | de referencia de APIDocumentación del producto

Declinación de responsabilidades

Los paquetes de Python del SDK de Azure para Python 2.7 finalizaron el 01 de enero de 2022. Para obtener más información y preguntas, consulte https://github.com/Azure/azure-sdk-for-python/issues/20691Python 3.7 o posterior para usar este paquete. Para más información, consulte la directiva de compatibilidad con la versión de Azure SDK para Python.

Introducción

Instalar el paquete

Instale la biblioteca cliente de Azure App Configuration para Python con pip:

pip install azure-appconfiguration

Requisitos previos

Para crear un almacén de configuración, puede usar Azure Portal o la CLI de Azure.

Después, cree el almacén de configuración:

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

Autenticar el cliente

Para interactuar con el servicio App Configuration, deberá crear una instancia de la clase AzureAppConfigurationClient. Para que esto sea posible, puede usar el cadena de conexión del almacén de configuración o usar un token de AAD.

Usar cadena de conexión

Obtener credenciales

Use el fragmento de código de la CLI de Azure siguiente para obtener el cadena de conexión del Almacén de configuración.

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

Como alternativa, obtenga el cadena de conexión de Azure Portal.

Crear el cliente

Una vez que tenga el valor del cadena de conexión, puede crear 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)

Uso del token de AAD

Aquí se muestra cómo usar DefaultAzureCredential para autenticarse como entidad de servicio. Sin embargo, AzureAppConfigurationClient acepta cualquier credencial de azure-identity . Consulte la documentación de azure-identity para más información sobre otras credenciales.

Creación de una entidad de servicio (opcional)

Este fragmento de código de la CLI de Azure muestra cómo crear una nueva entidad de servicio. Antes de usarlo, reemplace "your-application-name" por el nombre adecuado para la entidad de servicio.

Cree una entidad de servicio:

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

Salida:

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

Use la salida para establecer AZURE_CLIENT_ID ("appId" anterior), AZURE_CLIENT_SECRET ("contraseña" anterior) y AZURE_TENANT_ID ("inquilino" anterior) variables de entorno. En el ejemplo siguiente se muestra una manera de hacerlo en Bash:

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

Asigne uno de los roles de App Configuration aplicables a la entidad de servicio.

Creación de un cliente

Una vez establecida la AZURE_CLIENT_ID, AZURE_CLIENT_SECRET y AZURE_TENANT_ID variables de entorno, DefaultAzureCredential podrá autenticar AzureAppConfigurationClient.

La construcción del cliente también requiere la dirección URL del almacén de configuración, que puede obtener desde la CLI de Azure o Azure Portal. En Azure Portal, la dirección URL se puede encontrar como el servicio "Punto de conexión".

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

credential = DefaultAzureCredential()

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

Conceptos clave

Opción de configuración

Un valor de configuración es el recurso fundamental dentro de un almacén de configuración. En su forma más sencilla, es una clave y un valor. Sin embargo, hay propiedades adicionales, como el tipo de contenido modificable y los campos de etiquetas que permiten interpretar o asociar el valor de maneras diferentes.

La propiedad Label de un valor de configuración proporciona una manera de separar las opciones de configuración en diferentes dimensiones. Estas dimensiones se definen por el usuario y pueden adoptar cualquier forma. Algunos ejemplos comunes de dimensiones que se usarán para una etiqueta incluyen regiones, versiones semánticas o entornos. Muchas aplicaciones tienen un conjunto necesario de claves de configuración que tienen valores diferentes, ya que la aplicación existe en diferentes dimensiones.

Por ejemplo, MaxRequests puede ser 100 en "NorthAmerica" y 200 en "WestEurope". Al crear una configuración denominada MaxRequests con una etiqueta de "NorthAmerica" y otra, solo con un valor diferente, en la etiqueta "WestEurope", una aplicación puede recuperar sin problemas los valores de configuración a medida que se ejecuta en estas dos dimensiones.

Propiedades de un valor de configuración:

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

Instantánea

Azure App Configuration permite a los usuarios crear una instantánea a un momento dado de su almacén de configuración, lo que les proporciona la capacidad de tratar la configuración como una versión coherente. Esta característica permite a las aplicaciones contener una vista coherente de la configuración, lo que garantiza que no haya coincidencias de versiones con la configuración individual debido a la lectura de las actualizaciones realizadas. Las instantáneas son inmutables, lo que garantiza que la configuración se pueda revertir con confianza a una última configuración válida conocida en caso de problema.

Ejemplos

En las secciones siguientes se proporcionan varios fragmentos de código que abarcan algunas de las tareas más comunes de Configuration Service, entre las que se incluyen:

Crear una configuración

Cree un valor de configuración que se almacenará en el almacén de configuración. Hay dos maneras de almacenar una configuración:

  • add_configuration_setting crea una configuración solo si la configuración aún no existe en el almacén.
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 una configuración si no existe o invalida una configuración existente.
added_config_setting.value = "new value"
added_config_setting.content_type = "new content type"
updated_config_setting = client.set_configuration_setting(added_config_setting)

Obtener una configuración

Obtiene un valor de configuración almacenado previamente.

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

Eliminar un valor de configuración

Elimine un valor de configuración existente.

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

Enumerar opciones de configuración

Enumere todas las opciones de configuración filtradas con label_filter o key_filter.

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

Crear una instantánea

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)

Obtener una instantánea

received_snapshot = client.get_snapshot(name=snapshot_name)

Archivar una instantánea

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

Recuperar una instantánea

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

Enumerar instantáneas

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

Enumerar las opciones de configuración de una instantánea

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

API asincrónicas

Se admite el cliente asincrónico. Para usar la biblioteca cliente asincrónica, importe AzureAppConfigurationClient desde el paquete azure.appconfiguration.aio en lugar de 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)

Esta instancia asincrónica de AzureAppConfigurationClient tiene las mismas firmas de método que las sincronizadas, excepto que son asincrónicas. Por ejemplo, para recuperar un valor de configuración de forma asincrónica, se puede usar async_client:

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

Para usar list_configuration_settings, llámalo de forma sincrónica e iteración a través del iterador asincrónico devuelto de forma asincrónica

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)

Solución de problemas

Consulte la guía de solución de problemas para obtener más información sobre cómo diagnosticar varios escenarios de error.

Pasos siguientes

Más código de ejemplo

Hay varios ejemplos de biblioteca cliente de App Configuration disponibles en este repositorio de GitHub. Aquí se incluyen:

Para obtener más información, consulte el archivo Léame de ejemplos.

Contribuciones

Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Contrato de licencia para el colaborador (CLA) que declara que tiene el derecho a concedernos y nos concede los derechos para usar su contribución. Para más detalles, visite https://cla.microsoft.com.

Cuando se envía una solicitud de incorporación de cambios, un bot de CLA determinará de forma automática si tiene que aportar un CLA y completar la PR adecuadamente (por ejemplo, la etiqueta, el comentario). Solo siga las instrucciones que le dará el bot. Solo será necesario que lo haga una vez en todos los repositorios con nuestro CLA.

El proyecto ha adoptado el Código de conducta de código abierto de Microsoft. Para obtener más información, consulte las preguntas más frecuentes del código de conducta o póngase en contacto con opencode@microsoft.com si tiene cualquier otra pregunta o comentario.