Quickstart: Een Stream Analytics-taak maken met behulp van Azure PowerShell

De Azure PowerShell-module wordt gebruikt voor het maken en beheren van Azure-resources met behulp van PowerShell-cmdlets of -scripts. In deze quickstart ziet u hoe u de module Azure PowerShell gebruikt om een Azure Stream Analytics-taak te implementeren en uit te voeren.

De voorbeeldtaak leest streaminggegevens van een IoT Hub-apparaat. De invoergegevens worden gegenereerd door Raspberry Pi Online Simulator. De Stream Analytics-taak transformeert de gegevens met behulp van de Stream Analytics-querytaal om berichten te filteren met een temperatuur hoger dan 27°. Vervolgens worden de resulterende uitvoergebeurtenissen naar een bestand in een blobopslag geschreven.

Voordat u begint

  • Als u nog geen Azure-abonnement hebt, maak dan een gratis account aan.
  • Voor deze quickstart is de Azure PowerShell-module vereist. Voer Get-Module -ListAvailable Az uit om de versie op te zoeken die op uw lokale computer is geïnstalleerd. Als u PowerShell wilt installeren of upgraden, raadpleegt u De Azure PowerShell-module installeren.
  • Sommige IoT Hub acties worden niet ondersteund door Azure PowerShell en moeten worden voltooid met Azure CLI versie 2.0.70 of hoger en de IoT-extensie voor Azure CLI. Installeer de Azure CLI en gebruik az extension add --name azure-iot voor het installeren van de IoT-extensie.

Aanmelden bij Azure

Meld u met de opdracht Connect-AzAccount aan bij uw Azure-abonnement en voer uw Azure-referenties in de pop-upbrowser in:

# Connect to your Azure account
Connect-AzAccount

Als u meer dan één abonnement hebt, selecteert u het abonnement dat u wilt gebruiken voor deze quickstart door de volgende cmdlets uit te voeren. Vervang <your subscription name> door de naam van uw abonnement:

# 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

Een resourcegroep maken

Maak een Azure-resourcegroep met behulp van de opdracht New-AzResourceGroup. Een resourcegroep is een logische container waarin Azure-resources worden geïmplementeerd en beheerd.

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

De invoergegevens voorbereiden

Voordat u de Stream Analytics-taak definieert, moet u de gegevens voorbereiden die als invoer voor de taak zijn geconfigureerd.

Het volgende Azure CLI-codeblok bevat veel opdrachten om de invoergegevens voor te bereiden die voor de taak zijn vereist. Bekijk de volgende secties voor meer informatie over de code.

  1. Voer in het PowerShell-venster de az login opdracht uit om u aan te melden bij uw Azure-account.

    Wanneer u bent aangemeld, retourneert de Azure CLI een lijst met uw abonnementen. Kopieer het abonnement dat u voor deze quickstart gebruikt en voer de az account set opdracht uit om dat abonnement te selecteren. Kies het abonnement dat u hebt geselecteerd in de vorige sectie met PowerShell. Vergeet niet om <your subscription name> te vervangen door de naam van uw abonnement.

    az login
    
    az account set --subscription "<your subscription>"
    
  2. Maak een IoT Hub met behulp van de az iot hub create opdracht . In dit voorbeeld wordt een IoT Hub met de naam MyASAIoTHub gemaakt. Omdat namen van IoT Hubs uniek moeten zijn, moet u zelf een naam bedenken voor uw IoT Hub. Stel de SKU in op F1 om de gratis laag te gebruiken als deze beschikbaar is voor uw abonnement. Als dat niet het geval is, kiest u de eerstvolgende lagere categorie.

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

    Zodra de IoT Hub is gemaakt, vraagt u de verbindingsreeks voor IoT Hub op met de opdracht az iot hub show-connection-string. Kopieer de hele connection string en sla deze op. U hebt deze nodig wanneer u de IoT Hub toevoegt als invoer voor uw Stream Analytics-taak.

    az iot hub show-connection-string --resource-group $resourceGroup --hub-name "MyASAIoTHub"
    
  3. Voeg een apparaat toe aan IoT Hub met behulp van de az iot hub device-identity create opdracht . In dit voorbeeld maakt u een apparaat met de naam MyASAIoTDevice.

    az iot hub device-identity create --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice"
    
  4. Haal het apparaat connection string met behulp van de az iot hub device-identity connection-string show opdracht . Kopieer de volledige verbindingsreeks en bewaar deze totdat u de Raspberry Pi-simulator gaat maken.

    az iot hub device-identity connection-string show --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice" --output table
    

    Voorbeeld van uitvoer:

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

Blob-opslag maken

Het volgende codeblok van Azure PowerShell bevat opdrachten voor het maken van blob-opslag die wordt gebruikt voor taakuitvoer. Bekijk de secties om de code te begrijpen.

  1. Maak een standaard algemeen opslagaccount met de cmdlet New-AzStorageAccount. In dit voorbeeld wordt een opslagaccount met de naam myasaquickstartstorage gemaakt met lokaal redundante opslag (LRS) en blob-codering (standaard ingeschakeld).

  2. Haal de opslagaccountcontext op waarin het te gebruiken opslagaccount $storageAccount.Context is gedefinieerd. Als u werkt met opslagaccounts, verwijst u naar de context in plaats van herhaaldelijk de referenties op te geven.

  3. Maak een nieuwe opslagcontainer met New-AzStorageContainer.

  4. Kopieer de opslagsleutel die is uitgevoerd door de code en bewaar deze sleutel om later de uitvoer van de streamingtaak te maken.

    $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
    

Een Stream Analytics-taak maken

Maak een Stream Analytics-taak met behulp van de cmdlet New-AzStreamAnalyticsJob. Deze cmdlet gebruikt de taaknaam, resourcegroepnaam, locatie en SKU-naam als parameters. De taaknaam kan elke gewenste beschrijvende naam zijn voor de taak. De naam mag alleen alfanumerieke tekens, afbreekstreepjes en onderstrepingstekens bevatten en moet tussen de 3 en 63 tekens lang zijn.

Voer de cmdlet New-AzStreamAnalyticsJob uit.

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

Invoer voor de taak configureren

Voeg invoer aan uw taak toe met behulp van de cmdlet New-AzStreamAnalyticsInput. Deze cmdlet gebruikt de taaknaam, taakinvoernaam, resourcegroepnaam en de taakinvoerdefinitie als parameters. De taakinvoerdefinitie is een JSON-bestand dat de eigenschappen bevat die nodig zijn om de invoer van de taak te configureren. In dit voorbeeld maakt u een blob-opslag als invoer.

Maak op uw lokale machine een bestand met de naam JobInputDefinition.json en voeg er de volgende JSON-gegevens aan toe.

Belangrijk

  • Vervang door accesspolicykey het SharedAccessKey gedeelte van de IoT Hub connection string dat u in een vorige sectie hebt opgeslagen.
  • Als u een andere naam hebt gebruikt voor de IoT-hub, werkt u de waarde bij voor 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"
}

Stel de $jobInputDefinitionFile PowerShell-variabele in op het pad waar u het JSON-bestand met de taakinvoerdefinitie hebt opgeslagen.

$jobInputDefinitionFile = "C:\JobInputDefinition.json"

Voer vervolgens de New-AzStreamAnalyticsInput cmdlet uit om een Azure IoT Hub invoer voor de Stream Analytics-taak te maken.

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

Uitvoer voor de taak configureren

Voeg uitvoer aan uw taak toe met behulp van de cmdlet New-AzStreamAnalyticsOutput. Deze cmdlet gebruikt de taaknaam, taakuitvoernaam, resourcegroepnaam en de taakuitvoerdefinitie als parameters. De taakuitvoerdefinitie is een JSON-bestand dat de eigenschappen bevat die nodig zijn om de uitvoer van de taak te configureren. In dit voorbeeld wordt blobopslag als uitvoer gebruikt.

Maak op uw lokale machine een bestand met de naam JobOutputDefinition.json en voeg er de volgende JSON-gegevens aan toe.

Belangrijk

Vervang de waarde voor door accountKey de toegangssleutel van uw opslagaccount die de waarde is die is opgeslagen in $storageAccountKey waarde.

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

Stel de $jobOutputDefinitionFile PowerShell-variabele in op het pad waar u het JSON-bestand met de taakuitvoerdefinitie hebt opgeslagen.

$jobOutputDefinitionFile = "C:\JobOutputDefinition.json"

Voer vervolgens de New-AzStreamAnalyticsOutput cmdlet uit om een Azure Blob Storage uitvoer voor de Stream Analytics-taak te maken.

$jobOutputName = "BlobOutput"

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

De transformatiequery definiëren

Voeg een transformatie aan uw taak toe met behulp van de cmdlet New-AzStreamAnalyticsTransformation. Deze cmdlet gebruikt de taaknaam, taaktransformatienaam, resourcegroepnaam en de taaktransformatiedefinitie als parameters. Maak op uw lokale machine een bestand met de naam JobTransformationDefinition.json en voeg er de volgende JSON-gegevens aan toe. Het JSON-bestand bevat een queryparameter die de transformatiequery definieert:

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

Voer vervolgens de cmdlet New-AzStreamAnalyticsTransformation uit.

$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

De IoT-simulator uitvoeren

  1. Open de Raspberry Pi Azure IoT Online Simulator.

  2. Vervang de tijdelijke aanduiding op regel 15 door de verbindingsreeks van het Azure IoT Hub-apparaat die u hebt opgeslagen in een eerdere sectie.

  3. Klik op Run. De uitvoer geeft de sensorgegevens en berichten weer die worden verzonden naar de IoT-hub.

    Schermopname van de Raspberry Pi Azure IoT Online Simulator.

De Stream Analytics-taak starten en uitvoer controleren

Start de taak met de cmdlet Start-AzStreamAnalyticsJob. Deze cmdlet gebruikt de taaknaam, resourcegroepnaam, uitvoerstartmodus en begintijd als parameters. OutputStartMode accepteert waarden van JobStartTime, CustomTime of LastOutputEventTime. Zie de sectie Parameters in de PowerShell-documentatie voor meer informatie over waar deze waarden naar verwijzen.

Nadat u de volgende cmdlet hebt uitgevoerd, retourneert deze True als uitvoer als de taak wordt gestart. In de opslagcontainer wordt een uitvoermap met de getransformeerde gegevens gemaakt.

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

Resources opschonen

Wanneer u een resourcegroep niet meer nodig hebt, verwijdert u de resourcegroep, de streamingtaak en alle gerelateerde resources. Door de taak te verwijderen, voorkomt u dat de streaming-eenheden die door de taak worden verbruikt, in rekening worden gebracht. Als u denkt dat u de taak in de toekomst nog gaat gebruiken, kunt u de verwijdering ervan overslaan en de taak nu stoppen. Als u deze taak niet meer gaat gebruiken, verwijdert u alle resources die in deze quickstart zijn gemaakt door de volgende cmdlet uit te voeren:

Remove-AzResourceGroup `
  -Name $resourceGroup

Volgende stappen

In deze snelstart hebt u een eenvoudige Stream Analytics-taak met behulp van PowerShell geïmplementeerd. U kunt Stream Analytics-taken ook implementeren met behulp van de Azure-portal en Visual Studio.

Voor informatie over het configureren van andere invoerbronnen en het uitvoeren van detectie in realtime gaat u door naar het volgende artikel: