Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las referencias de instantáneas son valores clave especiales que apuntan a una instantánea específica en un almacén de App Configuration. Permiten combinar la seguridad de la configuración inmutable (instantáneas) con la flexibilidad de cambiar dinámicamente qué instantánea consume una aplicación en tiempo de ejecución.
En el uso directo de instantáneas, una aplicación selecciona una instantánea por su nombre en el código. Cambiar la instantánea de destino requiere una nueva implementación o un cambio de configuración en la ruta de código que construye la configuración. Las referencias de instantánea quitan esa restricción: se carga un valor de clave de referencia una vez y, si su nombre de instantánea de destino cambia más adelante, los proveedores de configuración vuelven a cargar automáticamente la configuración en el nuevo conjunto inmutable.
¿Por qué usar referencias de instantáneas?
Las referencias de instantánea proporcionan:
- Actualizaciones sencillas: actualice la instantánea a la que se hace referencia sin tocar el código de la aplicación, incluso durante el tiempo de ejecución.
- Conjuntos de configuración inmutables: cada instantánea permanece sin cambios, conservando las garantías de auditoría y reversión.
Cómo funcionan
Una referencia de instantánea se almacena como un par de clave-valor cuyo valor contiene el nombre de la instantánea que se va a consumir. Cuando un proveedor de configuración carga los pares de clave-valor, las referencias de instantáneas entre los elementos seleccionados se resuelven automáticamente. Los pares de clave-valor de la instantánea a los que se hace referencia se combinan en la configuración de la aplicación. Si la referencia cambia para que apunte a una instantánea diferente, la actualización del proveedor de configuración hace que se cargue el nuevo contenido de la instantánea.
Nota:
No es necesario llamar a una API especializada para optar por referencias de instantáneas. Si selecciona el par de clave-valor que es una referencia de instantánea, la resolución es automática.
Creación de una referencia instantánea
- Abra el almacén de Configuración de la Aplicación en el portal de Azure.
- Seleccione Explorador de configuración.
- Seleccione Crear.
- Seleccione Referencia de instantánea.
- Escriba una clave para la referencia. Opcionalmente, establezca una etiqueta.
- Elija el nombre de la instantánea de destino de la lista (o escríbalo).
- Selecciona Crear.
Una vez creada, la referencia de la instantánea aparecerá junto con otros valores-clave en el Explorador de configuración.
Consumo de referencias de instantáneas
No se requiere ningún código nuevo para usar una referencia de instantánea. Si la clave de una referencia de instantánea forma parte de los valores clave seleccionados al construir la configuración, el proveedor resuelve y carga automáticamente los valores clave de la instantánea a los que se hace referencia. Compárelo con el uso directo de instantáneas en el que se llama explícitamente a una API como SelectSnapshot("SnapshotName"), para corregir la opción de instantánea en el inicio, por lo que el cambio más adelante requiere un cambio de código o una reimplementación.
Actualizar comportamiento
Cuando se configura la actualización, al cambiar el nombre de la instantánea de destino dentro de una referencia de instantánea, la aplicación se mueve sin problemas para usar la nueva instantánea:
- La aplicación se inicia.
- El proveedor de configuración captura los valores de clave seleccionados, incluida una referencia de instantánea.
- El proveedor de configuración resuelve la referencia a la instantánea
Snapshot_Ay carga sus pares de clave-valor. - La referencia de la instantánea se actualiza para apuntar a
Snapshot_B(aún inmutable). - El proveedor de configuración detecta que el par clave-valor de referencia de la instantánea ha sido modificado.
- El proveedor de configuración vuelve a resolverse. Los valores clave de
Snapshot_Ase descargan. La recarga de configuración produce los pares de clave-valor deSnapshot_B.
Nota:
En esta secuencia se supone que ha configurado la actualización de la aplicación. Para obtener más información sobre cómo configurar la actualización, consulte Configuración dinámica.
Ejemplo de referencia de captura de pantalla
En el ejemplo siguiente se muestra una referencia de instantánea
{
"key": "app1/snapshot-reference",
"value": "{\"snapshot_name\":\"referenced-snapshot\"}",
"content_type": "application/json; profile=\"https://azconfig.io/mime-profiles/snapshot-ref\"; charset=utf-8",
"tags": {}
}
Como se mencionó, una referencia de instantánea es un par de clave-valor normal con algunas restricciones añadidas. Los proveedores de configuración identifican las referencias de instantáneas según su tipo de contenido específico. El valor de una referencia de instantánea es un objeto JSON con una propiedad llamada 'name' que apunta a la instantánea de destino.
Tipo de contenido de referencia de instantánea: application/json; profile="https://azconfig.io/mime-profiles/snapshot-ref"; charset=utf-8
Resolución de conflictos clave
Las instantáneas a las que se hace referencia pueden contener claves que entran en conflicto con los valores de clave normales (los que están fuera de una instantánea). Los proveedores de configuración resuelven estos conflictos mediante el valor de la última clave vista. En el caso de las instantáneas, dado que se resuelven inmediatamente al ser vistas, la ordenación lexicográfica de la clave de referencia de la instantánea es un detalle importante al considerar el valor final de una clave determinada cuando ocurren conflictos.
Ejemplo simplificado
Supongamos que el almacén tiene estos pares de clave-valor normales:
key: message
value: hello-world
key: request-limit
value: 100
Y una instantánea que contiene:
key: message
value: bye
key: request-limit
value: 8000
Si se agrega una referencia de instantánea que apunta a la instantánea mencionada anteriormente, la configuración efectiva final depende de la posición lexicográfica de la clave de referencia de instantánea:
| Clave de referencia de instantánea | posición lexicográfica frente a message, request-limit |
Valor final message |
Valor final request-limit |
Por qué |
|---|---|---|---|---|
a-snapshot-reference |
Antes de ambos | hola mundo | 100 | La referencia de la instantánea se resuelve primero; luego, las claves normales posteriores anulan sus duplicados. |
my-snapshot-reference |
Después de message pero antes de request-limit |
Adiós | 100 |
message se ve primero. A continuación, la referencia de instantánea se resuelve e invalida message. Por último, el valor normal request-limit invalida el valor de la instantánea request-limit. |
some-snapshot-reference |
Después de ambos | Adiós | 8.000 | La referencia de instantánea se resuelve por última vez; sus valores invalidan los duplicados anteriores. |
Consideraciones y casos extremos
- Instantánea de destino que falta: si la referencia apunta a un nombre de instantánea que no existe o se archiva más allá de la retención, el proveedor omite la referencia.
- Sin resolución transitiva: si una instantánea a la que se hace referencia contiene un par de clave-valor que es una referencia de instantánea, esa referencia interna no se resuelve.
- Control de acceso: la lectura de una instantánea a través de una referencia requiere permisos de lectura de instantáneas, de forma similar a leer una instantánea directamente.
- Retención o archivado: tenga cuidado al hacer referencia a instantáneas archivadas, ya que una vez que la instantánea expira, la aplicación ya no podrá acceder a la configuración contenida.
Disponibilidad del idioma
| Language | Versión o estado mínimos |
|---|---|
| .NET | 8.4.0+ |
| Java | Trabajo en curso |
| JavaScript | Trabajo en curso |
| Pitón | Trabajo en curso |
| Go | Trabajo en curso |
Pasos siguientes
Para obtener información más detallada, consulte la visión general de las instantáneas.