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. V tomto rychlém startu se dozvíte, jak pomocí modulu Azure PowerShell nasadit a spustit úlohu Azure Stream Analytics.

Ukázková úloha čte streamovaná data z IoT Hub zařízení. Vstupní data jsou generována online simulátorem Raspberry Pi. Úloha Stream Analytics transformuje data pomocí dotazovacího jazyka Stream Analytics a filtruje zprávy s teplotou vyšší než 27°. Potom zapíše výsledné výstupní události do souboru v úložišti objektů blob.

Než začnete

  • 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 ke svému předplatnému Azure pomocí Connect-AzAccount příkazu a do automaticky otevíraných oken zadejte svoje 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 tento rychlý start, 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í rutiny 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 obsahuje mnoho příkazů pro přípravu vstupních dat požadovaných úlohou. Projděte si následující části, abyste porozuměli kódu.

  1. Spuštěním příkazu v okně PowerShellu az login se přihlaste 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 tento rychlý start, a spuštěním az account set příkazu toto předplatné vyberte. 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í az iot hub create příkazu . Tento příklad vytvoří IoT Hub s názvem MyASAIoTHub. Vzhledem k tomu, že IoT Hub názvy jsou jedinečné, musíte přijít s vlastním názvem IoT Hub. Nastavte skladovou položku na F1, aby se používala úroveň Free, pokud je k dispozici ve vašem předplatném. Pokud ne, zvolte další nejnižší úroveň.

    az iot hub create --name "MyASAIoTHub" --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. Potřebujete ho, když přidáte IoT Hub jako vstup do úlohy Stream Analytics.

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

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

    az iot hub device-identity connection-string show --resource-group $resourceGroup --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í blok kódu Azure PowerShell 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ě 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í rutiny New-AzStorageContainer.

  4. Zkopírujte klíč úložiště, který je výstupem kódu, 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á jako parametry název úlohy, název skupiny prostředků, umístění a název skladové položky. Jako název úlohy můžete zadat jakýkoli popisný název, který identifikuje vaši úlohu. Může obsahovat pouze alfanumerické znaky, spojovníky a podtržítka a musí mít délku 3 až 63 znaků.

Spusťte rutinu New-AzStreamAnalyticsJob .

$jobName = "MyStreamingJob"
New-AzStreamAnalyticsJob `
  -ResourceGroupName $resourceGroup `
  -Name $jobName `
  -Location centralus `
  -SkuName Standard

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.

Důležité

  • SharedAccessKey Nahraďte accesspolicykey částí připojovacího řetězce IoT Hub, který jste uložili v předchozí části.
  • Pokud jste pro centrum IoT použili jiný název, aktualizujte hodnotu pro 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"
}

Nastavte proměnnou $jobInputDefinitionFile PowerShellu na cestu, kam jste uložili soubor JSON definice vstupní úlohy.

$jobInputDefinitionFile = "C:\JobInputDefinition.json"

Dále spuštěním rutiny New-AzStreamAnalyticsInput vytvořte vstup Azure IoT Hub pro úlohu Stream Analytics.

$jobInputName = "IoTHubInput"
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.

Důležité

Hodnotu nahraďte accountKey přístupovým klíčem vašeho účtu úložiště, který je hodnotou uloženou 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"
}

Nastavte proměnnou $jobOutputDefinitionFile PowerShellu na cestu, kam jste uložili soubor JSON definice výstupu úlohy.

$jobOutputDefinitionFile = "C:\JobOutputDefinition.json"

Dále spuštěním rutiny New-AzStreamAnalyticsOutput vytvořte výstup Azure Blob Storage pro úlohu Stream Analytics.

$jobOutputName = "BlobOutput"

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

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.

$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

Spuštění simulátoru IoT

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

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

  3. Klikněte na Spustit. Výstup by měl zobrazit data ze senzorů a zprávy, které se odesílají do IoT Hub.

    Snímek obrazovky znázorňující online simulátor Raspberry Pi Azure IoT

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 tuto úlohu nebudete dál používat, spuštěním následující rutiny odstraňte všechny prostředky vytvořené v rámci tohoto rychlého startu:

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: