Snabbstart: Skapa ett Azure Stream Analytics-jobb med hjälp av Azure CLI
I den här snabbstarten använder du Azure CLI för att definiera ett Stream Analytics-jobb som filtrerar sensormeddelanden i realtid med en temperatur som är större än 27. Stream Analytics-jobbet läser data från IoT Hub, transformerar data och skriver utdata till en container i en bloblagring. De indata som används i den här snabbstarten genereras av en Raspberry Pi-onlinesimulator.
Innan du börjar
Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
Förutsättningar
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Skapa en resursgrupp. Alla Azure-resurser måste distribueras till en resursgrupp. Resursgrupper gör det enkelt att se och hantera relaterade Azure-resurser.
I den här snabbstarten skapar du en resursgrupp med namnet streamanalyticsrg på platsen eastus med följande kommando az group create:
az group create --name streamanalyticsrg --location eastus
Förbereda indata
Innan du definierar Stream Analytics-jobbet förbereder du de data som används för jobbets indata. Följande Azure CLI-kommandon förbereder de indata som krävs av jobbet.
Skapa en IoT-hubb med hjälp av kommandot az iot hub create. I det här exemplet skapas en IoT-hubb som heter MyASAIoTHub. Eftersom IoT Hub-namn måste vara globalt unika kan du behöva ändra namnet om det redan har tagits. 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å.
iotHubName=MyASAIoTHub az iot hub create --name $iotHubName --resource-group streamanalyticsrg --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 använder den när du lägger till IoT Hub som indata till ditt Stream Analytics-jobb.
az iot hub connection-string show --hub-name $iotHubName
Lägg till en enhet i IoT-hubben med hjälp av kommandot az iothub device-identity create. I det här exemplet skapas en enhet med namnet MyASAIoTDevice.
az iot hub device-identity create --hub-name $iotHubName --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 --hub-name $iotHubName --device-id "MyASAIoTDevice" --output table
Utdataexempel:
HostName=MyASAIoTHub.azure-devices.net;DeviceId=MyASAIoTDevice;SharedAccessKey=a2mnUsg52+NIgYudxYYUNXI67r0JmNubmfVafojG8=
Skapa ett bloblagringskonto
Följande Azure CLI-kommandon skapar ett bloblagringskonto som används för jobbutdata.
Skapa ett allmänt lagringskonto med kommandot az storage account create. Det allmänna lagringskontot kan användas för alla fyra tjänsterna: blobar, filer, tabeller och köer.
storageAccountName="asatutorialstorage$RANDOM" az storage account create \ --name $storageAccountName \ --resource-group streamanalyticsrg \ --location eastus \ --sku Standard_ZRS \ --encryption-services blob
Hämta nyckeln för ditt lagringskonto genom att köra kommandot az storage account keys list .
key=$(az storage account keys list -g streamanalyticsrg -n $storageAccountName --query "[0].value" -o tsv) echo $key
Viktigt!
Anteckna åtkomstnyckeln för Azure Storage-kontot. Du kommer att använda den här nyckeln senare i den här snabbstarten.
Skapa en container med namnet
state
för lagring av blobar med kommandot az storage container create . Du använder lagringskontonyckeln för att auktorisera åtgärden för att skapa containern. Mer information om hur du auktoriserar dataåtgärder med Azure CLI finns i Auktorisera åtkomst till blob- eller ködata med Azure CLI.az storage container create \ --account-name $storageAccountName \ --name state \ --account-key $key \ --auth-mode key
Skapa ett Stream Analytics-jobb
Skapa ett Stream Analytics-jobb med kommandot az stream-analytics job create .
az stream-analytics job create \
--job-name "streamanalyticsjob" \
--resource-group "streamanalyticsrg" \
--location "eastus" \
--output-error-policy "Drop" \
--out-of-order-policy "Drop" \
--order-max-delay 5 \
--arrival-max-delay 16 \
--data-locale "en-US"
Konfigurera indata för jobbet
Lägg till indata i jobbet med hjälp av cmdleten az stream-analytics input . Den här cmdleten tar jobbnamnet, jobbets indatanamn, resursgruppens namn och indataegenskaperna i JSON-format som parametrar. I det här exemplet skapar du en IoT Hub som indata.
Viktigt!
- Ersätt
IOT HUB ACCESS KEY
med värdet för delad åtkomstnyckel i IOT Hub-anslutningssträng du sparade. Om till exempel IOT Hub-anslutningssträng är:HostName=MyASAIoTHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=xxxxxxxxxxxxxx=
ärxxxxxxxxxxxxxx=
värdet för delad åtkomstnyckel . När du ersätter värdet kontrollerar du att du inte tar bort\
(escape)-tecknet för"
(dubbla citattecken). - Uppdatera värdet
iotHubNamespace
för i följande kommando om du använde ett annat namn änMyASAIoTHub
. Körecho $iotHubName
för att se namnet på din IoT Hub.
az stream-analytics input create \
--properties "{\"type\":\"Stream\",\"datasource\":{\"type\":\"Microsoft.Devices/IotHubs\",\"properties\":{\"consumerGroupName\":\"\$Default\",\"endpoint\":\"messages/events\",\"iotHubNamespace\":\"MyASAIoTHub\",\"sharedAccessPolicyKey\":\"IOT HUB ACCESS KEY\",\"sharedAccessPolicyName\":\"iothubowner\"}},\"serialization\":{\"type\":\"Json\",\"encoding\":\"UTF8\"}}" \
--input-name "asaiotinput" \
--job-name "streamanalyticsjob" \
--resource-group "streamanalyticsrg"
Konfigurera utdata för jobbet
Lägg till utdata i jobbet med hjälp av cmdleten az stream-analytics output create . Den här cmdleten tar jobbnamnet, jobbutdatanamnet, resursgruppens namn, datakällan i JSON-format och serialiseringstypen som parametrar.
Viktigt!
Ersätt STORAGEACCOUNTNAME>
med namnet på ditt Azure Storage-konto och STORAGEACCESSKEY>
med åtkomstnyckeln för ditt lagringskonto. Om du inte har antecknat dessa värden kör du följande kommandon för att hämta dem: echo $storageAccountName
och echo $key
. När du ersätter värdena kontrollerar du att du inte tar bort \
(escape)-tecknet för "
(dubbla citattecken).
az stream-analytics output create \
--job-name streamanalyticsjob \
--datasource "{\"type\":\"Microsoft.Storage/Blob\",\"properties\":{\"container\":\"state\",\"dateFormat\":\"yyyy/MM/dd\",\"pathPattern\":\"{date}/{time}\",\"storageAccounts\":[{\"accountKey\":\"STORAGEACCESSKEY\",\"accountName\":\"STORAGEACCOUNTNAME\"}],\"timeFormat\":\"HH\"}}" \
--serialization "{\"type\":\"Json\",\"properties\":{\"format\":\"Array\",\"encoding\":\"UTF8\"}}" \
--output-name asabloboutput \
--resource-group streamanalyticsrg
Definiera transformationsfrågan
Lägg till en transformering av jobbet med hjälp av cmdleten az stream-analytics transformation create .
az stream-analytics transformation create \
--resource-group streamanalyticsrg \
--job-name streamanalyticsjob \
--name Transformation \
--streaming-units "6" \
--saql "SELECT * INTO asabloboutput FROM asaiotinput WHERE Temperature > 27"
Köra IoT-simulatorn
Ersätt platshållaren på rad 15 med hela Azure IoT Hub Device anslutningssträng (inte IoT Hub anslutningssträng) som du sparade i början av snabbstarten.
Markera 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 az stream-analytics job start . 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
.
När du har kört följande cmdlet returnerar den True
som utdata om jobbet startar.
az stream-analytics job start \
--resource-group streamanalyticsrg \
--name streamanalyticsjob \
--output-start-mode JobStartTime
Ge den några minuter och kontrollera sedan att en utdatafil har skapats i blobcontainern state
.
Ladda ned och öppna filen för att se flera poster som liknar följande:
{
"messageId": 229,
"deviceId": "Raspberry Pi Web Client",
"temperature": 31.85214010589595,
"humidity": 60.278830289656284,
"EventProcessedUtcTime": "2023-02-28T22:06:33.5567789Z",
"PartitionId": 3,
"EventEnqueuedUtcTime": "2023-02-28T22:05:49.6520000Z",
"IoTHub": {
"MessageId": null,
"CorrelationId": null,
"ConnectionDeviceId": "MyASAIoTDevice",
"ConnectionDeviceGenerationId": "638132150746523845",
"EnqueuedTime": "2023-02-28T22:05:49.6520000Z",
"StreamId": null
}
}
Rensa resurser
Ta bort resursgruppen, som tar bort alla resurser i resursgruppen, inklusive Stream Analytics-jobb, IoT Hub och Azure Storage-konto.
az group delete \
--name streamanalyticsrg \
--no-wait
Nästa steg
I den här snabbstarten distribuerade du ett enkelt Stream Analytics-jobb med Hjälp av Azure CLI. 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: