Quickstart: Een Azure Stream Analytics-taak maken met behulp van de Azure CLI
In deze quickstart gebruikt u Azure CLI om een Stream Analytics-taak te definiëren waarmee realtime sensorberichten worden gefilterd met een temperatuur die groter is dan 27. De Stream Analytics-taak leest gegevens uit IoT Hub, transformeert de gegevens en schrijft de uitvoergegevens naar een container in een blobopslag. De invoergegevens in deze quickstart worden gegenereerd via een Raspberry Pi Online Simulator.
Voordat u begint
Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
Vereisten
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
Maak een resourcegroep. Alle Azure-resources moeten worden geïmplementeerd in een resourcegroep. Met resourcegroepen kunt u gerelateerde Azure-resources ordenen en beheren.
Maak voor deze quickstart een resourcegroep met de naam streamanalyticsrg op de locatie eastus met behulp van de volgende az group create-opdracht:
az group create --name streamanalyticsrg --location eastus
De invoergegevens voorbereiden
Voordat u de Stream Analytics-taak definieert, moet u de gegevens voorbereiden die worden gebruikt voor de invoer van de taak. Met de volgende Azure CLI-opdrachten worden de invoergegevens voorbereid die vereist zijn voor de taak.
Maak een IoT Hub met de opdracht az iot hub create. In dit voorbeeld wordt een IoT Hub met de naam MyASAIoTHub gemaakt. Omdat IoT Hub-namen globaal uniek moeten zijn, moet u mogelijk de naam wijzigen als deze al wordt gebruikt. 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.
iotHubName=MyASAIoTHub az iot hub create --name $iotHubName --resource-group streamanalyticsrg --sku S1
Zodra de IoT-hub is gemaakt, haalt u de IoT Hub-verbindingsreeks op met behulp van de opdracht az iot hub connection-string show. Kopieer de hele verbindingsreeks en sla deze op. U gebruikt deze functie tijdens het toevoegen van de IoT Hub als invoer aan uw Stream Analytics-taak.
az iot hub connection-string show --hub-name $iotHubName
Voeg een apparaat toe aan IoT Hub met behulp van de opdracht az iothub-device identity create. In dit voorbeeld maakt u een apparaat met de naam MyASAIoTDevice.
az iot hub device-identity create --hub-name $iotHubName --device-id "MyASAIoTDevice"
Haal het apparaat op verbindingsreeks met behulp van de opdracht az iot hub device-identity connection-string show. Kopieer de volledige verbindingsreeks en bewaar deze totdat u de Raspberry Pi-simulator gaat maken.
az iot hub device-identity connection-string show --hub-name $iotHubName --device-id "MyASAIoTDevice" --output table
Voorbeeld van uitvoer:
HostName=MyASAIoTHub.azure-devices.net;DeviceId=MyASAIoTDevice;SharedAccessKey=a2mnUsg52+NIgYudxYYUNXI67r0JmNubmfVafojG8=
Een blob-opslagaccount maken
Met de volgende Azure CLI-opdrachten maakt u een Blob Storage-account dat wordt gebruikt voor taakuitvoer.
Maak een algemeen opslagaccount met de opdracht az storage account create. Het algemeen opslagaccount kan voor alle vier de services worden gebruikt: blobs, bestanden, tabellen en wachtrijen.
storageAccountName="asatutorialstorage$RANDOM" az storage account create \ --name $storageAccountName \ --resource-group streamanalyticsrg \ --location eastus \ --sku Standard_ZRS \ --encryption-services blob
Haal de sleutel voor uw opslagaccount op door de opdracht az storage account keys list uit te voeren.
key=$(az storage account keys list -g streamanalyticsrg -n $storageAccountName --query "[0].value" -o tsv) echo $key
Belangrijk
Noteer de toegangssleutel voor het Azure-opslagaccount. U gebruikt deze sleutel verderop in deze quickstart.
Maak een container met de naam
state
voor het opslaan van blobs met de opdracht az storage container create . U gebruikt de sleutel voor het opslagaccount om de bewerking voor het maken van de container te autoriseren. Zie Toegang verlenen tot blob- of wachtrijgegevens met Azure CLI voor meer informatie over het autoriseren van gegevensbewerkingen met Azure CLI.az storage container create \ --account-name $storageAccountName \ --name state \ --account-key $key \ --auth-mode key
Een Stream Analytics-taak maken
Maak een Stream Analytics-taak met de opdracht 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"
Invoer voor de taak configureren
Voeg invoer aan uw taak toe met behulp van de cmdlet az stream-analytics input. Deze cmdlet gebruikt de taaknaam, taakinvoernaam, resourcegroepnaam en de invoereigenschappen in JSON-indeling als parameters. In dit voorbeeld maakt u een IoT Hub als invoer.
Belangrijk
- Vervang
IOT HUB ACCESS KEY
door de waarde van de Gedeelde toegangssleutel in de IOT Hub verbindingsreeks u hebt opgeslagen. Als de IOT-hub bijvoorbeeld verbindingsreeks is:HostName=MyASAIoTHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=xxxxxxxxxxxxxx=
, isxxxxxxxxxxxxxx=
de waarde van de gedeelde toegangssleutel . Zorg er tijdens het vervangen van de waarde voor dat u geen teken verwijdert\
(escape) voor"
(dubbele aanhalingstekens). - Werk de waarde van
iotHubNamespace
in de volgende opdracht bij als u een andere naam danMyASAIoTHub
. Voer deze opdracht uitecho $iotHubName
om de naam van uw IoT Hub weer te geven.
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"
Uitvoer voor de taak configureren
Voeg uitvoer aan uw taak toe met behulp van de cmdlet az stream-analytics output create. Deze cmdlet gebruikt de taaknaam, taakuitvoernaam, resourcegroepnaam, gegevensbron in JSON-indeling en serialisatietype als parameters.
Belangrijk
Vervang STORAGEACCOUNTNAME>
door de naam van uw Azure Storage-account en STORAGEACCESSKEY>
door de toegangssleutel voor uw opslagaccount. Als u deze waarden niet hebt genoteerd, voert u de volgende opdrachten uit om ze op te halen: echo $storageAccountName
en echo $key
. Zorg er tijdens het vervangen van de waarden voor dat u geen teken verwijdert \
(escape) voor "
(dubbele aanhalingstekens).
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
De transformatiequery definiëren
Voeg een transformatie aan uw taak toe met behulp van de cmdlet 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"
De IoT-simulator uitvoeren
Vervang de tijdelijke aanduiding in regel 15 door het volledige Azure IoT Hub Device verbindingsreeks (niet IoT Hub verbindingsreeks) dat u aan het begin van de quickstart hebt opgeslagen.
Selecteer Uitvoeren. De uitvoer geeft de sensorgegevens en berichten weer die worden verzonden naar de IoT-hub.
Stream Analytics-taak starten en uitvoer controleren
Start de taak met behulp van de cmdlet az stream-analytics job start. Deze cmdlet gebruikt de taaknaam, resourcegroepnaam, uitvoerstartmodus en begintijd als parameters. OutputStartMode
accepteert waarden van JobStartTime
, CustomTime
of LastOutputEventTime
.
Nadat u de volgende cmdlet hebt uitgevoerd, retourneert deze True
als uitvoer als de taak wordt gestart.
az stream-analytics job start \
--resource-group streamanalyticsrg \
--name streamanalyticsjob \
--output-start-mode JobStartTime
Geef het een paar minuten en controleer vervolgens of er een uitvoerbestand is gemaakt in de state
blobcontainer.
Download en open het bestand om verschillende vermeldingen te zien die vergelijkbaar zijn met de volgende:
{
"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
}
}
Resources opschonen
Verwijder de resourcegroep, waarmee alle resources in de resourcegroep worden verwijderd, waaronder de Stream Analytics-taak, IoT Hub en het Azure Storage-account.
az group delete \
--name streamanalyticsrg \
--no-wait
Volgende stappen
In deze snelstart hebt u een eenvoudige Stream Analytics-taak met behulp van de Azure CLI 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: