Inicio rápido: Creación de un trabajo de Azure Stream Analytics mediante la CLI de Azure

En este inicio rápido se usará la CLI de Azure para definir un trabajo de Stream Analytics que filtra mensajes del sensor en tiempo real con una lectura de la temperatura superior a 27. El trabajo de Stream Analytics lee los datos de una instancia de IoT Hub, los transforma y escribe los datos de salida en un contenedor de Blob Storage. Un simulador en línea de Raspberry Pi genera los datos de entrada de esta guía de inicio rápido.

Antes de empezar

Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

Requisitos previos

  • Cree un grupo de recursos. Todos los recursos de Azure se deben implementar en un grupo de recursos. Los grupos de recursos le permiten organizar y administrar los recursos relacionados de Azure.

    Para este inicio rápido, cree un grupo de recursos denominado streamanalyticsrg en la ubicación eastus con el comando az group create siguiente:

    az group create --name streamanalyticsrg --location eastus
    

Preparación de los datos de entrada

Antes de definir el trabajo de Stream Analytics, prepare los datos que se usan para la entrada del trabajo. Los siguientes comandos de la CLI de Azure preparan los datos de entrada que requiere el trabajo.

  1. Para crear un centro de IoT Hub, use el comando az iot hub create. En este ejemplo se va a crear un centro de IoT Hub llamado MyASAIoTHub. Como los nombres de IoT Hub deben ser únicos globalmente, es posible que tenga que cambiar el nombre si ya se está usando. Establezca la SKU en F1 para usar el nivel gratuito si está disponible con su suscripción. Si no es así, elija el siguiente nivel más bajo.

    iotHubName=MyASAIoTHub
    az iot hub create --name $iotHubName --resource-group streamanalyticsrg --sku S1
    

    Una vez creado el centro de IoT Hub, obtenga la cadena de conexión de IoT Hub mediante el comando az iot hub connection-string show. Copie toda la cadena de conexión y guárdela. Se usa al agregar el IoT Hub como entrada al trabajo de Stream Analytics.

    az iot hub connection-string show --hub-name $iotHubName
    
  2. Agregue un dispositivo a IoT Hub con el comando az iothub device-identity create. En este ejemplo se crea un dispositivo denominado MyASAIoTDevice.

    az iot hub device-identity create --hub-name $iotHubName --device-id "MyASAIoTDevice"
    
  3. Obtenga la cadena de conexión del dispositivo con el comando az iot hub device-identity connection-string show. Copie la cadena de conexión completa y guárdela para cuando cree el simulador de Raspberry Pi.

    az iot hub device-identity connection-string show --hub-name $iotHubName --device-id "MyASAIoTDevice" --output table
    

    Ejemplo de salida:

    HostName=MyASAIoTHub.azure-devices.net;DeviceId=MyASAIoTDevice;SharedAccessKey=a2mnUsg52+NIgYudxYYUNXI67r0JmNubmfVafojG8=
    

Creación de una cuenta de almacenamiento de blobs

Los siguientes comandos de la CLI de Azure crean una cuenta de almacenamiento de blob que se usa para la salida del trabajo.

  1. Las cuentas de almacenamiento de uso general se crean con el comando az storage account create. Las cuentas de almacenamiento de uso general se pueden para los cuatro servicios: blobs, archivos, tablas y colas.

    storageAccountName="asatutorialstorage$RANDOM"
    az storage account create \
        --name $storageAccountName \
        --resource-group streamanalyticsrg \
        --location eastus \
        --sku Standard_ZRS \
        --encryption-services blob
    
  2. Obtenga la clave de su cuenta de almacenamiento. Para ello, debe ejecutar el comando az storage account keys list.

    key=$(az storage account keys list -g streamanalyticsrg -n $storageAccountName --query "[0].value" -o tsv)
    echo $key
    

    Importante

    Anote la clave de acceso de la cuenta de almacenamiento de Azure. Usará esta clave más adelante en este inicio rápido.

  3. Cree un contenedor denominado state para almacenar blobs con el comando az storage container create. Use la clave de la cuenta de almacenamiento para autorizar la operación de creación del contenedor. Para obtener más información sobre la autorización de operaciones de datos con la CLI de Azure, consulte Autorización del acceso a los datos de blobs o colas con la CLI de Azure.

    az storage container create \
        --account-name $storageAccountName \
        --name state \
        --account-key $key \
        --auth-mode key
    

Creación de un trabajo de Stream Analytics

Cree un trabajo de Stream Analytics con el comando az stream-analytics job create.

az stream-analytics job create \
    --job-name "streamanalyticsjob" \
    --resource-group "streamanalyticsrg" \
    --location "eastus" \
    --output-error-policy "Drop" \
    --out-of-order-policy "Drop" \
    --order-max-delay 5 \
    --arrival-max-delay 16 \
    --data-locale "en-US"

Configuración de la entrada al trabajo

Agregue una entrada al trabajo mediante el cmdlet az stream-analytics input. Este cmdlet toma como parámetros el nombre del trabajo, el nombre de entrada del trabajo, el nombre del grupo de recursos y las propiedades de entrada en formato JSON. En este ejemplo, creará una instancia de IoT Hub como entrada.

Importante

  • Reemplace IOT HUB ACCESS KEY por el valor de clave de acceso compartido en la cadena de conexión de IoT Hub que guardó. Por ejemplo, si la cadena de conexión de IoT Hub es: HostName=MyASAIoTHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=xxxxxxxxxxxxxx=, el valor de clave de acceso compartido es xxxxxxxxxxxxxx=. Al reemplazar el valor, asegúrese de no eliminar el carácter \ (escape) de " (comillas dobles).
  • Actualice el valor de iotHubNamespace en el comando siguiente si usó un nombre distinto de MyASAIoTHub. Ejecute echo $iotHubName para ver el nombre del IoT Hub.
az stream-analytics input create \
    --properties "{\"type\":\"Stream\",\"datasource\":{\"type\":\"Microsoft.Devices/IotHubs\",\"properties\":{\"consumerGroupName\":\"\$Default\",\"endpoint\":\"messages/events\",\"iotHubNamespace\":\"MyASAIoTHub\",\"sharedAccessPolicyKey\":\"IOT HUB ACCESS KEY\",\"sharedAccessPolicyName\":\"iothubowner\"}},\"serialization\":{\"type\":\"Json\",\"encoding\":\"UTF8\"}}" \
    --input-name "asaiotinput" \
    --job-name "streamanalyticsjob" \
    --resource-group "streamanalyticsrg"

Configuración de la salida al trabajo

Agregue una salida al trabajo mediante el cmdlet az stream-analytics output create. Este cmdlet toma el nombre del trabajo, el nombre de salida del trabajo, el nombre del grupo de recursos, el origen de datos en formato JSON y el tipo de serialización como parámetros.

Importante

Reemplace STORAGEACCOUNTNAME> por el nombre de la cuenta de Azure Storage y STORAGEACCESSKEY> por la clave de acceso de su cuenta de almacenamiento. Si no anotó estos valores, ejecute los siguientes comandos para obtenerlos: echo $storageAccountName y echo $key. Al reemplazar los valores, asegúrese de no eliminar el carácter \ (escape) de " (comillas dobles).

az stream-analytics output create \
    --job-name streamanalyticsjob \
    --datasource "{\"type\":\"Microsoft.Storage/Blob\",\"properties\":{\"container\":\"state\",\"dateFormat\":\"yyyy/MM/dd\",\"pathPattern\":\"{date}/{time}\",\"storageAccounts\":[{\"accountKey\":\"STORAGEACCESSKEY\",\"accountName\":\"STORAGEACCOUNTNAME\"}],\"timeFormat\":\"HH\"}}" \
    --serialization "{\"type\":\"Json\",\"properties\":{\"format\":\"Array\",\"encoding\":\"UTF8\"}}" \
    --output-name asabloboutput \
    --resource-group streamanalyticsrg

Definir la consulta de transformación

Agregue una transformación a su trabajo mediante el cmdlet az stream-analytics transformation create.

az stream-analytics transformation create \
    --resource-group streamanalyticsrg \
    --job-name streamanalyticsjob \
    --name Transformation \
    --streaming-units "6" \
    --saql "SELECT * INTO asabloboutput FROM asaiotinput WHERE Temperature > 27"

Ejecutar el simulador

  1. Abra el simulador en línea de Raspberry Pi para Azure IoT.

  2. Reemplace el marcador de posición en la línea 15 con toda la cadena de conexión del dispositivo Azure IoT Hub (no la cadena de conexión de IoT Hub) que guardó al principio del inicio rápido.

  3. Seleccione Run (Ejecutar). La salida debe mostrar los datos y mensajes del sensor que se envían a la instancia de IoT Hub.

    Raspberry Pi Azure IoT Online Simulator

Inicio del trabajo de Stream Analytics y consulta de la salida

Inicie el trabajo mediante el cmdlet az stream-analytics job start. Este cmdlet toma como parámetros el nombre del trabajo, el nombre del grupo de recursos, el modo de inicio de salida y el tiempo de inicio. OutputStartMode acepta valores de JobStartTime, CustomTime o LastOutputEventTime.

Después de ejecutar el siguiente cmdlet, devuelve True como salida si el trabajo se inicia.

az stream-analytics job start \
    --resource-group streamanalyticsrg \
    --name streamanalyticsjob \
    --output-start-mode JobStartTime

Espere unos minutos y compruebe que se crea un archivo de salida en el contenedor de blob de state.

Screenshot showing the output file in the State blob container.

Descargue y abra el archivo para ver varias entradas similares a las siguientes:

{
    "messageId": 229,
    "deviceId": "Raspberry Pi Web Client",
    "temperature": 31.85214010589595,
    "humidity": 60.278830289656284,
    "EventProcessedUtcTime": "2023-02-28T22:06:33.5567789Z",
    "PartitionId": 3,
    "EventEnqueuedUtcTime": "2023-02-28T22:05:49.6520000Z",
    "IoTHub": {
        "MessageId": null,
        "CorrelationId": null,
        "ConnectionDeviceId": "MyASAIoTDevice",
        "ConnectionDeviceGenerationId": "638132150746523845",
        "EnqueuedTime": "2023-02-28T22:05:49.6520000Z",
        "StreamId": null
    }
}

Limpieza de recursos

Elimine el grupo de recursos, que eliminará todos los recursos del grupo de recursos, incluido el trabajo de Stream Analytics, IoT Hub y la cuenta de Azure Storage.

az group delete \
    --name streamanalyticsrg \
    --no-wait

Pasos siguientes

En este inicio rápido, ha implementado un sencillo trabajo de Stream Analytics mediante la CLI de Azure. También puede implementar trabajos de Stream Analytics mediante Azure Portal y Visual Studio.

Para aprender a configurar otros orígenes de entrada y realizar la detección en tiempo real, continúe con el siguiente artículo: