Snabbstart: Skapa ett Stream Analytics-jobb med Azure PowerShell

Azure PowerShell-modulen används för att skapa och hantera Azure-resurser med hjälp av PowerShell-cmdletar eller -skript. Den här snabbstarten visar hur du använder modulen Azure PowerShell för att distribuera och köra ett Azure Stream Analytics-jobb.

Exempeljobbet läser strömmande data från en IoT Hub enhet. Indata genereras av en Raspberry Pi-onlinesimulator. Stream Analytics-jobbet transformerar data med hjälp av Stream Analytics-frågespråket för att filtrera meddelanden med en temperatur som är större än 27°. Sedan skriver den de resulterande utdatahändelserna till en fil i en bloblagring.

Innan du börjar

  • Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt konto.
  • Den här snabbstarten kräver Azure PowerShell-modulen. Hitta versionen som är installerad på den lokala datorn genom att köra Get-Module -ListAvailable Az. Om du behöver installera eller uppgradera kan du läsa Install Azure PowerShell module (Installera Azure PowerShell-modul).
  • Vissa IoT Hub åtgärder stöds inte av Azure PowerShell och måste slutföras med Azure CLI version 2.0.70 eller senare och IoT-tillägget för Azure CLI. Installera Azure CLI och använd az extension add --name azure-iot för att installera IoT-tillägget.

Logga in på Azure

Logga in på din Azure-prenumeration med kommandot Connect-AzAccount och ange dina autentiseringsuppgifter för Azure i webbläsarens popup-fönster:

# Connect to your Azure account
Connect-AzAccount

Om du har fler än en prenumeration väljer du den prenumeration som du vill använda för den här snabbstarten genom att köra följande cmdletar. Ersätt <your subscription name> med namnet på prenumerationen:

# 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

Skapa en resursgrupp

Skapa en Azure-resursgrupp med New-AzResourceGroup. En resursgrupp är en logisk container där Azure-resurser distribueras och hanteras.

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

Förbereda indata

Innan du definierar Stream Analytics-jobbet förbereder du de data som har konfigurerats som indata för jobbet.

Följande Azure CLI-kodblock har många kommandon för att förbereda indata som krävs av jobbet. Läs följande avsnitt för att förstå koden.

  1. I PowerShell-fönstret kör du az login kommandot för att logga in på ditt Azure-konto.

    När du har loggat in returnerar Azure CLI en lista över dina prenumerationer. Kopiera prenumerationen som du använder för den här snabbstarten och kör kommandot för att välja den prenumerationen az account set . Välj samma prenumeration som du valde i föregående avsnitt med PowerShell. Ersätt <your subscription name> med namnet på prenumerationen.

    az login
    
    az account set --subscription "<your subscription>"
    
  2. Skapa en IoT Hub med kommandot az iot hub create . I det här exemplet skapas en IoT-hubb som heter MyASAIoTHub. Eftersom namn på IoT-hubbar är unika behöver du skapa ett eget IoT-hubbnamn. Ange SKU:n till F1 för att använda den kostnadsfria nivån om den är tillgänglig med din prenumeration. Annars väljer du nästa lägsta nivå.

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

    När IoT-hubben har skapats hämtar du anslutningssträngen för IoT-hubben med hjälp av kommandot az iot hub show-connection-string. Kopiera hela anslutningssträngen och spara den. Du behöver det när du lägger till IoT Hub som indata i Stream Analytics-jobbet.

    az iot hub show-connection-string --resource-group $resourceGroup --hub-name "MyASAIoTHub"
    
  3. Lägg till en enhet i IoT Hub med kommandot az iot hub device-identity create . I det här exemplet skapas en enhet med namnet MyASAIoTDevice.

    az iot hub device-identity create --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice"
    
  4. Hämta enhetsanslutningssträngen az iot hub device-identity connection-string show med kommandot . Kopiera hela anslutningssträngen och spara den för användning när du skapar Raspberry Pi-simulatorn.

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

    Utdataexempel:

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

Skala bloblagring

Följande Azure PowerShell-kodblock använder kommandon för att skapa bloblagring som används för jobbutdata. Läs avsnitten för att förstå koden.

  1. Skapa ett allmänt lagringskonto för generell användning med hjälp av cmdleten New-AzStorageAccount. I det här exemplet skapas ett lagringskonto med namnet myasaquickstartstorage med lokalt redundant lagring (LRS) och blobkryptering (aktiverat som standard).

  2. Hämta lagringskontokontexten $storageAccount.Context som definierar det lagringskonto som ska användas. När du arbetar med lagringskonton refererar du till kontexten i stället för att ange autentiseringsuppgifterna flera gånger.

  3. Skapa en lagringscontainer med hjälp av New-AzStorageContainer.

  4. Kopiera den lagringsnyckel som koden ger som utdata och spara nyckeln för att skapa utdata för strömningsjobbet senare.

    $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
    

Skapa ett Stream Analytics-jobb

Skapa ett Stream Analytics-jobb med cmdleten New-AzStreamAnalyticsJob. Den här cmdleten tar jobbnamnet, resursgruppens namn, plats och sku-namn som parametrar. Jobbnamnet kan vara ett eget namn som identifierar jobbet. Det får enbart innehålla alfanumeriska tecken, bindestreck och understreck och måste vara mellan 3 och 63 tecken långt.

Kör cmdleten New-AzStreamAnalyticsJob .

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

Konfigurera indata för jobbet

Lägg till indata för jobbet med hjälp av cmdleten New-AzStreamAnalyticsInput. Den här cmdleten tar jobbnamnet, jobbindatanamnet, resursgruppens namn och jobbindatadefinitionen som parametrar. Jobbets indatadefinition är en JSON-fil som innehåller de egenskaper som krävs för att konfigurera jobbets indata. I det här exemplet skapar du en bloblagring som indata.

Skapa en fil med namnet JobInputDefinition.json på den lokala datorn och lägg till följande JSON-data i den.

Viktigt

  • Ersätt accesspolicykey med den SharedAccessKey del av IoT Hub anslutningssträngen som du sparade i ett tidigare avsnitt.
  • Om du använde ett annat namn för IoT-hubben uppdaterar du värdet 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"
}

$jobInputDefinitionFile Ange PowerShell-variabeln till sökvägen där du har lagrat JSON-filen för jobbindatadefinitionen.

$jobInputDefinitionFile = "C:\JobInputDefinition.json"

Kör sedan cmdleten New-AzStreamAnalyticsInput för att skapa en Azure IoT Hub indata för Stream Analytics-jobbet.

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

Konfigurera utdata för jobbet

Lägg till utdata för jobbet med hjälp av cmdleten New-AzStreamAnalyticsOutput. Den här cmdleten tar jobbnamnet, jobbutdatanamnet, resursgruppens namn och jobbutdatadefinitionen som parametrar. Jobbets utdatadefinition är en JSON-fil som innehåller de egenskaper som krävs för att konfigurera jobbets utdata. Det här exemplet använder bloblagring som utdata.

Skapa en fil med namnet JobOutputDefinition.json på den lokala datorn och lägg till följande JSON-data i den.

Viktigt

Ersätt värdet för accountKey med lagringskontots åtkomstnyckel som är värdet som lagras i $storageAccountKey värdet.

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

$jobOutputDefinitionFile Ange PowerShell-variabeln till sökvägen där du har lagrat JSON-filen för jobbutdatadefinitionen.

$jobOutputDefinitionFile = "C:\JobOutputDefinition.json"

Kör sedan cmdleten New-AzStreamAnalyticsOutput för att skapa en Azure Blob Storage utdata för Stream Analytics-jobbet.

$jobOutputName = "BlobOutput"

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

Definiera transformationsfrågan

Lägg till en transformation för jobbet med hjälp av cmdleten New-AzStreamAnalyticsTransformation. Den här cmdleten tar jobbnamnet, jobbtransformationsnamnet, resursgruppens namn och jobbtransformationsdefinitionen som parametrar. Skapa en fil med namnet JobTransformationDefinition.json på den lokala datorn och lägg till följande JSON-data i den. JSON-filen innehåller en frågeparameter som definierar transformationsfrågan:

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

Kör sedan cmdleten New-AzStreamAnalyticsTransformation.

$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

Köra IoT-simulatorn

  1. Öppna Raspberry Pi Azure IoT-onlinesimulatorn.

  2. Ersätt platshållaren på rad 15 med hela Azure IoT Hub-enhetens anslutningssträng, som du sparade i ett tidigare avsnitt.

  3. Klicka på Kör. Utdata bör visas de sensordata och meddelanden som skickas till din IoT-hubb.

    Skärmbild som visar Raspberry Pi Azure IoT Online-simulatorn.

Starta Stream Analytics-jobbet och kontrollera utdata

Starta jobbet med hjälp av cmdleten Start-AzStreamAnalyticsJob. Den här cmdleten tar jobbnamnet, resursgruppens namn, startläget för utdata och starttiden som parametrar. OutputStartMode godkänner värden för JobStartTime, CustomTime eller LastOutputEventTime. Mer information om vad dessa värden refererar till finns i avsnittet om parametrar i PowerShell-dokumentationen.

När du har kört följande cmdlet returnerar den True som utdata om jobbet startar. En utdatamapp skapas i lagringscontainern med de data som har transformerats.

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

Rensa resurser

Ta bort resursgruppen, strömningsjobbet och alla relaterade resurser när de inte längre behövs. Om du tar bort jobbet undviker du att bli fakturerad för de strömmande enheter som används av jobbet. Om du planerar att använda jobbet i framtiden kan du låta bli att ta bort det och stoppa det just nu. Om du inte planerar att fortsätta använda det här jobbet tar du bort alla resurser som skapades i snabbstarten genom att köra följande cmdlet:

Remove-AzResourceGroup `
  -Name $resourceGroup

Nästa steg

I den här snabbstarten har du distribuerat ett enkelt Stream Analytics-jobb med PowerShell. Du kan även distribuera Stream Analytics-jobb med Azure-portalen och Visual Studio.

Om du vill se hur du konfigurerar andra indatakällor och utför realtidsidentifiering fortsätter du till följande artikel: