Démarrage rapide : Créer un travail Stream Analytics à l’aide d’Azure PowerShell

Le module Azure PowerShell est utilisé pour créer et gérer des ressources Azure à l’aide des applets de commande ou des scripts PowerShell. Ce démarrage rapide montre comment utiliser le module Azure PowerShell pour déployer et exécuter un travail Azure Stream Analytics.

Cet exemple de travail lit les données de streaming à partir d’un appareil IoT Hub. Les données d’entrée sont générées par un simulateur en ligne Raspberry Pi. Le travail Stream Analytics transforme les données en utilisant le langage de requête Stream Analytics pour filtrer les messages indiquant une température supérieure à 27 degrés. Il écrit ensuite les événements de sortie résultants dans un fichier de stockage d’objets blob.

Avant de commencer

  • Si vous n’avez pas d’abonnement Azure, créez un compte gratuit.
  • Ce démarrage rapide nécessite le module Azure PowerShell. Exécutez Get-Module -ListAvailable Az pour rechercher la version installée sur votre ordinateur local. Si vous devez installer ou mettre à niveau, consultez Installer le module Azure PowerShell.
  • Certaines actions IoT Hub ne sont pas prises en charge par Azure PowerShell et doivent être effectuées à l’aide d’Azure CLI version 2.0.70 ou ultérieure, ainsi que l’extension IoT pour Azure CLI. Installez Azure CLI et utilisez az extension add --name azure-iot pour installer l’extension IoT.

Connexion à Azure

Connectez-vous à votre abonnement Azure avec la commande Connect-AzAccount, puis entrez vos informations d’identification Azure dans le navigateur contextuel :

# Connect to your Azure account
Connect-AzAccount

Si vous avez plusieurs abonnements, sélectionnez l’abonnement que vous souhaitez utiliser dans ce guide de démarrage rapide en exécutant les applets de commande suivantes. Assurez-vous de remplacer <your subscription name> par le nom de votre abonnement :

# 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

Créer un groupe de ressources

Créez un groupe de ressources Azure avec New-AzResourceGroup. Un groupe de ressources est un conteneur logique dans lequel les ressources Azure sont déployées et gérées.

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

Préparer les données d’entrée

Avant de définir le travail Stream Analytics, préparez les données qui seront configurées en tant qu’entrée pour le travail.

Le bloc de code Azure CLI ci-après exécute de nombreuses commandes pour préparer les données d’entrée requises par le travail. Passez en revue les différentes sections pour comprendre le code.

  1. Dans la fenêtre PowerShell, exécutez la commande az login pour vous connecter à votre compte Azure.

    Une fois que vous êtes connecté, Azure CLI retourne une liste de vos abonnements. Copiez l’abonnement que vous utilisez dans ce guide de démarrage rapide et exécutez la commande az account set pour sélectionner cet abonnement. Choisissez le même abonnement que vous avez sélectionné dans la section précédente avec PowerShell. Veillez à remplacer <your subscription name> par le nom de votre abonnement.

    az login
    
    az account set --subscription "<your subscription>"
    
  2. Créez un hub IoT à l’aide de la commande az iot hub create. Cet exemple crée un hub IoT appelé MyASAIoTHub. Comme les noms de hub IoT sont uniques, vous devez spécifier votre propre nom de hub IoT. Définissez la référence SKU sur F1 pour utiliser le niveau gratuit s’il est disponible avec votre abonnement. Si ce n’est pas le cas, choisissez le niveau le plus bas suivant.

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

    Après avoir créé le hub IoT, obtenez la chaîne de connexion du hub IoT à l’aide de la commande az iot hub show-connection-string. Copiez la chaîne de connexion complète et enregistrez-la. Il vous est utile lorsque vous ajoutez le IoT Hub comme entrée de votre travail Stream Analytics.

    az iot hub show-connection-string --resource-group $resourceGroup --hub-name "MyASAIoTHub"
    
  3. Ajoutez un appareil au hub IoT à l’aide de la commande az iot hub device-identity create. Cet exemple crée un appareil appelé MyASAIoTDevice.

    az iot hub device-identity create --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice"
    
  4. Obtenez la chaîne de connexion d’appareil en utilisant la commande az iot hub device-identity connection-string show. Copiez la chaîne de connexion complète et enregistrez-la, car vous en aurez besoin quand vous créerez le simulateur Raspberry Pi.

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

    Exemple de sortie :

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

Créer un stockage d’objets blob

Le bloc de code Azure PowerShell suivant utilise des commandes afin de créer le stockage d’objets blob utilisé pour la sortie du travail. Passez en revue les différentes sections pour comprendre le code.

  1. Créez un compte de stockage standard à usage général avec l’applet de commande New-AzStorageAccount. Cet exemple crée un compte de stockage nommé myasaquickstartstorage avec les options de stockage localement redondant (LRS) et de chiffrement des objets blob (options activées par défaut).

  2. Récupérez le contexte de compte de stockage $storageAccount.Context qui définit le compte de stockage à utiliser. Lorsque vous utilisez des comptes de stockage, référencez le contexte au lieu d’entrer les informations d’identification à plusieurs reprises.

  3. Créez un conteneur de stockage avec la commande New-AzStorageContainer.

  4. Copiez la clé de stockage générée par le code et enregistrez-la, car vous en aurez besoin plus tard pour créer la sortie du travail de streaming.

    $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
    

Création d’un travail Stream Analytics

Créez un travail Stream Analytics avec l’applet de commande New-AzStreamAnalyticsJob. Cette cmdlet prend comme paramètres le nom de la tâche, le nom du groupe de ressources, l’emplacement et le nom de la référence sku. Le nom du travail peut correspondre à n’importe quel nom convivial identifiant votre travail. Ce nom peut contenir uniquement des caractères alphanumériques, des traits d’union et des traits de soulignement, et doit comporter entre 3 et 63 caractères.

Exécutez l’applet de commande New-AzStreamAnalyticsJob.

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

Configurer l’entrée du travail

Ajoutez une entrée à votre travail avec l’applet de commande New-AzStreamAnalyticsInput. Cette applet de commande prend le nom du travail, le nom de l’entrée du travail, le nom du groupe de ressources et la définition de l’entrée du travail comme paramètres. La définition de l’entrée du travail est un fichier JSON qui contient les propriétés nécessaires à la configuration de l’entrée du travail. Dans cet exemple, vous allez créer un stockage d’objets blob comme entrée.

Sur votre ordinateur local, créez un fichier nommé JobInputDefinition.json et ajoutez-y les données JSON ci-après.

Important

  • Remplacez la valeur de accesspolicykey par la partie SharedAccessKey de la chaîne de connexion de IoT Hub enregistrée dans une section précédente.
  • Si vous avez utilisé un autre nom pour le hub IoT, mettez à jour la valeur pour 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"
}

Définissez la variable PowerShell $jobInputDefinitionFile sur le chemin où vous avez stocké le fichier JSON de définition d’entrée de travail.

$jobInputDefinitionFile = "C:\JobInputDefinition.json"

Ensuite, exécutez l’applet de commande New-AzStreamAnalyticsInput pour créer une entrée Azure IoT Hub pour le travail Stream Analytics.

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

Configurer la sortie du travail

Ajoutez une sortie à votre travail avec l’applet de commande New-AzStreamAnalyticsOutput. Cette applet de commande prend le nom du travail, le nom de la sortie du travail, le nom du groupe de ressources et la définition de la sortie du travail comme paramètres. La définition de la sortie du travail est un fichier JSON qui contient les propriétés nécessaires à la configuration de la sortie du travail. Cet exemple utilise le stockage blob en guise de sortie.

Sur votre ordinateur local, créez un fichier nommé JobOutputDefinition.json et ajoutez-y les données JSON ci-après.

Important

Remplacez la valeur de accountKey par la clé d’accès de votre compte de stockage qui correspond à la valeur stockée dans une valeur $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"
}

Définissez la variable PowerShell $jobOutputDefinitionFile sur le chemin où vous avez stocké le fichier JSON de définition de sortie de travail.

$jobOutputDefinitionFile = "C:\JobOutputDefinition.json"

Ensuite, exécutez l’applet de commande New-AzStreamAnalyticsOutput pour créer une sortie Stockage Blob Azure pour le travail Stream Analytics.

$jobOutputName = "BlobOutput"

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

Définir la requête de transformation

Ajoutez une transformation à votre travail avec l’applet de commande New-AzStreamAnalyticsTransformation. Cette applet de commande prend le nom du travail, le nom de la transformation du travail, le nom du groupe de ressources et la définition de la transformation du travail comme paramètres. Sur votre ordinateur local, créez un fichier nommé JobTransformationDefinition.json et ajoutez-y les données JSON ci-après. Le fichier JSON contient un paramètre de requête qui définit la requête de transformation :

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

Ensuite, exécutez l’applet de commande 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

Exécuter le simulateur IoT

  1. Ouvrez le simulateur en ligne Azure IoT Raspberry Pi.

  2. Remplacez l’espace réservé à la ligne 15 par la chaîne de connexion entière de l’appareil Azure IoT Hub que vous avez enregistrée dans une section précédente.

  3. Cliquez sur Exécuter. La sortie doit indiquer les données de capteur et les messages qui sont envoyés à votre hub IoT.

    Capture d’écran montrant la page Simulateur en ligne Azure IoT Raspberry Pi.

Démarrer le travail Stream Analytics et observer le résultat

Démarrez le travail avec l’applet de commande Start-AzStreamAnalyticsJob. Cette applet de commande prend le nom du travail, le nom du groupe de ressources, le mode de démarrage de la sortie et l’heure de démarrage comme paramètres. OutputStartMode accepte les valeurs de JobStartTime, CustomTime ou LastOutputEventTime. Pour plus d’informations sur les éléments auxquels ces valeurs font référence, consultez la section Paramètres de la documentation PowerShell.

Après son exécution, l’applet de commande ci-après renvoie la valeur True en guise de sortie si le travail démarre. Dans le conteneur de stockage, un dossier de sortie est créé avec les données transformées.

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

Nettoyer les ressources

Lorsque vous n’en avez plus besoin, supprimez le groupe de ressources, le travail de streaming et toutes les ressources associées. La suppression du travail évite la facturation des unités de streaming consommées par le travail. Si vous envisagez d’utiliser le travail à l’avenir, vous pouvez vous abstenir de le supprimer et vous contenter de l’arrêter à ce stade. Si vous n’avez plus besoin de ce travail, supprimez toutes les ressources créées dans le cadre de ce guide de démarrage rapide en exécutant l’applet de commande suivante :

Remove-AzResourceGroup `
  -Name $resourceGroup

Étapes suivantes

Dans ce guide de démarrage rapide, vous avez déployé un travail Stream Analytics simple à l’aide de PowerShell. Vous pouvez également déployer des travaux Stream Analytics à l’aide du Portail Azure et de Visual Studio.

Pour savoir comment configurer d’autres sources d’entrée et effectuer une détection en temps réel, passez à l’article suivant :