Rövid útmutató: Stream Analytics-feladat létrehozása Azure PowerShell használatával

A Azure PowerShell modul az Azure-erőforrások PowerShell-parancsmagok vagy szkriptek használatával történő létrehozására és kezelésére szolgál. Ez a rövid útmutató bemutatja, hogyan használható a Azure PowerShell modul egy Azure Stream Analytics-feladat üzembe helyezésére és futtatására.

A mintafeladat beolvassa a streamelési adatokat egy IoT Hub eszközről. A bemeneti adatokat egy Raspberry Pi online szimulátor hozza létre. A Stream Analytics-feladat átalakítja az adatokat a Stream Analytics lekérdezési nyelvével a 27°-nál magasabb hőmérsékletű üzenetek szűréséhez. Ezután az eredményül kapott kimeneti eseményeket egy blobtárolóban lévő fájlba írja.

Előkészületek

  • Ha nem rendelkezik Azure-előfizetéssel, hozzon létre egy ingyenes fiókot.
  • Ehhez a rövid útmutatóhoz szükség van a Azure PowerShell modulra. Ahhoz, hogy megtudja, melyik verzió van telepítve a helyi gépen, futtassa a Get-Module -ListAvailable Az parancsot. Ha telepíteni vagy frissíteni szeretne, olvassa el az Azure PowerShell-modul telepítését ismertető cikket.
  • Egyes IoT Hub műveleteket a Azure PowerShell nem támogat, és az Azure CLI 2.0.70-es vagy újabb verziójával, valamint az Azure CLI IoT-bővítményével kell elvégezni. Telepítse az Azure CLI-t , és a használatával az extension add --name azure-iot telepítse az IoT-bővítményt.

Bejelentkezés az Azure-ba

Jelentkezzen be az Azure-előfizetésébe a Connect-AzAccount paranccsal, és adja meg Azure-beli hitelesítő adatait az előugró böngészőben:

# Connect to your Azure account
Connect-AzAccount

Ha több előfizetéssel rendelkezik, az alábbi parancsmagok futtatásával válassza ki a rövid útmutatóhoz használni kívánt előfizetést. Ügyeljen rá, hogy a <your subscription name> helyett saját előfizetésének a nevét adja meg:

# 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

Erőforráscsoport létrehozása

Hozzon létre egy Azure-erőforráscsoportot a New-AzResourceGroup paranccsal. Az erőforráscsoport olyan logikai tároló, amelybe a rendszer üzembe helyezi és kezeli az Azure-erőforrásokat.

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

A bemeneti adatok előkészítése

A Stream Analytics-feladat létrehozása előtt készítse elő azokat az adatokat, amelyek a feladat bemenetét fogják képezni.

Az alábbi Azure CLI-kódblokk számos parancsot kínál a feladathoz szükséges bemeneti adatok előkészítéséhez. A kód megértéséhez tekintse át az alábbi szakaszokat.

  1. A PowerShell-ablakban futtassa a parancsot az az login Azure-fiókba való bejelentkezéshez.

    Ha sikeresen bejelentkezik, az Azure CLI visszaadja az előfizetések listáját. Másolja ki a rövid útmutatóhoz használt előfizetést, és futtassa a parancsot az az account set előfizetés kiválasztásához. Válassza ki ugyanazt az előfizetést, amit az előző szakaszban a PowerShell-lel választott. Ügyeljen arra, hogy a helyére <your subscription name> írja be az előfizetés nevét.

    az login
    
    az account set --subscription "<your subscription>"
    
  2. Hozzon létre egy IoT Hub a az iot hub create paranccsal. Ez a példa létrehoz egy MyASAIoTHub nevű IoT Hub. Mivel IoT Hub nevek egyediek, saját IoT Hub nevet kell létrehoznia. Állítsa az SKU-t F1 értékre az ingyenes szint használatához, ha az elérhető az előfizetésében. Ha nem, válassza a következő legalacsonyabb szintet.

    az iot hub create --name "MyASAIoTHub" --resource-group $resourceGroup --sku S1
    

    Az IoT Hub létrehozása után kérje le a IoT Hub kapcsolati sztring az az iot hub show-connection-string paranccsal. Másolja ki a teljes kapcsolati sztring, és mentse. Szüksége lesz rá, amikor hozzáadja a IoT Hub bemenetként a Stream Analytics-feladathoz.

    az iot hub show-connection-string --resource-group $resourceGroup --hub-name "MyASAIoTHub"
    
  3. Adjon hozzá egy eszközt a IoT Hub a az iot hub device-identity create paranccsal. Ez a példa egy MyASAIoTDevice nevű eszközt hoz létre.

    az iot hub device-identity create --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice"
    
  4. Kérje le az eszközt kapcsolati sztring a az iot hub device-identity connection-string show paranccsal. Másolja ki a teljes kapcsolati sztring, és mentse a Raspberry Pi-szimulátor létrehozásakor.

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

    Példa a kimenetre:

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

Blob Storage létrehozása

Az alábbi Azure PowerShell kódblokk parancsokat használ a feladat kimenetéhez használt blobtároló létrehozásához. Tekintse át az egyes szakaszokat a kód értelmezése céljából.

  1. Hozzon létre egy standard általános célú tárfiókot a New-AzStorageAccount parancsmaggal. Ez a példa létrehoz egy myasaquickstartstorage nevű tárfiókot helyileg redundáns tárolással (LRS) és blobtitkosítással (alapértelmezés szerint engedélyezve).

  2. Kérje le a $storageAccount.Context nevű tárfiókkörnyezetet, amely meghatározza a használni kívánt tárfiókot. Ha a tárfiókok használatával történő munka során erre a környezetre hivatkozik, nem kell minden alkalommal megadnia a hitelesítő adatokat.

  3. Hozzon létre egy tárolót a New-AzStorageContainer használatával.

  4. Másolja ki a kód által kimeneti tárkulcsot, és mentse a kulcsot a streamelési feladat kimenetének későbbi létrehozásához.

    $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
    

Stream Analytics-feladat létrehozása

Hozzon létre egy Stream Analytics-feladatot a New-AzStreamAnalyticsJob parancsmaggal. Ez a parancsmag paraméterként veszi fel a feladat nevét, az erőforráscsoport nevét, a helyet és a termékváltozat nevét. A feladat neve bármilyen, a feladatot azonosító rövid név lehet. Csak alfanumerikus karaktereket, kötőjeleket és aláhúzásjeleket tartalmazhat, és 3 és 63 karakter közötti hosszúságúnak kell lennie.

Futtassa a New-AzStreamAnalyticsJob parancsmagot.

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

A feladat bemenetének konfigurálása

Adjon hozzá egy bemenetet a feladathoz a New-AzStreamAnalyticsInput parancsmag használatával. Ennél a parancsmagnál a feladat neve, a feladat bemenetének a neve, az erőforráscsoport neve, és a feladat bemenetének definíciója adható meg paraméterként. A feladat bemenetének definíciója egy JSON-fájl, amely a feladat bemenetének konfigurálásához szükséges tulajdonságokat tartalmazza. Ebben a példában egy blobtárolót hoz létre bemenetként.

Hozzon létre a helyi gépén egy JobInputDefinition.json nevű fájlt, és adja hozzá a következő JSON-adatokat.

Fontos

  • Cserélje le accesspolicykey a elemet az SharedAccessKey előző szakaszban mentett IoT Hub kapcsolati sztring részére.
  • Ha más nevet használt az IoT Hubhoz, frissítse a értékét.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"
}

Állítsa a $jobInputDefinitionFile PowerShell-változót arra az elérési útra, ahol a feladat bemeneti definíciójának JSON-fájlját tárolta.

$jobInputDefinitionFile = "C:\JobInputDefinition.json"

Ezután futtassa a New-AzStreamAnalyticsInput parancsmagot egy Azure IoT Hub bemenet létrehozásához a Stream Analytics-feladathoz.

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

A feladat kimenetének konfigurálása

Adjon hozzá egy kimenetet a feladathoz a New-AzStreamAnalyticsOutput parancsmag használatával. Ennél a parancsmagnál a feladat neve, a feladat kimenetének a neve, az erőforráscsoport neve, és a feladat kimenetének definíciója adható meg paraméterként. A feladat kimenetének definíciója egy JSON-fájl, amely a feladat kimenetének konfigurálásához szükséges tulajdonságokat tartalmazza. Ez a példa egy Blob Storage-tárolót használ kimenetként.

Hozzon létre a helyi gépén egy JobOutputDefinition.json nevű fájlt, és adja hozzá a következő JSON-adatokat.

Fontos

Cserélje le a értékét accountKey a tárfiók hozzáférési kulcsára, amely az értékben $storageAccountKey tárolt érték.

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

Állítsa a $jobOutputDefinitionFile PowerShell-változót arra az elérési útra, ahol a feladat kimeneti definíciójának JSON-fájlját tárolta.

$jobOutputDefinitionFile = "C:\JobOutputDefinition.json"

Ezután futtassa a New-AzStreamAnalyticsOutput parancsmagot egy Azure Blob Storage kimenet létrehozásához a Stream Analytics-feladathoz.

$jobOutputName = "BlobOutput"

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

A transzformációs lekérdezés definiálása

Adjon hozzá egy átalakítást a feladathoz a New-AzStreamAnalyticsTransformation parancsmag használatával. Ennél a parancsmagnál a feladat neve, a feladat transzformációjának a neve, az erőforráscsoport neve, és a feladat transzformációjának definíciója adható meg paraméterként. Hozzon létre a helyi gépén egy JobTransformationDefinition.json nevű fájlt, és adja hozzá a következő JSON-adatokat. A JSON-fájl tartalmaz egy query (lekérdezés) paramétert, amellyel definiálható a transzformációs lekérdezés:

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

Ezután futtassa a New-AzStreamAnalyticsTransformation parancsmagot.

$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

Az IoT-szimulátor futtatása

  1. Nyissa meg a Raspberry Pi Azure IoT Online-szimulátort.

  2. Cserélje le a helyőrzőt a 15. sorban az előző szakaszban mentett teljes Azure IoT Hub Eszköz kapcsolati sztring.

  3. Kattintson a Futtatás elemre. A kimenetnek meg kell jelenítenie a IoT Hub küldött érzékelőadatokat és üzeneteket.

    Képernyőkép a Raspberry Pi Azure IoT Online-szimulátorról.

A Stream Analytics-feladat indítása és a kimenet ellenőrzése

Indítsa el a feladatot a Start-AzStreamAnalyticsJob parancsmaggal. Ennél a parancsmagnál a feladat neve, az erőforráscsoport neve, a feladat kimenetének indítási módja, és a kezdés ideje adható meg paraméterként. Az OutputStartMode által elfogadott értékek: JobStartTime, CustomTime és LastOutputEventTime. A PowerShell-dokumentáció paraméterekkel foglalkozó szakaszában talál további információt arról, hogy ezek az értékek mit jelentenek.

A következő parancsmag futtatása a True kimenetet adja vissza, ha a feladat elindult. A Storage-tárolóban létrejön egy kimeneti mappa, amely az átalakított adatokat tartalmazza.

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

Az erőforrások eltávolítása

Ha már nincs szükség rá, törölheti az erőforráscsoportot, a folyamatos átviteli feladatot és az összes kapcsolódó erőforrást. A feladat törlésével megakadályozhatja, hogy a feladat által felhasznált streamelési egységek kiszámlázásra kerüljenek. Ha később is szeretné használni a feladatot, akkor nem kell törölnie, hanem elég, ha leállítja. Ha nem fogja tovább használni ezt a feladatot, törölje a rövid útmutató által létrehozott összes erőforrást a következő parancsmag futtatásával:

Remove-AzResourceGroup `
  -Name $resourceGroup

Következő lépések

Ebben a rövid útmutatóban egy egyszerű Stream Analytics-feladatot helyezett üzembe a PowerShell használatával. A Stream Analytics-feladatokat az Azure Portallal és a Visual Studióval is üzembe helyezheti.

Az egyéb bemeneti források beállításával és a valós idejű észlelés végrehajtásával kapcsolatos információkért olvassa el az alábbi cikkeket: