Partekatu honen bidez:


Creación de una conexión de historial de datos para Azure Digital Twins

El historial de datos es una característica de Azure Digital Twins para historizar automáticamente las actualizaciones de grafos en Azure Data Explorer. Estos datos se pueden consultar mediante el complemento de consulta de Azure Digital Twins para Azure Data Explorer para obtener información sobre su entorno a lo largo del tiempo.

En este artículo se muestra cómo configurar una conexión de historial de datos en funcionamiento entre Azure Digital Twins y Azure Data Explorer. Usa la CLI de Azure y el Portal de Azure para configurar y conectar los recursos de historial de datos necesarios, incluidos:

También contiene un gráfico gemelo de ejemplo que puede usar para ver las actualizaciones de grafos historizados en Azure Data Explorer.

Sugerencia

Aunque en este artículo se usa Azure Portal, también puede trabajar con el historial de datos mediante la versión 31-05-2022 de las API de REST.

Requisitos previos

Preparación del entorno para la CLI de Azure

Nota:

También puede usar Azure Cloud Shell en el entorno de PowerShell en lugar del entorno de Bash, si lo prefiere. Los comandos de esta página están escritos para el entorno de Bash, por lo que pueden requerir algunos pequeños ajustes para ejecutarse en PowerShell.

Configuración de la sesión de la CLI

Para empezar a trabajar con Azure Digital Twins en la CLI, primero es necesario iniciar sesión y establecer el contexto de la CLI en su suscripción para esta sesión. Ejecute estos comandos en la ventana de la CLI:

az login
az account set --subscription "<your-Azure-subscription-ID>"

Sugerencia

En el comando anterior, también puede utilizar el nombre de la suscripción en lugar del identificador.

Si esta es la primera vez que usa esta suscripción con Azure Digital Twins, ejecute este comando para registrarse con el espacio de nombres de Azure Digital Twins. (Si no está seguro, es correcto volver a ejecutarlo aunque lo haya hecho en algún momento del pasado).

az provider register --namespace 'Microsoft.DigitalTwins'

A continuación, agregará la Extensión de Microsoft Azure IoT para la CLI de Azure para habilitar los comandos e interactuar con Azure Digital Twins y otros servicios IoT. Ejecute este comando para asegurarse de que tiene la versión más reciente de la extensión:

az extension add --upgrade --name azure-iot

Ahora ya está listo para trabajar con Azure Digital Twins en la CLI de Azure.

Para comprobarlo, puede ejecutar az dt --help en cualquier momento para ver una lista de los comandos de nivel superior de Azure Digital Twins que están disponibles.

Configuración de variables locales para la sesión de la CLI

En este artículo se proporcionan comandos de la CLI que puede usar para crear los recursos del historial de datos. Para facilitar la copia y ejecución de esos comandos más adelante, puede configurar ahora variables locales en la sesión de la CLI y, a continuación, hacer referencia a esas variables más adelante en los comandos de la CLI al crear los recursos. Actualice los marcadores de posición (identificados con corchetes <...>) en los comandos siguientes y ejecute estos comandos para crear las variables. Asegúrese de seguir las reglas de nomenclatura descritas en los comentarios. Estos valores se usarán más adelante al crear los nuevos recursos.

Nota:

Estos comandos están escritos para el entorno de Bash. Se pueden ajustar para PowerShell si prefiere usar un entorno de la CLI de PowerShell.

## General Setup
location="<your-resource-region>"
resourcegroup="<your-resource-group-name>"

## Azure Digital Twins Setup
# Instance name can contain letters, numbers, and hyphens. It must start and end with a letter or number, and be between 4 and 62 characters long.
dtname="<name-for-your-digital-twins-instance>"
# Connection name can contain letters, numbers, and hyphens. It must contain at least one letter, and be between 3 and 50 characters long.
connectionname="<name-for-your-data-history-connection>"

## Event Hub Setup
# Namespace can contain letters, numbers, and hyphens. It must start with a letter, end with a letter or number, and be between 6 and 50 characters long.
eventhubnamespace="<name-for-your-event-hub-namespace>"
# Event hub name can contain only letters, numbers, periods, hyphens and underscores. It must start and end with a letter or number.
eventhub="<name-for-your-event-hub>"

## Azure Data Explorer Setup
# Cluster name can contain only lowercase alphanumeric characters. It must start with a letter, and be between 4 and 22 characters long.
clustername="<name-for-your-cluster>"  
# Database name can contain only alphanumeric, spaces, dash and dot characters, and be up to 260 characters in length.
databasename="<name-for-your-database>"

# Enter a name for the table where relationship create and delete events will be stored.
relationshiplifecycletablename="<name-for-your-relationship-lifecycle-events-table>"
# Enter a name for the table where twin create and delete events will be stored.
twinlifecycletablename="<name-for-your-twin-lifecycle-events-table>"
# Optionally, enter a custom name for the table where twin property updates will be stored. If not provided, the table will be named AdtPropertyEvents.
twinpropertytablename="<name-for-your-twin-property-events-table>"

Creación de una instancia de Azure Digital Twins con una identidad administrada

Si ya tiene una instancia de Azure Digital Twins, asegúrese de que ha habilitado una identidad administrada asignada por el sistema para ella.

Si no tiene una instancia de Azure Digital Twins, siga las instrucciones de Creación de la instancia con una identidad administrada para crear por primera vez una instancia de Azure Digital Twins con una identidad administrada asignada por el sistema.

Después, asegúrese de tener el rol de Propietario de datos de Azure Digital Twins en la instancia. Encontrará instrucciones en Configuración de permisos de acceso de usuario.

Si desea agregar el nombre de la instancia a las variables locales de la CLI para que se conecte automáticamente a los comandos posteriores copiados de este artículo, almacénelo en la variable dtname de la siguiente manera:

dtname="<name-of-your-instance>"

Creación de un espacio de nombres Centros de eventos y un centro de eventos

El siguiente paso consiste en crear un espacio de nombres Centros de eventos y un centro de eventos. Este centro recibirá notificaciones de actualización de propiedades y ciclo de vida de grafos de la instancia de Azure Digital Twins y, a continuación, reenvía los mensajes al clúster de Azure Data Explorer de destino.

Como parte de la configuración de conexión del historial de datos más adelante, debe conceder a la instancia de Azure Digital Twins el rol de Propietario de datos de Centros de eventos de Azure en el recurso del centro de eventos.

Para obtener más información sobre Centros de eventos y sus funcionalidades, consulte la documentación sobre Centros de eventos.

Nota:

Al configurar el historial de datos, la autorización local debe estar habilitada en el centro de eventos. Si, en última instancia, quiere deshabilitar la autorización local en el centro de eventos, deshabilite la autorización después de configurar la conexión. También deberá ajustar algunos permisos, que se describen en Restringir el acceso de red a los recursos del historial de datos más adelante en este artículo.

Use los siguientes comandos de la CLI para crear los recursos necesarios. Los comandos usan varias variables locales ($location, $resourcegroup, $eventhubnamespace y $eventhub) creadas anteriormente en Configuración de variables locales para la sesión de la CLI.

Creación de un espacio de nombres Centros de eventos:

az eventhubs namespace create --name $eventhubnamespace --resource-group $resourcegroup --location $location

Creación de un centro de eventos en el espacio de nombres:

az eventhubs eventhub create --name $eventhub --resource-group $resourcegroup --namespace-name $eventhubnamespace

Creación de un clúster Kusto (Azure Data Explorer) y una base de datos

A continuación, cree un clúster Kusto (Azure Data Explorer) y una base de datos para recibir los datos de Azure Digital Twins.

Como parte de la configuración de conexión del historial de datos más adelante, debe conceder a la instancia de Azure Digital Twins el rol de Colaborador en al menos la base de datos (también se puede establecer en el ámbito del clúster) y el rol de Administrador en la base de datos.

Importante

Asegúrese de que el clúster tiene habilitado el acceso a la red pública. Si el clúster de Azure Data Explorer tiene deshabilitado el acceso a la red pública, Azure Digital Twins no podrá configurar las tablas y otros artefactos necesarios y se producirá un error en la configuración del historial de datos.

Use los siguientes comandos de la CLI para crear los recursos necesarios. Los comandos usan varias variables locales ($location, $resourcegroup, $clustername y $databasename) creadas anteriormente en Configuración de variables locales para la sesión de la CLI.

Comience agregando la extensión Kusto a la sesión de la CLI si no lo ha hecho todavía.

az extension add --name kusto

A continuación, cree el clúster Kusto. El comando siguiente requiere entre 5 y 10 minutos para ejecutarse y creará un clúster E2a v4 en el nivel de desarrollador. Este tipo de clúster tiene un único nodo para el motor y el clúster de administración de datos, y es aplicable a escenarios de desarrollo y pruebas. Para más información sobre los niveles de Azure Data Explorer y cómo seleccionar las opciones correctas para la carga de trabajo de producción, consulte Selección de la SKU de proceso correcta para el clúster de Azure Data Explorer y Precios de Azure Data Explorer.

az kusto cluster create --cluster-name $clustername --sku name="Dev(No SLA)_Standard_E2a_v4" tier="Basic" --resource-group $resourcegroup --location $location --type SystemAssigned

Cree una base de datos en el nuevo clúster Kusto (con el nombre del clúster anterior y en la misma ubicación). Esta base de datos se usará para almacenar datos contextualizados de Azure Digital Twins. El comando siguiente crea una base de datos con un período de eliminación temporal de 365 días y un período de caché en caliente de 31 días. Para más información sobre las opciones disponibles para este comando, consulte creación de una base de datos az kusto.

az kusto database create --cluster-name $clustername --database-name $databasename --resource-group $resourcegroup --read-write-database soft-delete-period=P365D hot-cache-period=P31D location=$location

Configuración de la conexión del historial de datos

Ahora que ha creado los recursos necesarios, use el comando de esta sección para crear una conexión de historial de datos entre la instancia de Azure Digital Twins, el centro de eventos y el clúster de Azure Data Explorer.

Este comando también creará tres tablas en la base de datos de Azure Data Explorer para almacenar actualizaciones de propiedades gemelas, eventos de ciclo de vida de gemelos y eventos del ciclo de vida de las relaciones, respectivamente. Para más información sobre estos tipos de datos historizados y sus tablas correspondientes de Azure Data Explorer, consulte Tipos de datos y esquemas.

Use el comando de esta sección para crear una conexión del historial de datos y las tablas de Azure Data Explorer. El comando siempre creará una tabla para los eventos de propiedad de gemelos historizados e incluye parámetros para crear las tablas para el ciclo de vida de las relaciones y los eventos del ciclo de vida de los gemelos.

Nota:

De forma predeterminada, este comando supone que todos los recursos están en el mismo grupo de recursos que la instancia de Azure Digital Twins. Puede especificar recursos que se encuentran en diferentes grupos de recursos mediante las opciones de parámetro para este comando.

El comando siguiente usa variables locales que se crearon anteriormente en Configuración de variables locales para la sesión de la CLI y tiene varios parámetros, incluidos...

  • Los nombres del ciclo de vida de las relaciones y las tablas de ciclo de vida de gemelos en Azure Data Explorer (estos parámetros son opcionales si no desea historizar estos tipos de eventos, pero es necesario si desea historizar estos tipos de eventos).
  • Parámetro opcional para especificar el nombre de la tabla de eventos de propiedad gemela (si no se proporciona este valor, esta tabla se denominará AdtPropertyEvents de forma predeterminada). Si no desea especificar otro nombre, quite el --adx-property-events-table parámetro del comando antes de ejecutarlo.
  • El parámetro --adx-record-removals opcional para activar la historización de eliminaciones de propiedades gemelas (eventos que quitan propiedades completamente)
az dt data-history connection create adx --dt-name $dtname --cn $connectionname --adx-cluster-name $clustername --adx-database-name $databasename --eventhub $eventhub --eventhub-namespace $eventhubnamespace --adx-property-events-table $twinpropertytablename --adx-twin-events-table $twinlifecycletablename --adx-relationship-events-table $relationshiplifecycletablename --adx-record-removals true

Al ejecutar el comando anterior, se le ofrecerá la opción de asignar los permisos necesarios para configurar la conexión del historial de datos en su nombre (si ya ha asignado los permisos necesarios, puede omitir estos mensajes). Estos permisos se conceden a la identidad administrada de la instancia de Azure Digital Twins. Los roles mínimos necesarios son:

  • Propietario de datos de Centros de eventos de Azure en el centro de eventos
  • Colaborador con ámbito al menos en la base de datos especificada (también se puede establecer en el ámbito del clúster)
  • Asignación de entidad de seguridad de base de datos con el rol de Administrador (para la creación y administración de tablas) con ámbito en la base de datos especificada

Para el funcionamiento normal del plano de datos, estos roles se pueden reducir a un único rol de Remitente de datos de Centros de eventos de Azure, si lo desea.

Después de configurar la conexión del historial de datos, opcionalmente puede quitar los roles concedidos a la instancia de Azure Digital Twins para acceder a los recursos de Centros de eventos y de Azure Data Explorer. Para usar el historial de datos, el único rol que la instancia necesita en el futuro es Remitente de datos de Centros de eventos de Azure (o un rol superior que incluya estos permisos, como Propietario de datos de Centros de eventos de Azure) en el recurso Centros de eventos.

Nota:

Una vez configurada la conexión, la configuración predeterminada en el clúster de Azure Data Explorer dará como resultado una latencia de ingesta de aproximadamente 10 minutos o menos. Puede reducir esta latencia habilitando la ingesta de streaming (menos de 10 segundos de latencia) o una directiva de procesamiento de ingesta por lotes. Para más información sobre la latencia de ingesta de Azure Data Explorer, consulte Latencia de ingesta de un extremo a otro.

Restricción del acceso de red a los recursos del historial de datos

Si desea restringir el acceso de red a los recursos implicados en el historial de datos (la instancia de Azure Digital Twins, el centro de eventos o el clúster de Azure Data Explorer), debe establecer esas restricciones después de configurar la conexión del historial de datos. Esto incluye deshabilitar el acceso local para los recursos, entre otras medidas para reducir el acceso a la red.

Para asegurarse de que los recursos del historial de datos se pueden comunicar entre sí, también debe modificar la conexión de datos para que la base de datos de Azure Data Explorer use una identidad administrada asignada por el sistema.

Siga el orden de los pasos que se indican a continuación para asegurarse de que la conexión del historial de datos esté configurada correctamente cuando los recursos necesiten un acceso de red reducido.

  1. Asegúrese de que la autorización local está habilitada en los recursos del historial de datos (la instancia de Azure Digital Twins, el centro de eventos y el clúster de Azure Data Explorer).
  2. Creación de la conexión del historial de datos
  3. Actualice la conexión de datos de la base de datos de Azure Data Explorer para usar una identidad administrada asignada por el sistema. En Azure Portal, puede hacerlo; para ello, vaya al clúster de Azure Data Explorer y use Bases de datos en el menú para ir a la base de datos del historial de datos. En el menú de la base de datos, seleccione Conexiones de datos. En la entrada de tabla de la conexión del historial de datos, debería ver la opción Asignar identidad administrada, donde puede elegir Asignado por el sistema. Screenshot of the option to assign a managed identity to a data connection in the Azure portal.
  4. Ahora, puede deshabilitar la autorización local o establecer otras restricciones de red para los recursos deseados cambiando la configuración de acceso en la instancia de Azure Digital Twins, el centro de eventos o el clúster de Azure Data Explorer.

Solución de problemas de configuración de conexión

Estos son algunos errores comunes que puede encontrar al configurar una conexión del historial de datos y cómo resolverlos.

  • Si tiene el acceso a la red pública deshabilitado para el clúster de Azure Data Explorer, se producirá un error en el que el servicio no pudo crear la conexión del historial de datos, con el mensaje "El recurso no pudo ACTUAR debido a un error interno del servidor". Se producirá un error en la configuración del historial de datos si el clúster de Azure Data Explorer tiene deshabilitado el acceso a la red pública, ya que Azure Digital Twins no podrá configurar las tablas y otros artefactos necesarios.
  • (usuarios de la CLI) Si se produce el error "No se pudo crear la conexión de instancia de Azure Digital Twins. No se puede crear la tabla y la regla de asignación en la base de datos. Compruebe los permisos de Azure Database Explorer y ejecute az login para actualizar las credenciales», resuelva el error agregándose a sí mismo como AllDatabasesAdmin en Permisos en el clúster de Azure Data Explorer.
  • (Usuarios de Cloud Shell) Si usa Cloud Shell y encuentra el error "No se pudo conectar a MSI. Asegúrese de que MSI está configurado correctamente», pruebe a ejecutar el comando con una instalación local de la CLI de Azure en su lugar.

Comprobación con un gráfico de gemelos de ejemplo

Ahora que la conexión del historial de datos está configurada, puede probarla con datos de sus gemelos digitales.

Si ya tiene gemelos en la instancia de Azure Digital Twins que reciben activamente actualizaciones de grafos (incluidas las actualizaciones de propiedades o actualizaciones de gemelos para cambiar la estructura del grafo mediante la creación o eliminación de elementos), puede omitir esta sección y visualizar los resultados mediante sus propios recursos.

De lo contrario, continúe con esta sección para configurar un gráfico de ejemplo que se somete a eventos de ciclo de vida de gemelos y relaciones y genere actualizaciones de propiedades gemelas.

Puede configurar un gráfico de ejemplo para este escenario mediante el Simulador de datos de Azure Digital Twins. El simulador de datos de Azure Digital Twins crea gemelos y relaciones en la instancia de Azure Digital Twins y inserta continuamente las actualizaciones de propiedades en los gemelos.

Creación de un gráfico de ejemplo

Puede usar el Simulador de datos de Azure Digital Twins para aprovisionar un gráfico de gemelos de ejemplo e insertar datos de propiedades en él. El gráfico de gemelos creado aquí modela los procesos de pasteurización para una empresa de productos lácteos.

Para empezar, abra el Simulador de datos de Azure Digital Twins en el explorador. Establezca estos campos:

  • Dirección URL de la instancia: escriba el nombre de host de la instancia de Azure Digital Twins. El nombre de host se puede encontrar en la página del portal de la instancia y tiene un formato como <Azure-Digital-Twins-instance-name>.api.<region-code>.digitaltwins.azure.net.
  • Tipo de simulación: seleccione Dairy facility (Instalación lechera) en el menú desplegable.

Seleccione Generar entorno.

Screenshot of the Azure Digital Twins Data simulator.

Verá mensajes de confirmación en la pantalla a medida que se crean modelos, gemelos y relaciones en su entorno. Esto también generará eventos de creación de gemelos y relaciones, que se historizarán en Azure Data Explorer como eventos de ciclo de vida de gemelos y relaciones, respectivamente.

Cuando la simulación esté lista, se habilitará el botón Iniciar simulación. Desplácese hacia abajo y seleccione Iniciar simulación para insertar datos simulados en la instancia de Azure Digital Twins. Para actualizar continuamente los gemelos en la instancia de Azure Digital Twins, mantenga esta ventana del explorador en primer plano en el escritorio y complete otras acciones del explorador en una ventana independiente. Esto generará continuamente eventos de actualizaciones de propiedades gemelas que se historizarán en Azure Data Explorer.

Visualización de las actualizaciones historizadas en Azure Data Explorer

En esta sección se muestra cómo ver los tres tipos de actualizaciones historizadas generadas por el simulador y almacenadas en tablas de Azure Data Explorer.

Comience en el Portal de Azure y vaya al clúster de Azure Data Explorer que ha creado anteriormente. Elija el panel Bases de datos en el menú izquierdo para abrir la vista de base de datos. Busque la base de datos que ha creado para este artículo, active la casilla situada junto a ella y, a continuación, seleccione Consulta.

Screenshot of the Azure portal showing a database in an Azure Data Explorer cluster.

A continuación, expanda el clúster y la base de datos en el panel izquierdo para ver el nombre de las tablas del historial de datos. Debe haber tres: uno para los eventos del ciclo de vida de las relaciones, uno para los eventos de ciclo de vida del gemelo y otro para los eventos de actualización de propiedades gemelas. Usará estos nombres de tabla para ejecutar consultas en las tablas para comprobar y ver los datos historizados.

Screenshot of the Azure portal showing the query view for the database. The name of the data history table is highlighted.

Comprobación de entradas de tabla

Para comprobar que los eventos se están historizando en la base de datos, empiece por copiar el comando siguiente. Tiene un marcador de posición para el nombre de la tabla de eventos del ciclo de vida de la relación y cambiará la ingesta de la tabla al modo por lotes, por lo que ingiere datos de la simulación dinámica cada 10 segundos.

.alter table <relationship-lifecycle-events-table-name> policy ingestionbatching @'{"MaximumBatchingTimeSpan":"00:00:10", "MaximumNumberOfItems": 500, "MaximumRawDataSizeMB": 1024}'

Pegue el comando en la ventana de consulta y reemplace el marcador de posición por el nombre de la tabla de eventos de relación. Seleccione el botón Ejecutar para ejecutar el comando.

Screenshot of the Azure portal showing the query view for the database. The Run button is highlighted.

Repita el comando dos veces más con el nombre de la tabla de eventos de ciclo de vida del gemelo y, a continuación, la tabla de actualización de propiedades para actualizar también el modo de ingesta de las demás tablas.

A continuación, agregue los siguientes comandos a la ventana de consulta y ejecútelos. Cada comando contiene un marcador de posición para el nombre de una de las tablas y los comandos generarán el número de elementos de las tablas.

Nota:

El primer lote de datos ingeridos puede tardar hasta 5 minutos en aparecer.

<relationship-lifecycle-events-table-name>
| count

<twin-lifecycle-events-table-name>
| count

<twin-property-updates-table-name>
| count

Debería ver en los resultados que el recuento de elementos de cada tabla es algo mayor que 0, lo que indica que los eventos de actualización de propiedades y ciclo de vida de las relaciones se están historizando en sus tablas respectivas.

Exploración de la tabla de actualizaciones de propiedades gemelas

En esta sección, hará más exploración con los datos de actualización de la propiedad twin que se encuentra en la tabla.

En primer lugar, ejecute el siguiente comando para ver 100 registros en la tabla:

<twin-property-updates-table-name>
| limit 100

A continuación, ejecute una consulta basada en los datos de los gemelos para ver los datos de serie temporal contextualizados.

Use la consulta siguiente para trazar el flujo de salida de todos los gemelos de la máquina salada en la fábrica de productos lácteos de Oslo de ejemplo. Esta consulta Kusto usa el complemento de Azure Digital Twins para seleccionar los gemelos de interés, los une con la serie temporal del historial de datos de Azure Data Explorer y, a continuación, muestra los resultados. Asegúrese de reemplazar el <ADT-instance-host-name> marcador de posición por el nombre de host de la instancia y el <table-name> marcador de posición por el nombre de la tabla de eventos de propiedad gemela.

let ADTendpoint = "https://<ADT-instance-host-name>";
let ADTquery = ```SELECT SALT_MACHINE.$dtId as tid
FROM DIGITALTWINS FACTORY 
JOIN SALT_MACHINE RELATED FACTORY.contains 
WHERE FACTORY.$dtId = 'OsloFactory'
AND IS_OF_MODEL(SALT_MACHINE , 'dtmi:assetGen:SaltMachine;1')```;
evaluate azure_digital_twins_query_request(ADTendpoint, ADTquery)
| extend Id = tostring(tid)
| join kind=inner (<table-name>) on Id
| extend val_double = todouble(Value)
| where Key == "OutFlow"
| render timechart with (ycolumns = val_double)

Los resultados deberían mostrar los números de flujo de salida que cambian con el tiempo.

Screenshot of the Azure portal showing the query view for the database.

Solución de problemas de conexión

Si no ve datos en Azure Data Explorer, el flujo de datos de historización no funciona correctamente. Para investigar el problema, vea el espacio de nombres de Event Hubs en Azure Portal, que muestra gráficos que muestran el flujo de mensajes dentro y fuera del espacio de nombres. Esto le permitirá comprobar tanto el flujo de mensajes entrantes de Azure Digital Twins como los mensajes salientes a Azure Data Explorer, para ayudarle a identificar qué parte del flujo no funciona.

Screenshot of the Azure portal showing an Event Hubs namespace for the simulated environment.

Pasos siguientes

Para seguir explorando el escenario de productos lácteos, puede ver más consultas de ejemplo en GitHub, que muestran cómo puede supervisar el rendimiento del procesamiento de productos lácteos en función del tipo de máquina, la fábrica, el técnico de mantenimiento y varias combinaciones de estos parámetros.

Para crear paneles de Grafana que visualicen el rendimiento del procesamiento de productos lácteos, lea Creación de paneles con Azure Digital Twins, Azure Data Explorer y Grafana.

Para más información sobre el uso del complemento de consulta de Azure Digital Twins para Azure Data Explorer, consulte Consultar con el complemento de Azure Data Explorer y esta entrada de blog. También puede leer más sobre el complemento aquí: Consultar con el complemento de Data Explorer Azure.