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 Azure PowerShell-modulen 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 någon Azure-prenumeration kan du skapa 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.
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 den prenumeration 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>"
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 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 IoT Hub-anslutningssträng med kommandot az iot hub connection-string show. Kopiera hela anslutningssträng och spara den. Du behöver det när du lägger till IoT Hub som indata till ditt Stream Analytics-jobb.
az iot hub connection-string show --resource-group $resourceGroup --hub-name "MyASAIoTHub"
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"
Hämta enheten anslutningssträng med kommandot
az iot hub device-identity connection-string show
. 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.
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).
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.Skapa en lagringscontainer med hjälp av New-AzStorageContainer.
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 denSharedAccessKey
del av IoT Hub-anslutningssträng 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 ett 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
Ersätt platshållaren på rad 15 med hela Azure IoT Hub-enhetens anslutningssträng, som du sparade i ett tidigare avsnitt.
Klicka på Kör. Utdata bör visas de sensordata och meddelanden som skickas till din IoT-hubb.
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: