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. La biblioteca del proveedor de configuración de JavaScript permite cargar la configuración desde un almacén de Azure App Configuration de forma administrada. Esta biblioteca cliente agrega funcionalidad adicional sobre el SDK de Azure para JavaScript.
Carga de la configuración
El método load exportado en el paquete @azure/app-configuration-provider se usa para cargar la configuración desde Azure App Configuration. El método load permite usar Microsoft Entra ID o una cadena de conexión para conectarse al almacén de App Configuration.
Use DefaultAzureCredential para autenticarse en el almacén de App Configuration. Siga las instrucciones para asignar la credencial al rol Lector de datos de App Configuration.
JavaScript
const { load } = require("@azure/app-configuration-provider");
const { DefaultAzureCredential } = require("@azure/identity");
const endpoint = process.env.AZURE_APPCONFIG_ENDPOINT;
const credential = new DefaultAzureCredential(); // For more information, see https://learn.microsoft.com/azure/developer/javascript/sdk/credential-chains#use-defaultazurecredential-for-flexibilityasyncfunctionrun() {
// Connect to Azure App Configuration using a token credential and load all key-values with no label.const settings = await load(endpoint, credential);
console.log('settings.get("message"):', settings.get("message"));
}
run();
JavaScript
const { load } = require("@azure/app-configuration-provider");
const connectionString = process.env.AZURE_APPCONFIG_CONNECTION_STRING;
asyncfunctionrun() {
// Connect to Azure App Configuration using a connection string and load all key-values with no label.const settings = await load(connectionString);
console.log('settings.get("message"):', settings.get("message"));
}
run();
El método load devuelve una instancia del tipo AzureAppConfiguration que se define de la siguiente manera:
El tipo AzureAppConfiguration extiende las interfaces siguientes:
IGettable
TypeScript
interface IGettable {
get<T>(key: string): T | undefined;
}
La interfaz IGettable proporciona el método get para recuperar el valor de un par clave-valor de la estructura de datos con estilo Map.
TypeScript
const settings = await load(endpoint, credential);
const fontSize = settings.get("app:font:size"); // value of the key "app:font:size" from the App Configuration store
ReadonlyMap
El tipo AzureAppConfiguration también amplía la interfaz ReadonlyMap, lo que proporciona acceso de solo lectura a pares clave-valor.
La interfaz IConfigurationObject proporciona el método constructConfigurationObject para crear un objeto de configuración basado en una estructura de datos de estilo Map y claves jerárquicas. El parámetro opcional ConfigurationObjectConstructionOptions se puede usar para especificar el separador para convertir claves jerárquicas en propiedades de objeto. De manera predeterminada, el separador es ".".
En JavaScript, los objetos o asignaciones se suelen usar como estructuras de datos principales para representar configuraciones. La biblioteca de proveedores de configuración de JavaScript admite los dos enfoques de configuración, lo que proporciona a los desarrolladores la flexibilidad de elegir la opción que mejor se adapte a sus necesidades.
Carga de pares clave-valor específicos mediante selectores
De manera predeterminada, el método load cargará todas las configuraciones sin etiqueta desde el almacén de configuración. Puede configurar el comportamiento del método load mediante el parámetro opcional de tipo AzureAppConfigurationOptions.
Para refinar o expandir las configuraciones cargadas desde el almacén de App Configuration, puede especificar los selectores de clave o etiqueta en la propiedad AzureAppConfigurationOptions.selectors.
TypeScript
const settings = await load(endpoint, credential, {
selectors: [
{ // load the subset of keys starting with "app1." prefix and "test" label
keyFilter: "app1.*",
labelFilter: "test"
},
{ // load the subset of keys starting with "dev" label"
labelFilter: "dev*"
}
]
});
Nota
Los pares de clave-valor se cargan en el orden en que aparecen los selectores. Si varios selectores recuperan los pares de clave-valor con la misma clave, el valor del último invalidará cualquier valor cargado antes.
Recorte del prefijo de las claves
Puede recortar el prefijo de las claves si proporciona una lista de prefijos de clave recortados a la propiedad AzureAppConfigurationOptions.trimKeyPrefixes.
Azure App Configuration admite la referencia a secretos almacenados en Azure Key Vault. En App Configuration, puede crear claves que se asignen a secretos almacenados en Key Vault. Los secretos se almacenan de forma segura en Key Vault, pero se puede acceder a ellos como cualquier otra configuración una vez que se carguen.
La biblioteca de proveedores de configuración recupera las referencias de Key Vault, como hace para cualquier otra clave almacenada en App Configuration. Como el cliente reconoce las claves como referencias de Key Vault, tienen un tipo de contenido único y el cliente se conectará a Key Vault a fin de recuperar sus valores para la aplicación. Debe configurar la propiedad AzureAppConfigurationOptions.KeyVaultOptions con la credencial adecuada para permitir que el proveedor de configuración se conecte a Azure Key Vault.
También puede proporcionar la instancia de SecretClient directamente a KeyVaultOptions. De este modo, puede personalizar las opciones al crear SecretClient.
La actualización dinámica de las configuraciones le permite extraer sus valores más recientes del almacén de App Configuration sin tener que reiniciar la aplicación. Puede establecer AzureAppConfigurationOptions.refreshOptions para habilitar las opciones de actualización y configurar la actualización. La configuración cargada se actualizará cuando se detecte un cambio de los pares de clave-valor seleccionados en el servidor. De forma predeterminada, se usa un intervalo de actualización de 30 segundos, pero puede invalidarlo con la propiedad refreshIntervalInMs.
La configuración de refreshOptions por sí sola no actualizará automáticamente la configuración. Debe llamar al método refresh en la instancia de AzureAppConfiguration devuelta por el método load para desencadenar una actualización.
TypeScript
// this call is not blocking, the configuration will be updated asynchronously
settings.refresh();
Este diseño evita solicitudes innecesarias a App Configuration cuando la aplicación está inactiva. Debe incluir la llamada refresh en la que se produce la actividad de la aplicación. Esto se conoce como actualización de configuración controlada por actividad. Por ejemplo, puede llamar a refresh al procesar una solicitud entrante o dentro de una iteración en la que se realiza una tarea compleja.
TypeScript
const server = express();
// Use an express middleware to refresh configuration whenever a request comes in
server.use((req, res, next) => {
settings.refresh();
next();
})
Incluso si se produce un error en la llamada de la actualización por cualquier motivo, la aplicación seguirá usando la configuración almacenada en caché. Se realizará otro intento cuando se haya superado el intervalo de actualización configurado y la actividad de la aplicación desencadene la llamada a la actualización. Llamar a refresh es una operación no operativa antes de que transcurre el intervalo de actualización configurado, por lo que su impacto en el rendimiento es mínimo incluso si se llama con frecuencia.
Devolución de llamada de actualización personalizada
El método onRefresh permite realizar funciones de devolución de llamada personalizadas que se invocarán cada vez que la configuración local se actualice correctamente con los cambios del almacén de Azure App Configuration. Devuelve un objeto Disposable, que se puede usar para quitar la devolución de llamada registrada
TypeScript
const settings = await load(endpoint, credential, {
refreshOptions: {
enabled: true
}
});
const disposer = settings.onRefresh(() => {
console.log("Config refreshed.");
});
settings.refresh();
// Once the refresh is successful, the callback function you registered will be executed.// In this example, the message "Config refreshed" will be printed.
disposer.dispose();
Actualización en la clave de Sentinel (heredada)
Una clave de Sentinel es una clave que se actualiza después de completar el cambio de todas las demás claves. El proveedor de configuración supervisará la clave de Sentinel en lugar de todos los pares de clave-valor seleccionados. Cuando se detecta un cambio, la aplicación actualiza todos los valores de configuración.
Puede crear marcas de características en Azure App Configuration. De manera predeterminada, el proveedor de configuración no cargará las marcas de características. Puede habilitar la carga y actualización de marcas de características mediante la propiedad AzureAppConfigurationOptions.featureFlagOptions al llamar al método load.
TypeScript
const settings = await load(endpoint, credential, {
featureFlagOptions: {
enabled: true,
selectors: [ { keyFilter: "*", labelFilter: "Prod" } ],
refresh: {
enabled: true, // the refresh for feature flags need to be enbaled in addition to key-values
refreshIntervalInMs: 10_000
}
}
});
Nota
Si se habilita featureFlagOptions y no se especifica ningún selector, el proveedor de configuración cargará todas las marcas de características sin etiqueta desde el almacén de App Configuration.
Administración de características
La biblioteca de administración de características proporciona una manera de desarrollar y exponer la funcionalidad de la aplicación en función de las marcas de características. La biblioteca de administración de características está diseñada para funcionar junto con la biblioteca de proveedores de configuración. El proveedor de configuración cargará todas las marcas de características seleccionadas en la configuración de la lista feature_flags de la sección feature_management. La biblioteca de administración de características consumirá y administrará las marcas de características cargadas para la aplicación.
Para más información sobre cómo usar la biblioteca de administración de características de JavaScript, vaya al inicio rápido de características.
Obtenga información sobre cómo usar el servicio de Azure App Configuration para administrar y proteger de forma centralizada las opciones de configuración, así como administrar las características de la aplicación.
En este inicio rápido se crea una aplicación de Node.js con Azure App Configuration para centralizar el almacenamiento y la administración de la configuración de aplicaciones de forma independiente del código.