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
- Se requiere Python 3.7 o posterior para usar este paquete.
- Necesita una suscripción de Azure y un almacén de configuración para usar este paquete.
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
- Obtener una configuración
- Eliminar un valor de configuración
- Enumerar opciones de configuración
- Crear una instantánea
- Obtener una instantánea
- Archivar una instantánea
- Recuperar una instantánea
- Enumerar instantáneas
- Enumerar las opciones de configuración de una instantánea
- API asincrónicas
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:
- Hola mundo / Versión asincrónica
- Hola mundo con etiquetas / Versión asincrónica
- Establecer un valor de configuración de solo lectura / Versión asincrónica
- Leer el historial / de revisionesVersión asincrónica
- Obtener una configuración si se cambia / Versión asincrónica
- Creación, recuperación y actualización del estado de una instantánea / de configuraciónVersión asincrónica
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.
Azure SDK for Python