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.
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>"
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"
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"
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.
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.
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.Erstellen Sie mithilfe von New-AzStorageContainer einen Container.
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 denSharedAccessKey
-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
Öffnen Sie den Raspberry Pi-Azure IoT-Onlinesimulator.
Ersetzen Sie den Platzhalter in Zeile 15 durch die gesamte zuvor gespeicherte Verbindungszeichenfolge für das Azure IoT Hub-Gerät.
Klicken Sie auf Ausführen. In der Ausgabe sollten nun die Sensordaten und -nachrichten angezeigt werden, die an Ihre IoT Hub-Instanz gesendet werden.
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: