Szybki start: tworzenie zadania usługi Stream Analytics przy użyciu programu Azure PowerShell
Moduł Azure PowerShell umożliwia tworzenie zasobów platformy Azure i zarządzanie nimi za pomocą poleceń cmdlet programu PowerShell lub skryptów. W tym przewodniku Szybki start pokazano, jak za pomocą modułu Azure PowerShell wdrożyć i uruchomić zadanie usługi Azure Stream Analytics.
Przykładowe zadanie odczytuje dane przesyłane strumieniowo z urządzenia usługi IoT Hub. Dane wejściowe są generowane przez symulator online urządzenia Raspberry Pi. Zadanie usługi Stream Analytics przekształca dane przy użyciu języka zapytań usługi Stream Analytics w celu filtrowania komunikatów o temperaturze większej niż 27°. Następnie zapisuje wynikowe zdarzenia wyjściowe w pliku w magazynie obiektów blob.
- Jeśli nie masz subskrypcji platformy Azure, utwórz bezpłatne konto.
- Dla tego przewodnika Szybki start jest wymagany moduł Azure PowerShell. Uruchom polecenie
Get-Module -ListAvailable Az
, aby znaleźć wersję zainstalowaną na komputerze lokalnym. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie modułu Azure PowerShell. - Niektóre akcje usługi IoT Hub nie są obsługiwane przez program Azure PowerShell i muszą zostać ukończone przy użyciu interfejsu wiersza polecenia platformy Azure w wersji 2.0.70 lub nowszej oraz rozszerzenia IoT dla interfejsu wiersza polecenia platformy Azure. Zainstaluj interfejs wiersza polecenia platformy Azure i użyj polecenia
az extension add --name azure-iot
, aby zainstalować rozszerzenie IoT.
Zaloguj się do subskrypcji platformy Azure za pomocą polecenia Connect-AzAccount
i wprowadź swoje poświadczenia platformy Azure w podręcznym oknie przeglądarki:
# Connect to your Azure account
Connect-AzAccount
Jeśli masz więcej niż jedną subskrypcję, wybierz subskrypcję, z której chcesz korzystać na potrzeby tego przewodnika Szybki start, uruchamiając następujące polecenia cmdlet. Pamiętaj, aby zastąpić ciąg <your subscription name>
nazwą swojej subskrypcji:
# 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
Utwórz grupę zasobów platformy Azure za pomocą polecenia New-AzResourceGroup. Grupa zasobów to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi.
$resourceGroup = "StreamAnalyticsRG"
$location = "WestUS2"
New-AzResourceGroup `
-Name $resourceGroup `
-Location $location
Przed zdefiniowaniem zadania usługi Stream Analytics przygotuj dane, które będą konfigurowane jako dane wejściowe zadania.
Poniższy blok kodu interfejsu wiersza polecenia platformy Azure zawiera wiele poleceń w celu przygotowania danych wejściowych wymaganych przez zadanie. Zapoznaj się z poniższymi sekcjami, aby zrozumieć kod.
W oknie programu PowerShell uruchom
az login
polecenie , aby zalogować się do konta platformy Azure.Po pomyślnym zalogowaniu interfejs wiersza polecenia platformy Azure zwraca listę subskrypcji. Skopiuj subskrypcję używaną w tym przewodniku Szybki start i uruchom
az account set
polecenie , aby wybrać tę subskrypcję. Wybierz tę samą subskrypcję, którą wybrano w poprzedniej sekcji za pomocą programu PowerShell. Pamiętaj, aby zastąpić ciąg<your subscription name>
nazwą swojej subskrypcji.az login az account set --subscription "<your subscription>"
Utwórz centrum IoT Hub przy użyciu
az iot hub create
polecenia . W tym przykładzie tworzone jest centrum IoT Hub o nazwie MyASAIoTHub. Ponieważ nazwy centrów IoT Hub są unikatowe, musisz utworzyć własną nazwę centrum IoT Hub. Ustaw jednostkę SKU na F1, aby używać warstwy Bezpłatna, jeśli jest dostępna w ramach subskrypcji. W przeciwnym razie wybierz kolejną najniższą warstwę.az iot hub create --name "MyASAIoTHub" --resource-group $resourceGroup --sku S1
Po utworzeniu centrum IoT hub pobierz usługę IoT Hub parametry połączenia za pomocą polecenia az iot hub connection-string show. Skopiuj cały parametry połączenia i zapisz go. Potrzebujesz go podczas dodawania usługi IoT Hub jako danych wejściowych do zadania usługi Stream Analytics.
az iot hub connection-string show --resource-group $resourceGroup --hub-name "MyASAIoTHub"
Dodaj urządzenie do usługi IoT Hub przy użyciu
az iot hub device-identity create
polecenia . W tym przykładzie zostanie utworzone urządzenie o nazwie MyASAIoTDevice.az iot hub device-identity create --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice"
Pobierz urządzenie parametry połączenia przy użyciu
az iot hub device-identity connection-string show
polecenia . Skopiuj całe parametry połączenia i zapisz je, ponieważ będą używane podczas tworzenia symulatora urządzenia Raspberry Pi.az iot hub device-identity connection-string show --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice" --output table
Przykładowe dane wyjściowe:
HostName=MyASAIoTHub.azure-devices.net;DeviceId=MyASAIoTDevice;SharedAccessKey=a2mnUsg52+NIgYudxYYUNXI67r0JmNubmfVafojG8=
Poniższy blok kodu programu Azure PowerShell zawiera polecenia służące do utworzenia magazynu obiektów blob, który będzie używany do przechowywania danych wyjściowych zadania. Przejrzyj sekcje, aby zapoznać się z kodem.
Utwórz standardowe konto magazynu ogólnego przeznaczenia za pomocą polecenia cmdlet New-AzStorageAccount. W tym przykładzie tworzone jest konto magazynu o nazwie myasaquickstartstorage z magazynem lokalnie nadmiarowym (LRS, locally redundant storage) i szyfrowaniem obiektów blob (domyślnie włączone).
Pobierz kontekst konta magazynu
$storageAccount.Context
, który definiuje konto magazynu do użycia. Podczas pracy z kontami magazynu możesz odwoływać się do kontekstu, zamiast wielokrotnie podawać poświadczenia.Użyj polecenia New-AzStorageContainer, aby utworzyć nowy kontener magazynu.
Skopiuj klucz magazynu z danych wyjściowych kodu i zapisz go, ponieważ będzie później używany do tworzenia danych wyjściowych zadania przesyłania strumieniowego.
$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
Utwórz zadanie usługi Stream Analytics za pomocą polecenia cmdlet New-AzStreamAnalyticsJob. To polecenie cmdlet przyjmuje nazwę zadania, nazwę grupy zasobów, lokalizację i nazwę jednostki SKU jako parametry. Nazwa zadania może być dowolną przyjazną nazwą, która identyfikuje zadanie. Może ona zawierać wyłącznie znaki alfanumeryczne, łączniki i podkreślenia oraz musi składać się z od 3 do 63 znaków.
New-AzStreamAnalyticsJob
Uruchom polecenie cmdlet .
$jobName = "MyStreamingJob"
New-AzStreamAnalyticsJob `
-ResourceGroupName $resourceGroup `
-Name $jobName `
-Location centralus `
-SkuName Standard
Dodaj dane wejściowe do zadania za pomocą polecenia cmdlet New-AzStreamAnalyticsInput. To polecenie cmdlet przyjmuje jako parametry nazwę zadania, nazwę danych wejściowych zadania, nazwę grupy zasobów i definicję danych wejściowych zadania. Definicja danych wejściowych zadania to plik JSON, który zawiera właściwości wymagane do skonfigurowania danych wejściowych zadania. W tym przykładzie utworzysz magazyn obiektów blob jako dane wejściowe.
Na maszynie lokalnej utwórz plik o nazwie JobInputDefinition.json
i dodaj do niego następujące dane JSON.
Ważne
- Zastąp
accesspolicykey
element fragmentemSharedAccessKey
usługi IoT Hub parametry połączenia zapisanym w poprzedniej sekcji. - Jeśli użyto innej nazwy centrum IoT, zaktualizuj wartość .
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"
}
Ustaw zmienną $jobInputDefinitionFile
programu PowerShell na ścieżkę, w której zapisano plik JSON definicji danych wejściowych zadania.
$jobInputDefinitionFile = "C:\JobInputDefinition.json"
Następnie uruchom New-AzStreamAnalyticsInput
polecenie cmdlet , aby utworzyć dane wejściowe usługi Azure IoT Hub dla zadania usługi Stream Analytics.
$jobInputName = "IoTHubInput"
New-AzStreamAnalyticsInput `
-ResourceGroupName $resourceGroup `
-JobName $jobName `
-File $jobInputDefinitionFile `
-Name $jobInputName
Dodaj dane wyjściowe do zadania za pomocą polecenia cmdlet New-AzStreamAnalyticsOutput. To polecenie cmdlet przyjmuje jako parametry nazwę zadania, nazwę danych wyjściowych zadania, nazwę grupy zasobów i definicję danych wyjściowych zadania. Definicja danych wyjściowych zadania to plik JSON, który zawiera właściwości wymagane do skonfigurowania danych wyjściowych zadania. W tym przykładzie jako dane wyjściowe używany jest magazyn obiektów blob.
Na maszynie lokalnej utwórz plik o nazwie JobOutputDefinition.json
i dodaj do niego następujące dane JSON.
Ważne
Zastąp wartość parametru accountKey
kluczem dostępu konta magazynu, który jest wartością przechowywaną w $storageAccountKey
wartości.
{
"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"
}
Ustaw zmienną $jobOutputDefinitionFile
programu PowerShell na ścieżkę, w której zapisano plik JSON definicji danych wyjściowych zadania.
$jobOutputDefinitionFile = "C:\JobOutputDefinition.json"
Następnie uruchom New-AzStreamAnalyticsOutput
polecenie cmdlet , aby utworzyć dane wyjściowe usługi Azure Blob Storage dla zadania usługi Stream Analytics.
$jobOutputName = "BlobOutput"
New-AzStreamAnalyticsOutput `
-ResourceGroupName $resourceGroup `
-JobName $jobName `
-File $jobOutputDefinitionFile `
-Name $jobOutputName
Dodaj przekształcenie zadania przy użyciu polecenia cmdlet New-AzStreamAnalyticsTransformation. To polecenie cmdlet przyjmuje jako parametry nazwę zadania, nazwę przekształcenia zadania, nazwę grupy zasobów i definicję przekształcenia zadania. Na maszynie lokalnej utwórz plik o nazwie JobTransformationDefinition.json
i dodaj do niego następujące dane JSON. Plik JSON zawiera parametr zapytania, który definiuje zapytanie przekształcenia:
{
"name":"MyTransformation",
"type":"Microsoft.StreamAnalytics/streamingjobs/transformations",
"properties":{
"streamingUnits":1,
"script":null,
"query":"SELECT * INTO BlobOutput FROM IoTHubInput WHERE Temperature > 27"
}
}
Następnie uruchom polecenie cmdlet 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
Otwórz symulator Raspberry Pi Azure IoT Online Simulator.
Zastąp symbol zastępczy w wierszu 15 całymi parametrami połączenia urządzenia usługi Azure IoT Hub, które zostały zapisane w poprzedniej sekcji.
Kliknij Uruchom. Dane wyjściowe powinny pokazywać dane z czujników i komunikaty, które są wysyłane do usługi IoT Hub.
Uruchom zadanie przy użyciu polecenia cmdlet Start-AzStreamAnalyticsJob. To polecenie cmdlet przyjmuje jako parametry nazwę zadania, nazwę grupy zasobów, tryb uruchamiania danych wyjściowych i czas rozpoczęcia. Parametr OutputStartMode
przyjmuje wartość JobStartTime
, CustomTime
lub LastOutputEventTime
. Aby dowiedzieć się więcej na temat znaczenia poszczególnych wartości, zobacz sekcję parametrów w dokumentacji programu PowerShell.
Po uruchomieniu poniższego polecenia cmdlet zwróci ono wartość True
jako dane wyjściowe, jeśli zadanie zostało uruchomione. W kontenerze magazynu zostanie utworzony folder wyjściowy z przekształconymi danymi.
Start-AzStreamAnalyticsJob `
-ResourceGroupName $resourceGroup `
-Name $jobName `
-OutputStartMode 'JobStartTime'
Gdy grupa zasobów, zadanie przesyłania strumieniowego i wszystkie pokrewne zasoby nie będą już potrzebne, usuń je. Usunięcie zadania pozwala uniknąć opłat za jednostki przesyłania strumieniowego zużywane przez zadanie. Jeśli planujesz użyć zadania w przyszłości, możesz pominąć jego usuwanie i na razie je zatrzymać. Jeśli nie planujesz używania tego zadania w przyszłości, usuń wszystkie zasoby utworzone w ramach tego przewodnika Szybki start, uruchamiając następujące polecenie cmdlet:
Remove-AzResourceGroup `
-Name $resourceGroup
W tym przewodniku Szybki start proste zadanie usługi Stream Analytics zostało wdrożone przy użyciu programu PowerShell. Możesz też wdrażać zadania usługi Stream Analytics przy użyciu witryny Azure Portal i programu Visual Studio.
Aby dowiedzieć się więcej o konfigurowaniu innych źródeł danych wejściowych i wykonywaniu wykrywania w czasie rzeczywistym, zapoznaj się z następującym artykułem: