Condividi tramite


Avvio rapido: Creare un processo di Analisi di flusso usando Azure PowerShell

Il modulo Azure PowerShell viene usato per creare e gestire le risorse di Azure usando cmdlet o script di PowerShell. Questa guida introduttiva illustra come usare il modulo Azure PowerShell per distribuire ed eseguire un processo di Analisi di flusso di Azure.

Il processo di esempio legge i dati di streaming da un dispositivo hub IoT. I dati di input sono generati da un simulatore online Raspberry Pi. Il processo analisi di flusso trasforma i dati usando il linguaggio di query analisi di flusso per filtrare i messaggi con una temperatura maggiore di 27°. Scrive quindi gli eventi di output risultanti in un file in un archivio BLOB.

Prima di iniziare

  • Se non si ha una sottoscrizione di Azure, creare un account gratuito.
  • Per questa guida di avvio rapido è richiesto il modulo Azure PowerShell. Eseguire Get-Module -ListAvailable Az per trovare la versione installata nel computer locale. Se è necessario eseguire l'installazione o l'aggiornamento, vedere come installare il modulo Azure PowerShell.
  • Alcune azioni hub IoT non sono supportate da Azure PowerShell e devono essere completate usando l'interfaccia della riga di comando di Azure versione 2.0.70 o successiva e l'estensione IoT per l'interfaccia della riga di comando di Azure. Installare l'interfaccia della riga di comando di Azure e usare az extension add --name azure-iot per installare l'estensione IoT.

Accedere ad Azure

Accedere alla sottoscrizione di Azure con il comando Connect-AzAccount e immettere le credenziali di Azure nella finestra del browser a comparsa:

# Connect to your Azure account
Connect-AzAccount

Se si hanno più sottoscrizioni, selezionare quella che si vuole usare per questa guida introduttiva eseguendo i cmdlet seguenti. Assicurarsi di sostituire <your subscription name> con il nome della sottoscrizione:

# 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

Creare un gruppo di risorse

Creare un gruppo di risorse di Azure con New-AzResourceGroup. Un gruppo di risorse è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite.

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

Preparare i dati di input

Prima di definire il processo di Analisi di flusso, preparare i dati configurati come input per il processo.

Il blocco di codice dell'interfaccia della riga di comando di Azure seguente include molti comandi per preparare i dati di input richiesti dal processo. Esaminare le sezioni seguenti per comprendere il codice.

  1. Nella finestra di PowerShell eseguire il comando per accedere all'account az login Azure.

    Dopo aver effettuato l'accesso, l'interfaccia della riga di comando di Azure restituisce un elenco delle sottoscrizioni. Copiare la sottoscrizione usata per questa guida introduttiva ed eseguire il az account set comando per selezionare tale sottoscrizione. Scegliere la stessa sottoscrizione selezionata nella sezione precedente con PowerShell. Assicurarsi di sostituire <your subscription name> con il nome della sottoscrizione.

    az login
    
    az account set --subscription "<your subscription>"
    
  2. Creare un hub IoT usando il az iot hub create comando . Questo esempio crea un hub IoT denominato MyASAIoTHub. Poiché i nomi degli hub IoT sono univoci, è necessario indicare un nome personalizzato per il proprio hub IoT. Impostare lo SKU su F1 per usare il livello gratuito se disponibile con la sottoscrizione. In caso contrario, scegliere il successivo livello più basso.

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

    Dopo aver creato l'hub IoT, ottenere la stringa di connessione dell'hub IoT usando il comando az iot hub show-connection-string. Copiare l'intera stringa di connessione e salvarla. È necessario quando si aggiunge il hub IoT come input al processo di Analisi di flusso.

    az iot hub show-connection-string --resource-group $resourceGroup --hub-name "MyASAIoTHub"
    
  3. Aggiungere un dispositivo a hub IoT usando il az iot hub device-identity create comando . Questo esempio crea un dispositivo denominato MyASAIoTDevice.

    az iot hub device-identity create --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice"
    
  4. Ottenere la stringa di connessione del dispositivo usando il az iot hub device-identity connection-string show comando . Copiare l'intera stringa di connessione e salvarla per quando si creerà il simulatore Raspberry Pi.

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

    Esempio di output:

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

Creare l'archiviazione BLOB

Il seguente blocco di codice di Azure PowerShell usa comandi per creare l'archiviazione BLOB che viene usata per l'output del processo. Esaminare le sezioni per comprendere il codice.

  1. Creare un account di archiviazione standard per uso generico usando il cmdlet New-AzStorageAccount. In questo esempio viene creato un account di archiviazione denominato myasaquickstartstorage con archiviazione con ridondanza locale e crittografia BLOB (abilitata per impostazione predefinita).

  2. Recuperare il contesto $storageAccount.Context che definisce l'account di archiviazione da usare. Quando si usano gli account di archiviazione, si può fare riferimento al contesto anziché fornire ripetutamente le credenziali.

  3. Creare un contenitore di archiviazione con New-AzStorageContainer.

  4. Copiare la chiave di archiviazione restituita dal codice e salvarla per creare l'output del processo di streaming in un secondo momento.

    $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
    

Creare un processo di Analisi di flusso.

Creare un processo di Analisi di flusso con il cmdlet New-AzStreamAnalyticsJob. Questo cmdlet accetta il nome del processo, il nome del gruppo di risorse, la posizione e il nome dello sku come parametri. Il nome del processo può essere un qualsiasi nome descrittivo che identifica il processo. Può contenere solo caratteri alfanumerici, trattini e caratteri di sottolineatura e deve avere una lunghezza compresa tra 3 e 63 caratteri.

Eseguire il cmdlet New-AzStreamAnalyticsJob.

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

Configurare l'input per il processo

Aggiungere un input al processo tramite il cmdlet New-AzStreamAnalyticsInput. Questo cmdlet accetta il nome del processo, il nome dell'input del processo, il nome del gruppo di risorse e la definizione dell'input del processo come parametri. La definizione dell'input del processo è un file JSON che contiene le proprietà necessarie per configurare l'input del processo. In questo esempio viene creata un'archiviazione BLOB come input.

Nel computer locale creare un file denominato JobInputDefinition.json e aggiungere i dati JSON seguenti.

Importante

  • Sostituire accesspolicykey con la SharedAccessKey parte della stringa di connessione hub IoT salvata in una sezione precedente.
  • Se è stato usato un nome diverso per l'hub IoT, aggiornare il valore per 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"
}

Impostare la $jobInputDefinitionFile variabile di PowerShell sul percorso in cui è stato archiviato il file JSON di definizione di input del processo.

$jobInputDefinitionFile = "C:\JobInputDefinition.json"

Eseguire quindi il New-AzStreamAnalyticsInput cmdlet per creare un input hub IoT di Azure per il processo di Analisi di flusso.

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

Configurare l'output per il processo

Aggiungere un output al processo tramite il cmdlet New-AzStreamAnalyticsOutput. Questo cmdlet accetta il nome del processo, il nome dell'output del processo, il nome del gruppo di risorse e la definizione dell'output del processo come parametri. La definizione dell'output del processo è un file JSON che contiene le proprietà necessarie per configurare l'output del processo. In questo esempio come output viene usato l'archivio BLOB.

Nel computer locale creare un file denominato JobOutputDefinition.json e aggiungere i dati JSON seguenti.

Importante

Sostituire il valore per accountKey con la chiave di accesso dell'account di archiviazione archiviata nel $storageAccountKey valore.

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

Impostare la $jobOutputDefinitionFile variabile di PowerShell sul percorso in cui è stato archiviato il file JSON di definizione dell'output del processo.

$jobOutputDefinitionFile = "C:\JobOutputDefinition.json"

Eseguire quindi il New-AzStreamAnalyticsOutput cmdlet per creare un output Archiviazione BLOB di Azure per il processo di Analisi di flusso.

$jobOutputName = "BlobOutput"

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

Definire la query di trasformazione

Aggiungere una trasformazione al processo tramite il cmdlet New-AzStreamAnalyticsTransformation. Questo cmdlet accetta il nome del processo, il nome della trasformazione del processo, il nome del gruppo di risorse e la definizione della trasformazione del processo come parametri. Nel computer locale creare un file denominato JobTransformationDefinition.json e aggiungere i dati JSON seguenti. Il file JSON contiene un parametro di query che definisce la query di trasformazione:

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

Eseguire quindi il 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

Eseguire il simulatore IoT

  1. Aprire il simulatore online Azure IoT Raspberry Pi.

  2. Sostituire il segnaposto nella riga 15 con l'intera stringa di connessione del dispositivo hub IoT di Azure salvato in una sezione precedente.

  3. Fare clic su Esegui. L'output mostra i dati del sensore e i messaggi inviati all'hub IoT.

    Screenshot che mostra il simulatore di Raspberry Pi Azure IoT Online.

Avviare il processo di Analisi di flusso e controllare l'output

Avviare il processo tramite il cmdlet Start-AzStreamAnalyticsJob. Questo cmdlet accetta il nome del processo, il nome del gruppo di risorse, la modalità di avvio dell'output e l'ora di inizio come parametri. OutputStartMode accetta i valori JobStartTime, CustomTime o LastOutputEventTime. Per altre informazioni sugli elementi a cui fanno riferimento ognuno di questi valori, vedere la sezione sui parametri nella documentazione di PowerShell.

Dopo aver eseguito il cmdlet seguente, verrà restituito True come output se il processo viene avviato. Nel contenitore di archiviazione viene creata una cartella di output con i dati trasformati.

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

Pulire le risorse

Quando non sono più necessari, eliminare il gruppo di risorse, il processo di streaming e tutte le risorse correlate. Eliminando il processo si evita di pagare per le unità di streaming usate dal processo. Se si prevede di usare il processo in futuro, è possibile non eliminarlo e arrestarlo per il momento. Se non si intende continuare a usare il processo, eliminare tutte le risorse create con questa guida introduttiva eseguendo il cmdlet seguente:

Remove-AzResourceGroup `
  -Name $resourceGroup

Passaggi successivi

In questa guida introduttiva è stato distribuito un semplice processo di Analisi di flusso con PowerShell. È anche possibile distribuire processi di Analisi di flusso usando il portale di Azure e Visual Studio.

Per informazioni sulla configurazione di altre origini di input e sull'esecuzione del rilevamento in tempo reale, continuare con l'articolo seguente: