Partager via


Démarrage rapide : Créer un travail Azure Stream Analytics à l’aide d’Azure CLI

Dans ce guide de démarrage rapide, vous allez utiliser Azure CLI pour définir un travail Stream Analytics qui filtre les messages de capteur en temps réel avec une lecture de température supérieure à 27. 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 ne disposez pas d’un compte Azure, créez-en un gratuitement avant de commencer.

Conditions préalables

  • 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 à l’emplacement eastus avec 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 le travail.

  1. Créez un hub IoT à l’aide de la commande az iot hub create . Cet exemple crée un hub IoT appelé MyASAIoTHub. Étant donné que les noms IoT Hub doivent être globalement uniques, vous devrez peut-être modifier le nom s’il est déjà pris. 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 lors de l’ajout du hub IoT en tant qu’entrée pour votre tâche Stream Analytics.

    az iot hub connection-string show --hub-name $iotHubName
    
  2. Ajoutez un appareil à IoT Hub à 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. Utilisez la commande az iot hub device-identity connection-string show pour obtenir la chaîne de connexion de l'appareil. 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. Obtenez la clé de votre compte de stockage en exécutant 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 pour le compte de stockage Azure. Vous utiliserez cette clé plus loin dans ce guide de démarrage rapide.

  3. Créez un conteneur nommé 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 des opérations de données avec Azure CLI, consultez Autoriser l’accès aux données d’objet blob ou 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 tâche à l'aide de la cmdlet az stream-analytics input. Cette applet de commande prend le nom du travail, le nom d’entrée du travail, le nom du groupe de ressources et les propriétés d’entrée au format JSON en tant que paramètres. 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 la suivante : 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 la commande suivante si vous avez utilisé un nom autre que MyASAIoTHub. Exécutez echo $iotHubName pour afficher 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 applet de commande prend le nom du travail, le nom de sortie du travail, le nom du groupe de ressources, la source de données au format JSON et le type de sérialisation en tant que paramètres.

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 suivantes pour les obtenir : echo $storageAccountName et echo $key. Lors du remplacement des valeurs, assurez-vous de ne pas supprimer le caractère \ (échappement) pour " (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 tâche en utilisant le 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"

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.

    Simulateur En ligne Azure IoT Raspberry Pi

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

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

Capture d’écran montrant le fichier de sortie dans le conteneur de blob

Téléchargez et ouvrez le fichier pour afficher plusieurs entrées similaires à celles suivantes :

{
    "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, qui supprimera toutes les ressources du groupe de ressources, notamment le travail 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 :