Rychlý start: Vytvoření úlohy Stream Analytics pomocí Azure PowerShell

Modul Azure PowerShell slouží k vytváření a správě prostředků Azure pomocí rutin nebo skriptů PowerShellu. Tento rychlý start podrobně popisuje nasazení a spuštění úlohy Azure Stream Analytics pomocí modulu Azure PowerShell.

Ukázková úloha čte streamovaná data ze zařízení IoT Hub. Vstupní data se generují online simulátorem Raspberry Pi. Dále úloha Stream Analytics transformuje data pomocí dotazovacího jazyka Stream Analytics k filtrování zpráv s teplotou větší než 27°. Nakonec zapíše výsledné výstupní události do souboru v úložišti objektů blob.

Než začnete

Poznámka

Tento článek používá modul Azure Az PowerShell, což je doporučený modul PowerShellu pro interakci s Azure. Pokud chcete začít s modulem Az PowerShell, projděte si téma věnované instalaci Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

  • Pokud nemáte předplatné Azure, vytvořte si bezplatný účet.

  • Tento rychlý start vyžaduje modul Azure PowerShell. Pomocí příkazu Get-Module -ListAvailable Az vyhledejte verzi, která je nainstalovaná na místním počítači. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace modulu Azure PowerShell.

  • Některé IoT Hub akce nejsou podporovány Azure PowerShell a musí být dokončeny pomocí Azure CLI verze 2.0.70 nebo novější a rozšíření IoT pro Azure CLI. Nainstalujte Azure CLI a použijte az extension add --name azure-iot k instalaci rozšíření IoT.

Přihlášení k Azure

Přihlaste se k předplatnému Azure pomocí Connect-AzAccount příkazu a do automaticky otevírané prohlížeče zadejte přihlašovací údaje Azure:

# Connect to your Azure account
Connect-AzAccount

Pokud máte více než jedno předplatné, vyberte předplatné, které chcete použít pro účely tohoto rychlého startu spuštěním následujících rutin. Ujistěte se, že jste <your subscription name> nahradili názvem vašeho předplatného:

# 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

Vytvoření skupiny prostředků

Vytvořte skupinu prostředků Azure pomocí New-AzResourceGroup. Skupina prostředků je logický kontejner, ve kterém se nasazují a spravují prostředky Azure.

$resourceGroup = "StreamAnalyticsRG"
$location = "WestUS2"
New-AzResourceGroup `
    -Name $resourceGroup `
    -Location $location

Příprava vstupních dat

Než začnete definovat úlohu Stream Analytics, připravte si data nakonfigurovaná jako vstup pro tuto úlohu.

Následující blok kódu Azure CLI provede mnoho příkazů k přípravě vstupních dat požadovaných úlohou. Prohlédněte si jednotlivé části a seznamte se s kódem.

  1. V okně PowerShellu spusťte příkaz az login a přihlaste se ke svému účtu Azure.

    Po úspěšném přihlášení vrátí Azure CLI seznam vašich předplatných. Zkopírujte předplatné, které používáte pro účely tohoto rychlého startu, a spuštěním příkazu az account set vyberte toto předplatné. Zvolte stejné předplatné, které jste vybrali v předchozí části pomocí PowerShellu. Nezapomeňte nahradit <your subscription name> názvem vašeho předplatného.

    az login
    
    az account set --subscription "<your subscription>"
    
  2. Vytvořte IoT Hub pomocí příkazu az iot hub create. Tento příklad vytvoří IoT Hub s názvem MyASAIoTHub. Vzhledem k tomu, že názvy IoT Hub jsou jedinečné, musíte přijít s vlastním názvem IoT Hub. Nastavte skladovou položku na F1 tak, aby používala úroveň Free, pokud je k dispozici u vašeho předplatného. Pokud ne, zvolte další nejnižší úroveň.

    az iot hub create --name "<your IoT Hub name>" --resource-group $resourceGroup --sku S1
    

    Po vytvoření centra IoT získejte připojovací řetězec IoT Hub pomocí příkazu az iot hub show-connection-string. Zkopírujte celý připojovací řetězec a uložte ho, když přidáte IoT Hub jako vstup do úlohy Stream Analytics.

    az iot hub show-connection-string --hub-name "MyASAIoTHub"
    
  3. Přidejte zařízení do IoT Hub pomocí příkazu az iot hub device-identity create. Tento příklad vytvoří zařízení s názvem MyASAIoTDevice.

    az iot hub device-identity create --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice"
    
  4. Získejte připojovací řetězec zařízení pomocí příkazu az iot hub device-identity show-connection-string . Zkopírujte celý připojovací řetězec a uložte ho při vytváření simulátoru Raspberry Pi.

    az iot hub device-identity show-connection-string --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice" --output table
    

    Příklad výstupu:

    HostName=MyASAIoTHub.azure-devices.net;DeviceId=MyASAIoTDevice;SharedAccessKey=a2mnUsg52+NIgYudxYYUNXI67r0JmNubmfVafojG8=
    

Vytvoření úložiště objektů blob

Následující Azure PowerShell bloku kódu používá příkazy k vytvoření úložiště objektů blob, které se používá pro výstup úlohy. Prohlédněte si jednotlivé části a seznamte se s kódem.

  1. Vytvořte standardní účet úložiště pro obecné účely pomocí rutiny New-AzStorageAccount . Tento příklad vytvoří účet úložiště s názvem myasaquickstartstorage s místně redundantním úložištěm (LRS) a šifrováním objektů blob (ve výchozím nastavení povoleno).

  2. Načtěte kontext účtu úložiště $storageAccount.Context určující účet úložiště, který chcete použít. Když pracujete s účtem úložiště, namísto opakovaného zadávání přihlašovacích údajů odkazujete na jeho kontext.

  3. Vytvořte kontejner úložiště pomocí New-AzStorageContainer.

  4. Zkopírujte klíč úložiště, který kód vypíše, a uložte ho, abyste později vytvořili výstup úlohy streamování.

    $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
    

Vytvoření úlohy Stream Analytics

Vytvořte úlohu Stream Analytics pomocí rutiny New-AzStreamAnalyticsJob . Tato rutina přebírá název úlohy, název skupiny prostředků a definici úlohy jako parametry. Jako název úlohy můžete zadat jakýkoli popisný název, který identifikuje vaši úlohu. Může mít pouze alfanumerické znaky, spojovníky a podtržítka a musí mít délku 3 až 63 znaků. Definici úlohy představuje soubor JSON, který obsahuje vlastnosti potřebné k vytvoření úlohy. Na místním počítači vytvořte soubor s názvem JobDefinition.json a přidejte do něj následující data JSON:

{
  "location":"WestUS2",
  "properties":{
    "sku":{
      "name":"standard"
    },
    "eventsOutOfOrderPolicy":"adjust",
    "eventsOutOfOrderMaxDelayInSeconds":10,
    "compatibilityLevel": 1.1
  }
}

Potom spusťte rutinu New-AzStreamAnalyticsJob. jobDefinitionFile Hodnotu proměnné nahraďte cestou, do které jste uložili soubor JSON definice úlohy.

$jobName = "MyStreamingJob"
$jobDefinitionFile = "C:\JobDefinition.json"
New-AzStreamAnalyticsJob `
  -ResourceGroupName $resourceGroup `
  -File $jobDefinitionFile `
  -Name $jobName `
  -Force

Konfigurace vstupu do úlohy

Přidejte do úlohy vstup pomocí rutiny New-AzStreamAnalyticsInput . Tato rutina použije název úlohy, název vstupu úlohy, název skupiny prostředků a definici vstupu úlohy jako parametry. Definici vstupu úlohy představuje soubor JSON, který obsahuje vlastnosti potřebné ke konfiguraci vstupu úlohy. V tomto příkladu vytvoříte úložiště objektů blob jako vstup.

Na místním počítači vytvořte soubor s názvem JobInputDefinition.json a přidejte do něj následující data JSON. Nezapomeňte hodnotu nahradit accesspolicykeySharedAccessKey částí připojovacího řetězce IoT Hub, který jste uložili v předchozí části.

{
    "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"
}

Potom spusťte New-AzStreamAnalyticsInput rutinu, nezapomeňte nahradit hodnotu jobDefinitionFile proměnné cestou, kam jste uložili soubor JSON definice vstupu úlohy.

$jobInputName = "IoTHubInput"
$jobInputDefinitionFile = "C:\JobInputDefinition.json"
New-AzStreamAnalyticsInput `
  -ResourceGroupName $resourceGroup `
  -JobName $jobName `
  -File $jobInputDefinitionFile `
  -Name $jobInputName

Konfigurace výstupu do úlohy

Přidejte výstup do úlohy pomocí rutiny New-AzStreamAnalyticsOutput . Tato rutina použije název úlohy, název výstupu úlohy, název skupiny prostředků a definici výstupu úlohy jako parametry. Definici výstupu úlohy představuje soubor JSON, který obsahuje vlastnosti potřebné ke konfiguraci výstupu úlohy. V tomto příkladu je výstupem úložiště objektů blob.

Na místním počítači vytvořte soubor s názvem JobOutputDefinition.json a přidejte do něj následující data JSON. Nezapomeňte nahradit hodnotu položky accountKey přístupovým klíčem k vašemu účtu úložiště, který je uložený v hodnotě $storageAccountKey.

{
    "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"
}

Potom spusťte rutinu New-AzStreamAnalyticsOutput. Nezapomeňte nahradit hodnotu proměnné jobOutputDefinitionFile cestou, do které jste uložili soubor JSON definice výstupu úlohy.

$jobOutputName = "BlobOutput"
$jobOutputDefinitionFile = "C:\JobOutputDefinition.json"
New-AzStreamAnalyticsOutput `
  -ResourceGroupName $resourceGroup `
  -JobName $jobName `
  -File $jobOutputDefinitionFile `
  -Name $jobOutputName -Force

Definice transformačního dotazu

Přidejte transformaci úlohy pomocí rutiny New-AzStreamAnalyticsTransformation . Tato rutina použije název úlohy, název transformace úlohy, název skupiny prostředků a definici transformace úlohy jako parametry. Na místním počítači vytvořte soubor s názvem JobTransformationDefinition.json a přidejte do něj následující data JSON. Soubor JSON obsahuje parametr dotazu, který definuje transformaci dotazu:

{
    "name":"MyTransformation",
    "type":"Microsoft.StreamAnalytics/streamingjobs/transformations",
    "properties":{
        "streamingUnits":1,
        "script":null,
        "query":" SELECT * INTO BlobOutput FROM IoTHubInput WHERE Temperature > 27"
    }
}

Potom spusťte rutinu New-AzStreamAnalyticsTransformation. Nezapomeňte nahradit hodnotu jobTransformationDefinitionFile proměnné cestou, do které jste uložili soubor JSON definice transformace úlohy.

$jobTransformationName = "MyJobTransformation"
$jobTransformationDefinitionFile = "C:\JobTransformationDefinition.json"
New-AzStreamAnalyticsTransformation `
  -ResourceGroupName $resourceGroup `
  -JobName $jobName `
  -File $jobTransformationDefinitionFile `
  -Name $jobTransformationName -Force

Spuštění simulátoru IoT

  1. Otevřete online simulátor Raspberry Pi Azure IoT.

  2. Zástupný symbol v řádku 15 nahraďte celým připojovacím řetězcem Azure IoT Hub Zařízení, který jste uložili v předchozí části.

  3. Klikněte na Spustit. Výstup by měl zobrazovat data snímačů a zprávy, které se odesílají do vašeho IoT Hub.

    Raspberry Pi Azure IoT Online Simulator

Spuštění úlohy Stream Analytics a kontrola výstupu

Spusťte úlohu pomocí rutiny Start-AzStreamAnalyticsJob . Tato rutina použije název úlohy, název skupiny prostředků, režim spuštění výstupu a čas spuštění jako parametry. Parametr OutputStartMode připouští hodnoty JobStartTime, CustomTime nebo LastOutputEventTime. Další informace o tom, na co tyto hodnoty odkazují, najdete v části Parametry v dokumentaci k prostředí PowerShell.

Jakmile spustíte následující rutinu, vrátí jako výstup hodnotu True, pokud se úloha spustí. V kontejneru úložiště se vytvoří výstupní složku s transformovanými daty.

Start-AzStreamAnalyticsJob `
  -ResourceGroupName $resourceGroup `
  -Name $jobName `
  -OutputStartMode 'JobStartTime'

Vyčištění prostředků

Odstraňte skupinu prostředků, úlohu streamování a všechny související prostředky, pokud je už nepotřebujete. Odstraněním úlohy se zabrání zaúčtování jednotek streamování, které daná úloha spotřebovává. Pokud máte v plánu tuto úlohu ještě někdy používat, nemusíte ji odstraňovat a prozatím ji jenom zastavte. Pokud nebudete tuto úlohu dál používat, odstraňte všechny prostředky vytvořené tímto rychlým startem spuštěním následující rutiny:

Remove-AzResourceGroup `
  -Name $resourceGroup

Další kroky

V tomto rychlém startu jste pomocí PowerShellu nasadili jednoduchou úlohu Stream Analytics. Úlohy Stream Analytics můžete nasadit také pomocí webu Azure Portal a sady Visual Studio.

Pokud se chcete dozvědět o konfiguraci dalších vstupních zdrojů a provádění detekce v reálném čase, pokračujte na další článek: