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.
Dans votre 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 pour 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>"
Créez un Azure IoT Hub à 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 IoT Hub, obtenez sa chaîne de connexion à l’aide de la commande az iot hub connection-string show. 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 connection-string show --resource-group $resourceGroup --hub-name "MyASAIoTHub"
Ajoutez un appareil à IoT Hub à 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"
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.
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).
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.Créez un conteneur de stockage avec la commande New-AzStorageContainer.
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 partieSharedAccessKey
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
Ouvrez le simulateur en ligne Azure IoT Raspberry Pi.
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.
Cliquez sur Exécuter. La sortie doit indiquer les données de capteur et les messages qui sont envoyés à votre hub IoT.
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 :