biblioteca cliente de App Configuration para JavaScript
Azure App Configuration es un servicio administrado que ayuda a los desarrolladores a centralizar su configuración de aplicaciones y características de forma sencilla y segura.
Use la biblioteca cliente para App Configuration para:
- Creación de representaciones y asignaciones de claves flexibles
- Etiquetar claves con etiquetas
- Reproducción de la configuración desde cualquier momento dado
- Administrar instantáneas de la configuración de una aplicación
Vínculos principales:
Introducción
Instalar el paquete
npm install @azure/app-configuration
Entornos admitidos actualmente
- Versiones de LTS de Node.js
- Versiones más recientes de Safari, Chrome, Edge y Firefox.
Para más información, consulte la directiva de compatibilidad.
Requisitos previos
- Una suscripción de Azure
- Un recurso de App Configuration
Creación de un recurso de App Configuration
Puede usar Azure Portal o la CLI de Azure para crear un recurso de Azure App Configuration.
Ejemplo (CLI de Azure):
az appconfig create --name <app-configuration-resource-name> --resource-group <resource-group-name> --location eastus
Autenticar el cliente
AppConfigurationClient puede autenticarse mediante una entidad de servicio o mediante un cadena de conexión.
Autenticación con una entidad de servicio
La autenticación a través de la entidad de servicio se realiza mediante:
- Creación de una credencial mediante el
@azure/identity
paquete. - Establecer las reglas de RBAC adecuadas en el recurso AppConfiguration. Puede encontrar más información sobre App Configuration roles aquí.
const azureIdentity = require("@azure/identity");
const appConfig = require("@azure/app-configuration");
const credential = new azureIdentity.DefaultAzureCredential();
const client = new appConfig.AppConfigurationClient(
endpoint, // ex: <https://<your appconfig resource>.azconfig.io>
credential
);
Puede encontrar más información aquí.@azure/identity
Nubes soberanas
Para autenticarse con un recurso en una nube soberana, deberá establecer en authorityHost
las opciones de credenciales o a través de la variable de AZURE_AUTHORITY_HOST
entorno.
const { AppConfigurationClient } = require("@azure/app-configuration");
const { DefaultAzureCredential, AzureAuthorityHosts } = require("@azure/identity");
// Create an AppConfigurationClient that will authenticate through AAD in the China cloud
const client = new AppConfigurationClient(
endpoint, // ex: <https://<your appconfig resource>.azconfig.azure.cn>
new DefaultAzureCredential({ authorityHost: AzureAuthorityHosts.AzureChina })
);
Puede encontrar más información aquí.@azure/identity
Autenticación con un cadena de conexión
Para obtener el cadena de conexión principal de un recurso de App Configuration, puede usar este comando de la CLI de Azure:
az appconfig credential list -g <resource-group-name> -n <app-configuration-resource-name> --query "([?name=='Primary'].connectionString)[0]"
Y en el código ahora puede crear el cliente de App Configuration con el cadena de conexión obtuvo de la CLI de Azure:
const client = new AppConfigurationClient("<connection string>");
Conceptos clave
AppConfigurationClient
tiene algunos cambios de terminología de App Configuration en el portal.
- Los pares clave-valor se representan como
ConfigurationSetting
objetos - El bloqueo y desbloqueo de una configuración se representa en el
isReadOnly
campo , que se puede alternar mediantesetReadOnly
. - Las instantáneas se representan como
ConfigurationSnapshot
objetos.
El cliente sigue una metodología ConfigurationSetting
de diseño sencilla: se puede pasar a cualquier método que tome o ConfigurationSettingParam
ConfigurationSettingId
.
Esto significa que este patrón funciona:
const setting = await client.getConfigurationSetting({
key: "hello"
});
setting.value = "new value!";
await client.setConfigurationSetting(setting);
// fields unrelated to just identifying the setting are simply
// ignored (for instance, the `value` field)
await client.setReadOnly(setting, true);
// delete just needs to identify the setting so other fields are
// just ignored
await client.deleteConfigurationSetting(setting);
o, por ejemplo, volver a obtener una configuración:
let setting = await client.getConfigurationSetting({
key: "hello"
});
// re-get the setting
setting = await client.getConfigurationSetting(setting);
La 2022-11-01-preview
versión de la API admite instantáneas de configuración: copias inmutables y a un momento dado de un almacén de configuración. Las instantáneas se pueden crear con filtros que determinan qué pares clave-valor se encuentran dentro de la instantánea, creando una vista inmutable compuesta del almacén de configuración. 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. Por ejemplo, esta característica se puede usar para crear "instantáneas de configuración de versión" dentro de un App Configuration. Consulte la sección crear y obtener una instantánea en el ejemplo siguiente.
Ejemplos
Creación y obtención de una configuración
const appConfig = require("@azure/app-configuration");
const client = new appConfig.AppConfigurationClient(
"<App Configuration connection string goes here>"
);
async function run() {
const newSetting = await client.setConfigurationSetting({
key: "testkey",
value: "testvalue",
// Labels allow you to create variants of a key tailored
// for specific use-cases like supporting multiple environments.
// /azure/azure-app-configuration/concept-key-value#label-keys
label: "optional-label"
});
let retrievedSetting = await client.getConfigurationSetting({
key: "testkey",
label: "optional-label"
});
console.log("Retrieved value:", retrievedSetting.value);
}
run().catch((err) => console.log("ERROR:", err));
Crear una instantánea
beginCreateSnapshot
proporciona al sondeo que se va a sondear para la creación de la instantánea.
const { AppConfigurationClient } = require("@azure/app-configuration");
const client = new AppConfigurationClient(
"<App Configuration connection string goes here>"
);
async function run() {
const key = "testkey";
const value = "testvalue";
const label = "optional-label";
await client.addConfigurationSetting({
key,
value,
label
});
const poller = await client.beginCreateSnapshot({
name:"testsnapshot",
retentionPeriod: 2592000,
filters: [{keyFilter: key, labelFilter: label}],
});
const snapshot = await poller.pollUntilDone();
}
run().catch((err) => console.log("ERROR:", err));
También puede usar beginCreateSnapshotAndWait
para tener el resultado de la creación directamente después de que se realice el sondeo.
const snapshot = await client.beginCreateSnapshotAndWait({
name:"testsnapshot",
retentionPeriod: 2592000,
filters: [{keyFilter: key, labelFilter: label}],
});
Obtiene una instantánea
const retrievedSnapshot = await client.getSnapshot("testsnapshot");
console.log("Retrieved snapshot:", retrievedSnapshot);
Enumeración de en ConfigurationSetting
la instantánea
let retrievedSnapshotSettings = await client.listConfigurationSettingsForSnapshot("testsnapshot");
for await (const setting of retrievedSnapshotSettings) {
console.log(`Found key: ${setting.key}, label: ${setting.label}`);
}
Enumeración de todas las instantáneas del servicio
let snapshots = await client.listSnapshots();
for await (const snapshot of snapshots) {
console.log(`Found snapshot: ${snapshot.name}`);
}
Recuperar y archivar la instantánea
// Snapshot is in ready status
let archivedSnapshot = await client.archiveSnapshot("testsnapshot");
console.log("Snapshot updated status is:", archivedSnapshot.status);
// Snapshot is in archive status
let recoverSnapshot = await client.recoverSnapshot("testsnapshot");
console.log("Snapshot updated status is:", recoverSnapshot.status);
Solución de problemas
Registro
La habilitación del registro puede ayudar a descubrir información útil sobre los errores. Para ver un registro de solicitudes y respuestas HTTP, establezca la variable de entorno AZURE_LOG_LEVEL
en info
. Como alternativa, el registro se puede habilitar en tiempo de ejecución llamando a setLogLevel
en @azure/logger
:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Para obtener instrucciones más detalladas sobre cómo habilitar los registros, consulte los documentos del paquete @azure/logger.
compatibilidad con React Native
React Native no admite algunas API de JavaScript usadas por esta biblioteca del SDK, por lo que debe proporcionar polyfills para ellos. Consulte nuestro ejemplo de React Native con Expo para obtener más detalles.
Pasos siguientes
En los ejemplos siguientes se muestran las distintas formas en que puede interactuar con App Configuration:
helloworld.ts
- Obtener, establecer y eliminar valores de configuración.helloworldWithLabels.ts
- Use etiquetas para agregar dimensiones adicionales a la configuración de escenarios como beta frente a producción.optimisticConcurrencyViaEtag.ts
- Establecer valores mediante etags para evitar sobrescrituras accidentales.setReadOnlySample.ts
- Marcar la configuración como de solo lectura para evitar la modificación.getSettingOnlyIfChanged.ts
- Obtener una configuración solo si cambió de la última vez que la obtuvo.listRevisions.ts
- Enumera las revisiones de una clave, lo que le permite ver los valores anteriores y cuándo se establecieron.secretReference.ts
- SecretReference representa una configuración que hace referencia a como secreto de KeyVault.snapshot.ts
- Crear, enumerar las opciones de configuración y archivar instantáneas.featureFlag.ts
- Las marcas de características son configuraciones que siguen un esquema JSON específico para el valor.
Puede encontrar ejemplos más detallados en la carpeta samples de GitHub.
Contribuciones
Si desea contribuir a esta biblioteca, lea la guía de contribución para obtener más información sobre cómo compilar y probar el código.
Las pruebas de este módulo son una combinación de pruebas dinámicas y unitarias, que requieren que tenga una instancia de Azure App Configuration. Para ejecutar las pruebas, deberá ejecutar:
rush update
rush build -t @azure/app-configuration
- Cree un archivo .env con estos contenidos en la
sdk\appconfiguration\app-configuration
carpeta :APPCONFIG_CONNECTION_STRING=connection string for your App Configuration instance
cd sdk\appconfiguration\app-configuration
npm run test
.
Vea nuestra carpeta de pruebas para obtener más detalles.
Proyectos relacionados
Azure SDK for JavaScript
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de