Démarrage rapide : Créer un travail Azure Stream Analytics avec l’interface de ligne de commande Azure

Dans ce démarrage rapide, vous utiliserez l’interface de ligne de commande Azure pour définir une tâche Stream Analytics qui filtre en temps réel les messages du capteur qui contiennent une température supérieure à 27 degrés. Votre tâche Stream Analytics lit les données à partir d’un IoT Hub, les transforme et écrit les données de sortie dans un conteneur de stockage d’objets blob. Les données d’entrée utilisées dans ce guide de démarrage rapide sont générées par un simulateur en ligne Raspberry Pi.

Avant de commencer

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

Prérequis

  • Créez un groupe de ressources. Toutes les ressources Azure doivent être déployées dans un groupe de ressources. Les groupes de ressources vous permettent d’organiser et de gérer les ressources Azure connexes.

    Pour ce guide de démarrage rapide, créez un groupe de ressources nommé streamanalyticsrg dans la zone eastus à l’aide de la commande az group create suivante :

    az group create --name streamanalyticsrg --location eastus
    

Préparer les données d’entrée

Avant de définir le travail Stream Analytics, préparez les données utilisées pour l’entrée du travail. Les commandes Azure CLI suivantes préparent les données d’entrée requises par la tâche.

  1. Créez un hub IoT à l’aide de la commande az iot hub create. Cet exemple crée un hub IoT appelé MyASAIoTHub. Les noms d’un IoT Hub devant être globalement uniques, vous devrez peut-être modifier le nom s’il est déjà utilisé. Définissez la référence SKU sur F1 pour utiliser le niveau gratuit s’il est disponible avec votre abonnement. Si ce n’est pas le cas, choisissez le niveau le plus bas suivant.

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

    Après avoir créé le IoT Hub, obtenez sa chaîne de connexion à l’aide de la commande az iot hub connection-string show. Copiez la chaîne de connexion complète et enregistrez-la. Vous l’utilisez lorsque vous ajoutez le IoT Hub en entrée de votre tâche Stream Analytics.

    az iot hub connection-string show --hub-name $iotHubName
    
  2. Ajoutez un appareil au hub IoT à l’aide de la commande az iothub device-identity create. Cet exemple crée un appareil appelé MyASAIoTDevice.

    az iot hub device-identity create --hub-name $iotHubName --device-id "MyASAIoTDevice"
    
  3. Obtenez la chaîne de connexion de l’appareil à l’aide de la commande az iot hub device-identity connection-string show. Copiez la chaîne de connexion complète et enregistrez-la, car vous en aurez besoin quand vous créerez le simulateur Raspberry Pi.

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

    Exemple de sortie :

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

Création d’un compte de stockage d’objets blob

Les commandes Azure CLI suivantes créent un compte de stockage d’objets blob utilisé pour la sortie de la tâche.

  1. Créez un compte de stockage à usage général avec la commande az storage account create. Le compte de stockage à usage général peut être utilisé pour les quatre services : objets blob, fichiers, tables et files d’attente.

    storageAccountName="asatutorialstorage$RANDOM"
    az storage account create \
        --name $storageAccountName \
        --resource-group streamanalyticsrg \
        --location eastus \
        --sku Standard_ZRS \
        --encryption-services blob
    
  2. Pour obtenir la clé de votre compte de stockage, exécutez la commande az storage account keys list.

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

    Important

    Notez la clé d’accès du compte de stockage Azure. Vous utiliserez cette clé plus tard au cours de ce démarrage rapide.

  3. Créez un conteneur appelé state pour stocker des objets blob avec la commande az storage container create. Vous utilisez la clé de compte de stockage pour autoriser l’opération de création du conteneur. Pour plus d’informations sur l’autorisation d’opérations de données avec Azure CLI, consultez Autoriser l’accès aux données d’objet blob et de file d’attente avec Azure CLI.

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

Création d’un travail Stream Analytics

Créez un travail Stream Analytics avec la commande 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"

Configurer l’entrée du travail

Ajoutez une entrée à votre travail à l’aide de l’applet de commande az stream-analytics input. Cette cmdlet utilise comme paramètres le nom de la tâche, le nom d’entrée de la tâche, le nom du groupe de ressources et les propriétés d’entrée au format JSON. Dans cet exemple, vous allez créer un hub IoT en tant qu’entrée.

Important

  • Remplacez IOT HUB ACCESS KEY par la valeur de la clé d’accès partagé dans la chaîne de connexion IOT Hub que vous avez enregistrée. Par exemple, si la chaîne de connexion IOT Hub est HostName=MyASAIoTHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=xxxxxxxxxxxxxx=, la valeur de la clé d’accès partagé est xxxxxxxxxxxxxx=. Lorsque vous remplacez la valeur, assurez-vous de ne pas supprimer le \ caractère (échappement) des " (guillemets doubles).
  • Mettez à jour la valeur de iotHubNamespace dans la commande suivante si vous avez utilisé un nom autre que MyASAIoTHub. Exécutez echo $iotHubName pour voir le nom de votre 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"

Configurer la sortie du travail

Ajoutez une sortie à votre travail à l’aide de l’applet de commande az stream-analytics output create. Cette cmdlet prend comme paramètres le nom de la tâche, le nom de sortie de la tâche, le nom du groupe de ressources, la source de données au format JSON et le type de sérialisation.

Important

Remplacez STORAGEACCOUNTNAME> par le nom de votre compte de stockage Azure et STORAGEACCESSKEY> par la clé d’accès de votre compte de stockage. Si vous n’avez pas noté ces valeurs, exécutez les commandes echo $storageAccountName et echo $key pour les obtenir. Lorsque vous remplacez les valeurs, assurez-vous de ne pas supprimer le \ caractère (échappement) des " (guillemets doubles).

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

Définir la requête de transformation

Ajoutez une transformation à votre travail à l’aide de l’applet de commande 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"

Exécuter le simulateur IoT

  1. Ouvrez le simulateur en ligne Azure IoT Raspberry Pi.

  2. Remplacez l’espace réservé à la ligne 15 par la chaîne de connexion d’appareil Azure IoT Hub complète (et non par la chaîne de connexion IoT Hub) que vous avez enregistrée au début du démarrage rapide.

  3. Sélectionnez Exécuter. La sortie doit indiquer les données de capteur et les messages qui sont envoyés à votre hub IoT.

    Raspberry Pi Azure IoT Online Simulator

Démarrer le travail Stream Analytics et observer le résultat

Démarrez le travail à l’aide de l’applet de commande az stream-analytics job start. Cette applet de commande prend le nom du travail, le nom du groupe de ressources, le mode de démarrage de la sortie et l’heure de démarrage comme paramètres. OutputStartMode accepte les valeurs de JobStartTime, CustomTime ou LastOutputEventTime.

Après son exécution, l’applet de commande ci-après renvoie la valeur True en guise de sortie si le travail démarre.

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

Attendez quelques minutes, puis vérifiez qu’un fichier de sortie est créé dans le conteneur d’objets blob state.

Screenshot showing the output file in the State blob container.

Téléchargez et ouvrez le fichier pour afficher plusieurs entrées similaires à l’entrée suivante :

{
    "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
    }
}

Nettoyer les ressources

Supprimez le groupe de ressources, cela supprimera toutes les ressources du groupe de ressources, y compris la tâche Stream Analytics, IoT Hub et le compte de stockage Azure.

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

Étapes suivantes

Dans ce guide de démarrage rapide, vous avez déployé un travail Stream Analytics simple à l’aide d’Azure CLI. Vous pouvez également déployer des travaux Stream Analytics à l’aide du Portail Azure et de Visual Studio.

Pour savoir comment configurer d’autres sources d’entrée et effectuer une détection en temps réel, passez à l’article suivant :