Szybki start: tworzenie zadania usługi Stream Analytics przy użyciu 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 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.

Zanim rozpoczniesz

  • 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 IoT Hub nie są obsługiwane przez 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.

Logowanie do platformy Azure

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

Tworzenie grupy zasobów

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

Przygotowywanie danych wejściowych

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.

  1. 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>"
    
  2. Utwórz 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 parametry połączenia tego centrum IoT Hub za pomocą polecenia az iot hub show-connection-string. Skopiuj wszystkie parametry połączenia i zapisz je. Jest on potrzebny podczas dodawania IoT Hub jako danych wejściowych do zadania usługi Stream Analytics.

    az iot hub show-connection-string --resource-group $resourceGroup --hub-name "MyASAIoTHub"
    
  3. Dodaj urządzenie do 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"
    
  4. Pobierz parametry połączenia urządzenia 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=
    

Tworzenie magazynu obiektów blob

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.

  1. 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).

  2. 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.

  3. Użyj polecenia New-AzStorageContainer, aby utworzyć nowy kontener magazynu.

  4. 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
    

Tworzenie zadania usługi Stream Analytics

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

Konfigurowanie danych wejściowych zadania

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 accesspolicykeySharedAccessKey element fragmentem parametrów połączenia IoT Hub zapisanych 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 Azure IoT Hub dla zadania usługi Stream Analytics.

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

Konfigurowanie danych wyjściowych zadania

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 Azure Blob Storage dla zadania usługi Stream Analytics.

$jobOutputName = "BlobOutput"

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

Definiowanie zapytania przekształcenia

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

Uruchamianie symulatora IoT

  1. Otwórz symulator Raspberry Pi Azure IoT Online Simulator.

  2. 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.

  3. Kliknij przycisk Uruchom. Dane wyjściowe powinny pokazywać dane z czujników i komunikaty, które są wysyłane do usługi IoT Hub.

    Zrzut ekranu przedstawiający symulator usługi Azure IoT Online urządzenia Raspberry Pi.

Uruchamianie zadania usługi Stream Analytics i sprawdzanie danych wyjściowych

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'

Czyszczenie zasobów

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

Następne kroki

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: