Schnellstart: Erstellen eines Azure Stream Analytics-Auftrags mit der Azure CLI

In dieser Schnellstartanleitung werden Sie die Azure CLI zum Definieren eines Stream Analytics-Auftrags verwenden, bei dem Echtzeit-Sensormeldungen mit einem Temperaturmesswert von über 27 Grad herausgefiltert werden. Der Stream Analytics-Auftrag liest Daten von IoT Hub, transformiert die Daten und schreibt die Ausgabedaten in einen Container in einem Blobspeicher. Die in dieser Schnellstartanleitung verwendeten Eingabedaten werden von einem Raspberry Pi-Onlinesimulator generiert.

Voraussetzungen

Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.

Voraussetzungen

  • Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.

  • Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.

    • Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.

    • Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.

    • Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.

  • Erstellen Sie eine Ressourcengruppe. Alle Azure-Ressourcen müssen in einer Ressourcengruppe bereitgestellt werden. Mit Ressourcengruppen können verwandte Azure-Ressourcen organisiert und verwaltet werden.

    Erstellen Sie für diese Schnellstartanleitung mit dem folgenden az group create-Befehl eine Ressourcengruppe mit dem Namen streamanalyticsrg am Standort eastus:

    az group create --name streamanalyticsrg --location eastus
    

Vorbereiten der Eingabedaten

Bereiten Sie vor dem Definieren des Stream Analytics-Auftrags die Daten vor, die als Eingabe für den Auftrag verwendet werden sollen. Mit den folgenden Azure CLI-Befehlen werden die erforderlichen Eingabedaten für den Auftrag vorbereitet.

  1. Erstellen Sie mithilfe des Befehls az iot hub create eine IoT Hub-Instanz. In diesem Beispiel wird eine IoT Hub-Instanz mit dem Namen MyASAIoTHub erstellt. Da IoT Hub-Namen global eindeutig sein müssen, müssen Sie den Namen möglicherweise ändern, wenn er bereits vergeben ist. Legen Sie die SKU auf F1 fest, um den Free-Tarif zu nutzen, sofern dieser für Ihr Abonnement verfügbar ist. Wählen Sie andernfalls den niedrigsten verfügbaren Tarif aus.

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

    Nachdem der IoT-Hub erstellt wurde, rufen Sie die IoT Hub-Verbindungszeichenfolge mit dem Befehl az iot hub connection-string show ab. Kopieren Sie die gesamte Verbindungszeichenfolge, und speichern Sie sie. Sie verwenden sie beim Hinzufügen des IoT Hub als Eingabe zu Ihrem Stream Analytics-Auftrag.

    az iot hub connection-string show --hub-name $iotHubName
    
  2. Fügen Sie IoT Hub mit dem Befehl az iothub device-identity create ein Gerät hinzu. In diesem Beispiel wird ein Gerät namens MyASAIoTDevice erstellt.

    az iot hub device-identity create --hub-name $iotHubName --device-id "MyASAIoTDevice"
    
  3. Rufen Sie die Geräteverbindungszeichenfolge mithilfe des Befehls az iot hub device-identity connection-string show ab. Kopieren Sie die komplette Verbindungszeichenfolge, und speichern Sie sie (Sie benötigen sie, wenn Sie den Raspberry Pi-Simulator erstellen).

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

    Ausgabebeispiel:

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

Erstellen eines Blob Storage-Kontos

Mit den folgenden Azure CLI-Befehlen wird ein Blobspeicherkonto erstellt, das für die Auftragsausgabe verwendet wird.

  1. Erstellen Sie mit dem Befehl az storage account create ein allgemeines Speicherkonto. Das allgemeine Speicherkonto kann für alle vier Dienste verwendet werden: Blobs, Files, Tables und Queues.

    storageAccountName="asatutorialstorage$RANDOM"
    az storage account create \
        --name $storageAccountName \
        --resource-group streamanalyticsrg \
        --location eastus \
        --sku Standard_ZRS \
        --encryption-services blob
    
  2. Rufen Sie den Schlüssel für Ihr Speicherkonto ab, indem Sie den Befehlaz storage account keys list ausführen.

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

    Wichtig

    Notieren Sie den Zugriffsschlüssel für das Azure-Speicherkonto. Sie werden diesen Schlüssel weiter unten in dieser Schnellstartanleitung verwenden.

  3. Erstellen Sie mit dem Befehl az storage container create einen Container mit dem Namen state zum Speichern von Blobs. Sie verwenden den Schlüssel des Speicherkontos, um den Vorgang zur Erstellung des Containers zu autorisieren. Weitere Informationen zum Autorisieren von Datenvorgängen mithilfe der Azure CLI finden Sie unter Autorisieren des Zugriffs auf Blob- oder Warteschlangendaten mit der Azure-Befehlszeilenschnittstelle.

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

Erstellen eines Stream Analytics-Auftrags

Erstellen Sie einen Stream Analytics-Auftrag, indem Sie den Befehl az stream-analytics job create verwenden.

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"

Konfigurieren einer Eingabe für den Auftrag

Fügen Sie Ihrem Auftrag eine Eingabe hinzu, indem Sie das Cmdlet az stream-analytics input verwenden. Dieses Cmdlet übernimmt den Auftragsnamen, den Auftragseingabenamen, den Ressourcengruppennamen und die Eingabeeigenschaften im JSON-Format als Parameter. In diesem Beispiel erstellen Sie eine IoT Hub-Instanz als Eingabe.

Wichtig

  • Ersetzen Sie IOT HUB ACCESS KEY durch den Wert des Schlüssels für den gemeinsamen Zugriff in der IOT Hub-Verbindungszeichenfolge, die Sie gespeichert haben. Wenn die IOT Hub-Verbindungszeichenfolge z. B. HostName=MyASAIoTHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=xxxxxxxxxxxxxx= lautet, ist xxxxxxxxxxxxxx= der Wert des Schlüssels für den gemeinsamen Zugriff. Stellen Sie beim Ersetzen des Werts sicher, dass Sie kein \ (Escape-)Zeichen für " (doppelte Anführungszeichen) löschen.
  • Aktualisieren Sie den Wert von iotHubNamespace im folgenden Befehl, wenn Sie einen anderen Namen als MyASAIoTHub verwendet haben. Führen Sie echo $iotHubName aus, um den Namen Ihres IoT Hub zu anzuzeigen.
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"

Konfigurieren einer Ausgabe für den Auftrag

Fügen Sie Ihrem Auftrag eine Ausgabe hinzu, indem Sie das Cmdlet az stream-analytics output create verwenden. Dieses Cmdlet verwendet den Auftragsnamen, den Auftragsausgabenamen, den Ressourcengruppennamen, die Datenquelle im JSON-Format und den Serialisierungstyp als Parameter.

Wichtig

Ersetzen Sie STORAGEACCOUNTNAME> durch den Namen Ihres Azure Storage-Kontos und STORAGEACCESSKEY> durch den Zugriffsschlüssel für Ihr Speicherkonto. Wenn Sie diese Werte nicht notiert haben, führen Sie die folgenden Befehle aus, um sie abzurufen: echo $storageAccountName und echo $key. Stellen Sie beim Ersetzen der Werte sicher, dass Sie kein \ (Escape-)Zeichen für " (doppelte Anführungszeichen) löschen.

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

Definieren der Transformationsabfrage

Fügen Sie Ihrem Auftrag eine Transformation hinzu, indem Sie das Cmdlet az stream-analytics transformation create verwenden.

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"

Ausführen des IoT-Simulators

  1. Öffnen Sie den Raspberry Pi-Azure IoT-Onlinesimulator.

  2. Ersetzen Sie den Platzhalter in Zeile 15 durch die gesamte Geräteverbindungszeichenfolge des Azure IoT Hub (nicht die IoT Hub-Verbindungszeichenfolge), die Sie am Anfang der Schnellstartanleitung gespeichert haben.

  3. Klicken Sie auf Run (Ausführen). In der Ausgabe sollten nun die Sensordaten und -nachrichten angezeigt werden, die an Ihre IoT Hub-Instanz gesendet werden.

    Raspberry Pi Azure IoT Online Simulator

Starten des Stream Analytics-Auftrags und Überprüfen der Ausgabe

Starten Sie den Auftrag mit dem Cmdlet az stream-analytics job start. Dieses Cmdlet übernimmt den Auftragsnamen, den Ressourcengruppennamen, den Ausgabestartmodus und die Startzeit als Parameter. OutputStartMode akzeptiert die Werte JobStartTime, CustomTime und LastOutputEventTime.

Nach der Ausführung des folgenden Cmdlets wird als Ausgabe True zurückgegeben, wenn der Auftrag gestartet wird.

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

Warten Sie ein paar Minuten, und überprüfen Sie dann, ob eine Ausgabedatei im state-Blobcontainer erstellt wird.

Screenshot showing the output file in the State blob container.

Laden Sie die Datei herunter, und öffnen Sie sie, um mehrere Einträge wie den folgenden anzuzeigen:

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

Bereinigen von Ressourcen

Löschen Sie die Ressourcengruppe, wodurch alle Ressourcen in der Ressourcengruppe gelöscht werden, einschließlich Stream Analytics-Auftrag, IoT Hub und Azure Storage-Konto.

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

Nächste Schritte

In dieser Schnellstartanleitung haben Sie einen einfachen Stream Analytics-Auftrag mit der Azure CLI bereitgestellt. Stream Analytics-Aufträge können auch mit dem Azure-Portal und Visual Studio bereitgestellt werden.

Wenn Sie Informationen zum Konfigurieren anderer Eingabequellen sowie zum Ausführen der Echtzeiterkennung benötigen, lesen Sie den folgenden Artikel: