Sdílet prostřednictvím


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

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 ze zařízení IoT Hubu. Vstupní data se generují online simulátorem Raspberry Pi. Úloha Stream Analytics transformuje data pomocí dotazovacího jazyka Stream Analytics k filtrování zpráv s teplotou větší než 27°. Potom zapíše výsledné výstupní události do souboru v úložišti objektů blob.

Než začnete

  • Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet.
  • Tento rychlý start vyžaduje modul Azure PowerShellu. 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.
  • Azure PowerShell nepodporuje některé akce IoT Hubu a musí se dokončit 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 prohlíž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 pro účely tohoto rychlého startu použít, 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 zdrojů

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ů k přípravě vstupních dat požadovaných úlohou. Projděte si následující části a seznamte se s kódem.

  1. V okně PowerShellu az login spusťte příkaz pro přihlášení k úč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 az account set příkazu 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. Pomocí příkazu vytvořte IoT Hub az iot hub create . Tento příklad vytvoří IoT Hub s názvem MyASAIoTHub. Vzhledem k tomu, že názvy ioT Hubu jsou jedinečné, musíte přijít s vlastním názvem IoT Hubu. Nastavte skladovou položku na F1, aby používala úroveň Free, pokud je dostupná pro vaše předplatné. 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 connection-string show. Zkopírujte celý připojovací řetězec a uložte ho. Potřebujete ho, když ioT Hub přidáte jako vstup do úlohy Stream Analytics.

    az iot hub connection-string show --resource-group $resourceGroup --hub-name "MyASAIoTHub"
    
  3. Přidejte zařízení do IoT Hubu az iot hub device-identity create pomocí 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í. Zkopírujte celý připojovací řetězec a uložte ho při vytváření simulátoru Raspberry Pi.

    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 PowerShellu 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í 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 jako parametry přebírá 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 mít jenom alfanumerické znaky, pomlč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 ioT Hubu připojovací řetězec, kterou 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 vstupu úlohy.

$jobInputDefinitionFile = "C:\JobInputDefinition.json"

Pak spuštěním rutiny New-AzStreamAnalyticsInput vytvořte vstup Azure IoT Hubu 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é

Nahraďte hodnotu accountKey přístupovým klíčem vašeho účtu úložiště, který je hodnotou uloženou v $storageAccountKey hodnotě.

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

Pak spuštěním rutiny New-AzStreamAnalyticsOutput vytvořte výstup služby 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 simulátor Raspberry Pi Azure IoT Online.

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

  3. Klepněte na položku Spustit. Výstup by měl zobrazit data snímačů a zprávy, které se odesílají do ioT Hubu.

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

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, odstraňte všechny prostředky vytvořené v tomto rychlém startu 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: