Reacción ante los eventos de Azure App Configuration

Los eventos de Azure App Configuration permiten a las aplicaciones reaccionar ante los cambios en los pares clave-valor. Esto se consigue sin necesidad de código complejo ni de servicios de sondeo costosos e ineficientes. En su lugar, se insertan eventos mediante Azure Event Grid a en los suscriptores, como Azure Functions, Azure Logic Apps o incluso su propio cliente de escucha HTTP. De forma crítica, solo paga por lo que utiliza.

Los eventos de Azure App Configuration se envían a Azure Event Grid, que proporciona servicios de entrega confiables para sus aplicaciones mediante directivas de reintento enriquecidas y entrega de mensajes fallidos. Para más información, vea Entrega y reintento de entrega de mensajes de Event Grid.

Entre los escenarios comunes de eventos de App Configuration se incluyen la actualización de la configuración de la aplicación, el desencadenamiento de implementaciones o cualquier flujo de trabajo de configuración. Cuando se realizan pocos cambios en el escenario, pero se requiere una respuesta inmediata, la arquitectura basada en eventos puede ser especialmente eficaz.

Para ver un ejemplo rápido, eche un vistazo a Uso de Event Grid para las notificaciones de cambio de datos.

Diagram that shows Event Grid Model.

Tipos de eventos disponibles

Event Grid usa las suscripciones a eventos para enrutar los mensajes de eventos a los suscriptores. La configuración de Azure App Configuration emite los siguientes tipos de evento:

Tipo de evento Descripción
Microsoft.AppConfiguration.KeyValueModified Se genera cuando se crea o se sustituye un valor de clave.
Microsoft.AppConfiguration.KeyValueDeleted Se genera cuando se elimina un valor de clave.
Microsoft.AppConfiguration.SnapshotCreated Se genera cuando se crea una instantánea.
Microsoft.AppConfiguration.SnapshotModified Se genera cuando se modifica una instantánea.

Esquema del evento

Un evento tiene los siguientes datos de nivel superior:

Propiedad Tipo Description
source string Ruta de acceso completa a los recursos del origen del evento. En este campo no se puede escribir. Event Grid proporciona este valor.
subject string Ruta al asunto del evento definida por el anunciante.
type string Uno de los tipos de eventos registrados para este origen de eventos.
time string La hora de generación del evento en función de la hora UTC del proveedor.
id string Identificador único para el evento
data object Datos del evento de App Configuration.
specversion string Versión de especificación del esquema CloudEvents.

El objeto data tiene las siguientes propiedades:

Evento key-value

Propiedad Tipo Description
key string Clave del valor clave que se ha modificado o eliminado.
label string Etiqueta, si procede, del valor clave que se ha modificado o eliminado.
etag string Para KeyValueModified, la etag del nuevo valor clave. Para KeyValueDeleted, la etag del valor clave que se ha eliminado.
syncToken cadena Token de sincronización que representa el estado del servidor después del evento key-value.

Flujo de eventos

Propiedad Tipo Description
name cadena Nombre de la instantánea que se creó o modificó.
etag cadena Para SnapshotCreated, la ETag del nuevo valor clave. Para SnapshotModified la ETag de la instantánea que se modificó.
syncToken cadena Token de sincronización que representa el estado del servidor después del evento de instantánea.

Evento de ejemplo

En el siguiente ejemplo se muestra el esquema de un evento modificado de valor clave:

[{
  "id": "84e17ea4-66db-4b54-8050-df8f7763f87b",
  "source": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testrg/providers/microsoft.appconfiguration/configurationstores/contoso",
  "subject": "https://contoso.azconfig.io/kv/Foo?label=FizzBuzz",
  "data": {
    "key": "Foo",
    "label": "FizzBuzz",
    "etag": "FnUExLaj2moIi4tJX9AXn9sakm0"
  },
  "type": "Microsoft.AppConfiguration.KeyValueModified",
  "time": "2019-05-31T20:05:03Z",
  "specversion": "1.0"
}]

En el siguiente ejemplo se muestra el esquema de un evento de eliminación de key-value:

[{
  "id": "84e17ea4-66db-4b54-8050-df8f7763f87b",
  "source": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testrg/providers/microsoft.appconfiguration/configurationstores/contoso",
  "subject": "https://contoso.azconfig.io/kv/Foo?label=FizzBuzz",
  "data": {
    "key": "Foo",
    "label": "FizzBuzz",
    "etag": "FnUExLaj2moIi4tJX9AXn9sakm0"
  },
  "type": "Microsoft.AppConfiguration.KeyValueDeleted",
  "time": "2019-05-31T20:05:03Z",
  "specversion": "1.0"
}]

En el ejemplo siguiente se muestra el esquema de un evento de creación de instantánea:

[{
  "source": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testrg/providers/microsoft.appconfiguration/configurationstores/contoso",
  "subject": "https://contoso.azconfig.io/kvsnapshots/Foo",
  "type": "Microsoft.AppConfiguration.SnapshotCreated",
  "time": "2023-09-02T20:05:03.0000000Z",
  "id": "84e17ea4-66db-4b54-8050-df8f7763f87b",
  "data": {
    "name": "Foo",
    "etag": "FnUExLaj2moIi4tJX9AXn9sakm0",
    "syncToken": "zAJw6V16=Njo1IzUxNjQ2NzM=;sn=5164673"
  },
  "specversion": "1.0"
}]

En el siguiente ejemplo se muestra el esquema de un evento de modificación de instantánea:

[{
  "source": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testrg/providers/microsoft.appconfiguration/configurationstores/contoso",
  "subject": "https://contoso.azconfig.io/snapshots/Foo",
  "type": "Microsoft.AppConfiguration.SnapshotModified",
  "time": "2023-09-03T20:05:03.0000000Z",
  "id": "84e17ea4-66db-4b54-8050-df8f7763f87b",
  "data": {
    "name": "Foo",
    "etag": "FnUExLaj2moIi4tJX9AXn9sakm0",
    "syncToken": "zAJw6V16=Njo1IzUxNjQ2NzM=;sn=5164673"
  },
  "specversion": "1.0"
}]

Para más información, consulte el esquema de los eventos de Azure App Configuration.

Prácticas para consumir eventos

Las aplicaciones que administran los eventos de App Configuration deben seguir estos procedimientos recomendados:

  • Se pueden configurar varias suscripciones para enrutar los eventos al mismo controlador de eventos, por lo que no hay que asumir que los eventos procedan de un origen determinado. En su lugar, consulte el tema del mensaje para asegurarse de que la instancia de App Configuration es la que envía el evento.
  • Compruebe eventType y no asuma que todos los eventos que recibe son del tipo que espera.
  • Use los campos etag para saber si la información sobre los objetos está aún actualizada.
  • Utilice los campos del secuenciador para conocer el orden de los eventos en cualquier objeto determinado.
  • Utilice el campo del asunto para acceder al par clave-valor que se ha modificado.

Pasos siguientes

Para más información sobre Event Grid y probar los eventos de Azure App Configuration, consulte: