Schnellstart: Erstellen eines Stream Analytics-Auftrags mit Azure PowerShell

Das Azure PowerShell-Modul dient zum Erstellen und Verwalten von Azure-Ressourcen mithilfe von PowerShell-Cmdlets oder -Skripts. In diesem Schnellstart wird gezeigt, wie Sie einen Azure Stream Analytics-Auftrag mit dem Azure PowerShell-Modul bereitstellen und ausführen.

Der Beispielauftrag liest Streamingdaten von einem IoT Hub-Gerät. Die Eingabedaten werden von einem Raspberry Pi-Onlinesimulator generiert. Der Stream Analytics-Auftrag transformiert die Daten mithilfe der Stream Analytics-Abfragesprache, um Nachrichten mit einer Temperatur über 27 ° herauszufiltern. Anschließend werden die resultierenden Ausgabeereignisse in eine Datei in einen Blobspeicher geschrieben.

Voraussetzungen

  • Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen.
  • Für diesen Schnellstart ist das Azure PowerShell-Modul erforderlich. Führen Sie Get-Module -ListAvailable Az aus, um die Version zu ermitteln, die auf Ihrem lokalen Computer installiert ist. Wenn Sie eine Installation oder ein Upgrade ausführen müssen, finden Sie unter Install and configure Azure PowerShell (Installieren des Azure PowerShell-Moduls) Informationen dazu.
  • Einige IoT Hub-Aktionen werden nicht von Azure PowerShell unterstützt und müssen mit der Azure-Befehlszeilenschnittstelle (Azure CLI) Version 2.0.70 oder höher und der IoT-Erweiterung für die Azure CLI ausgeführt werden. Installieren Sie die Azure CLI und verwenden Sie az extension add --name azure-iot zum Installieren der IoT-Erweiterung.

Anmelden bei Azure

Melden Sie sich mit dem Befehl Connect-AzAccount bei Ihrem Azure-Abonnement an, und geben Sie im Popupbrowserfenster Ihre Azure-Anmeldeinformationen ein:

# Connect to your Azure account
Connect-AzAccount

Falls Sie mehrere Abonnements haben, führen Sie die folgenden Cmdlets aus, um das Abonnement auszuwählen, das Sie für diesen Schnellstart verwenden möchten. Ersetzen Sie <your subscription name> durch den Namen Ihres Abonnements:

# List all available subscriptions.
Get-AzSubscription

# Select the Azure subscription you want to use to create the resource group and resources.
Get-AzSubscription -SubscriptionName "<your subscription name>" | Select-AzSubscription

Erstellen einer Ressourcengruppe

Erstellen Sie mit New-AzResourceGroup eine Azure-Ressourcengruppe. Eine Ressourcengruppe ist ein logischer Container, in dem Azure-Ressourcen bereitgestellt und verwaltet werden.

$resourceGroup = "StreamAnalyticsRG"
$location = "WestUS2"
New-AzResourceGroup `
    -Name $resourceGroup `
    -Location $location

Vorbereiten der Eingabedaten

Bereiten Sie vor dem Definieren des Stream Analytics-Auftrags die Daten vor, die als Eingabe für den Auftrag konfiguriert werden.

Der folgende Azure CLI-Codeblock enthält viele Befehle, um die erforderlichen Eingabedaten für den Auftrag vorzubereiten. Sehen Sie sich die folgenden Abschnitte an, um den Code zu verstehen.

  1. Führen Sie im PowerShell-Fenster den Befehl az login aus, um sich bei Ihrem Azure-Konto anzumelden.

    Wenn Sie sich erfolgreich angemeldet haben, gibt die Azure CLI eine Liste Ihrer Abonnements zurück. Kopieren Sie das Abonnement, das Sie für diesen Schnellstart verwenden möchten, und führen Sie den Befehl az account set aus, um dieses Abonnement auszuwählen. Wählen Sie das gleiche Abonnement aus, das Sie im vorherigen Abschnitt mit PowerShell ausgewählt haben. Ersetzen Sie <your subscription name> durch den Namen Ihres Abonnements.

    az login
    
    az account set --subscription "<your subscription>"
    
  2. 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 eindeutig sind, müssen Sie einen eigenen IoT Hub-Namen festlegen. 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.

    az iot hub create --name "MyASAIoTHub" --resource-group $resourceGroup --sku S1
    

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

    az iot hub show-connection-string --resource-group $resourceGroup --hub-name "MyASAIoTHub"
    
  3. Fügen Sie IoT Hub mit dem Befehl az iot hub device-identity create ein Gerät hinzu. In diesem Beispiel wird ein Gerät namens MyASAIoTDevice erstellt.

    az iot hub device-identity create --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice"
    
  4. Rufen Sie die Geräte-Verbindungszeichenfolge mit dem Befehl 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 --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice" --output table
    

    Ausgabebeispiel:

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

Erstellen eines Blobspeichers

Im folgenden Azure PowerShell-Codeblock werden Befehle zum Erstellen von Blobspeicher für die Ausgabe des Auftrags verwendet. Sehen Sie sich die Abschnitte an, um den Code zu verstehen.

  1. Erstellen Sie mit dem Cmdlet New-AzStorageAccount ein allgemeines Standardspeicherkonto. In diesem Beispiel wird ein Speicherkonto namens myasaquickstartstorage mit lokal redundantem Speicher (LRS) und Blobverschlüsselung (standardmäßig aktiviert) erstellt.

  2. Rufen Sie den Kontext des Speicherkontos ($storageAccount.Context) ab, der das zu verwendende Speicherkonto definiert. Beim Arbeiten mit Speicherkonten verweisen Sie auf den Kontext, statt die Anmeldeinformationen wiederholt anzugeben.

  3. Erstellen Sie mithilfe von New-AzStorageContainer einen Container.

  4. Kopieren Sie den vom Code ausgegebenen Speicherschlüssel, und speichern Sie ihn (Sie benötigen ihn später zum Erstellen der Ausgabe des Streamingauftrags).

    $storageAccountName = "myasaquickstartstorage"
    $storageAccount = New-AzStorageAccount `
      -ResourceGroupName $resourceGroup `
      -Name $storageAccountName `
      -Location $location `
      -SkuName Standard_LRS `
      -Kind Storage
    
    $ctx = $storageAccount.Context
    $containerName = "container1"
    
    New-AzStorageContainer `
      -Name $containerName `
      -Context $ctx
    
    $storageAccountKey = (Get-AzStorageAccountKey `
      -ResourceGroupName $resourceGroup `
      -Name $storageAccountName).Value[0]
    
    Write-Host "The <storage account key> placeholder needs to be replaced in your output json files with this key value:"
    Write-Host $storageAccountKey -ForegroundColor Cyan
    

Erstellen eines Stream Analytics-Auftrags

Erstellen Sie mit dem Cmdlet New-AzStreamAnalyticsJob einen Stream Analytics-Auftrag. Dieses Cmdlet akzeptiert als Parameter den Auftragsnamen, den Ressourcengruppennamen, den Speicherort und den SKU-Namen. Beim Auftragsnamen kann es sich um einen beliebigen Anzeigenamen handeln, der Ihren Auftrag identifiziert. Er darf nur alphanumerische Zeichen, Bindestriche und Unterstriche enthalten und muss zwischen 3 und 63 Zeichen lang sein.

Führen Sie das New-AzStreamAnalyticsJob-Cmdlet aus.

$jobName = "MyStreamingJob"
New-AzStreamAnalyticsJob `
  -ResourceGroupName $resourceGroup `
  -Name $jobName `
  -Location centralus `
  -SkuName Standard

Konfigurieren einer Eingabe für den Auftrag

Fügen Sie mit dem Cmdlet New-AzStreamAnalyticsInput eine Eingabe zu Ihrem Auftrag hinzu. Dieses Cmdlet übernimmt den Auftragsnamen, den Auftragseingabenamen, den Ressourcengruppennamen und die Auftragseingabedefinition als Parameter. Bei der Auftragseingabedefinition handelt es sich um eine JSON-Datei mit den Eigenschaften, die zum Konfigurieren der Eingabe eines Auftrags erforderlich sind. In diesem Beispiel erstellen Sie einen Blobspeicher als Eingabe.

Erstellen Sie auf Ihrem lokalen Computer eine Datei mit dem Namen JobInputDefinition.json, und fügen Sie ihr die folgenden JSON-Daten hinzu.

Wichtig

  • Ersetzen Sie den Wert für accesspolicykey durch den SharedAccessKey-Teil der IoT Hub-Verbindungszeichenfolge, die Sie zuvor gespeichert haben.
  • Wenn Sie einen anderen Namen für den IoT Hub verwendet haben, aktualisieren Sie den Wert für iotHubNamespace.
{
    "properties": {
        "type": "Stream",
        "datasource": {
            "type": "Microsoft.Devices/IotHubs",
            "properties": {
                "iotHubNamespace": "MyASAIoTHub",
                "sharedAccessPolicyName": "iothubowner",
                "sharedAccessPolicyKey": "accesspolicykey",
                "endpoint": "messages/events",
                "consumerGroupName": "$Default"
                }
        },
        "compression": {
            "type": "None"
        },
        "serialization": {
            "type": "Json",
            "properties": {
                "encoding": "UTF8"
            }
        }
    },
    "name": "IoTHubInput",
    "type": "Microsoft.StreamAnalytics/streamingjobs/inputs"
}

Legen Sie die PowerShell-Variable $jobInputDefinitionFile auf den Pfad fest, in dem Sie die JSON-Datei für die Auftragseingabedefinition gespeichert haben.

$jobInputDefinitionFile = "C:\JobInputDefinition.json"

Führen Sie als Nächstes das Cmdlet New-AzStreamAnalyticsInput aus, um eine Azure IoT Hub Eingabe für den Stream Analytics-Auftrag zu erstellen.

$jobInputName = "IoTHubInput"
New-AzStreamAnalyticsInput `
  -ResourceGroupName $resourceGroup `
  -JobName $jobName `
  -File $jobInputDefinitionFile `
  -Name $jobInputName

Konfigurieren einer Ausgabe für den Auftrag

Fügen Sie mit dem Cmdlet New-AzStreamAnalyticsOutput eine Ausgabe zu Ihrem Auftrag hinzu. Dieses Cmdlet übernimmt den Auftragsnamen, den Auftragsausgabenamen, den Ressourcengruppennamen und die Auftragsausgabedefinition als Parameter. Bei der Auftragsausgabedefinition handelt es sich um eine JSON-Datei mit den Eigenschaften, die zum Konfigurieren der Ausgabe eines Auftrags erforderlich sind. In diesem Beispiel wird der Blobspeicher als Ausgabe verwendet.

Erstellen Sie auf Ihrem lokalen Computer eine Datei mit dem Namen JobOutputDefinition.json, und fügen Sie ihr die folgenden JSON-Daten hinzu.

Wichtig

Ersetzen Sie den Wert für accountKey durch den Zugriffsschlüssel Ihres Speicherkontos. Dieser Wert ist in $storageAccountKey gespeichert.

{
    "properties": {
        "datasource": {
            "type": "Microsoft.Storage/Blob",
            "properties": {
                "storageAccounts": [
                    {
                      "accountName": "asaquickstartstorage",
                      "accountKey": "<storage account key>"
                    }
                ],
                "container": "container1",
                "pathPattern": "output/",
                "dateFormat": "yyyy/MM/dd",
                "timeFormat": "HH"
            }
        },
        "serialization": {
            "type": "Json",
            "properties": {
                "encoding": "UTF8",
                "format": "LineSeparated"
            }
        }
    },
    "name": "BlobOutput",
    "type": "Microsoft.StreamAnalytics/streamingjobs/outputs"
}

Legen Sie die PowerShell-Variable $jobOutputDefinitionFile auf den Pfad fest, in dem Sie die JSON-Datei für die Auftragsausgabedefinition gespeichert haben.

$jobOutputDefinitionFile = "C:\JobOutputDefinition.json"

Führen Sie als Nächstes das Cmdlet New-AzStreamAnalyticsOutput aus, um eine Azure Blob Storage-Ausgabe für den Stream Analytics-Auftrag zu erstellen.

$jobOutputName = "BlobOutput"

New-AzStreamAnalyticsOutput `
  -ResourceGroupName $resourceGroup `
  -JobName $jobName `
  -File $jobOutputDefinitionFile `
  -Name $jobOutputName

Definieren der Transformationsabfrage

Fügen Sie Ihrem Auftrag mithilfe des Cmdlets New-AzStreamAnalyticsTransformation eine Transformation hinzu. Dieses Cmdlet übernimmt den Auftragsnamen, den Auftragstransformationsnamen, den Ressourcengruppennamen und die Auftragstransformationsdefinition als Parameter. Erstellen Sie auf Ihrem lokalen Computer eine Datei mit dem Namen JobTransformationDefinition.json, und fügen Sie ihr die folgenden JSON-Daten hinzu. Die JSON-Datei enthält einen Abfrageparameter, der die Transformationsabfrage definiert:

{
    "name":"MyTransformation",
    "type":"Microsoft.StreamAnalytics/streamingjobs/transformations",
    "properties":{
        "streamingUnits":1,
        "script":null,
        "query":"SELECT * INTO BlobOutput FROM IoTHubInput WHERE Temperature > 27"
    }
}

Führen Sie anschließend das Cmdlet New-AzStreamAnalyticsTransformation aus.

$jobTransformationName = "MyJobTransformation"
$jobTransformationDefinitionFile = "C:\JobTransformationDefinition.json"
New-AzStreamAnalyticsTransformation `
    -ResourceGroupName $resourceGroup `
    -JobName $jobName `
    -Query "SELECT * INTO BlobOutput FROM IoTHubInput WHERE Temperature > 27" `
    -StreamingUnit 1 `
    -Name $jobTransformationName

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 zuvor gespeicherte Verbindungszeichenfolge für das Azure IoT Hub-Gerät.

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

    Screenshot: Raspberry Pi Azure IoT-Onlinesimulator.

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

Starten Sie den Auftrag mit dem Cmdlet Start-AzStreamAnalyticsJob. Dieses Cmdlet übernimmt den Auftragsnamen, den Ressourcengruppennamen, den Ausgabestartmodus und die Startzeit als Parameter. OutputStartMode akzeptiert die Werte JobStartTime, CustomTime und LastOutputEventTime. Weitere Informationen zur Bedeutung dieser Werte finden Sie in der PowerShell-Dokumentation im Abschnitt Parameter.

Nach der Ausführung des folgenden Cmdlets wird als Ausgabe True zurückgegeben, wenn der Auftrag gestartet wird. Im Speichercontainer wird ein Ausgabeordner mit den transformierten Daten erstellt.

Start-AzStreamAnalyticsJob `
  -ResourceGroupName $resourceGroup `
  -Name $jobName `
  -OutputStartMode 'JobStartTime'

Bereinigen von Ressourcen

Löschen Sie die Ressourcengruppe, den Streamingauftrag und alle dazugehörigen Ressourcen, wenn Sie sie nicht mehr benötigen. Durch das Löschen des Auftrags verhindern Sie, dass Kosten für die vom Auftrag verbrauchten Streamingeinheiten anfallen. Wenn Sie den Auftrag in Zukunft verwenden möchten, können Sie den Löschvorgang überspringen und Auftrag vorläufig beenden. Wenn Sie diesen Auftrag nicht weiter verwenden möchten, löschen Sie alle in diesem Schnellstart erstellten Ressourcen, indem Sie das folgende Cmdlet ausführen:

Remove-AzResourceGroup `
  -Name $resourceGroup

Nächste Schritte

In dieser Schnellstartanleitung haben Sie einen einfachen Stream Analytics-Auftrag mit PowerShell 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: