Guia de início rápido: criar um trabalho do Stream Analytics usando o Azure PowerShell
O módulo do Azure PowerShell é usado para criar e gerenciar recursos do Azure usando scripts ou cmdlets do PowerShell. Este início rápido demonstra como usar o módulo do Azure PowerShell para implantar e executar um trabalho do Azure Stream Analytics.
O trabalho de exemplo lê dados de streaming de um dispositivo do Hub IoT. Os dados de entrada são gerados por um simulador online do Raspberry Pi. Em seguida, o trabalho do Stream Analytics transforma os dados usando a linguagem de consulta do Stream Analytics para filtrar mensagens com uma temperatura superior a 27°. Por fim, ele grava os eventos de saída resultantes em um arquivo no armazenamento de blobs.
Antes de começar
- Se você não tiver uma assinatura do Azure, crie uma conta gratuita.
- Este início rápido requer o módulo Azure PowerShell. Execute
Get-Module -ListAvailable Az
para localizar a versão que está instalada em seu computador local. Se você precisar instalá-lo ou atualizá-lo, confira Instalar o módulo do Azure PowerShell. - Algumas ações do Hub IoT não são compatíveis com o Azure PowerShell e precisam ser concluídas por meio da CLI do Azure versão 2.0.70 ou posterior e da extensão de IoT para a CLI do Azure. Instale a CLI do Azure e use
az extension add --name azure-iot
para instalar a extensão de IoT.
Entrar no Azure
Entre em sua assinatura do Azure com o comando Connect-AzAccount
e insira suas credenciais do Azure no navegador pop-up:
# Connect to your Azure account
Connect-AzAccount
Caso tenha mais de uma assinatura, selecione a assinatura que deseja usar para este início rápido executando os cmdlets a seguir. Substitua <your subscription name>
pelo nome da sua assinatura:
# 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
Criar um grupo de recursos
Crie um grupo de recursos do Azure com New-AzResourceGroup. Um grupo de recursos é um contêiner lógico no qual os recursos do Azure são implantados e gerenciados.
$resourceGroup = "StreamAnalyticsRG"
$location = "WestUS2"
New-AzResourceGroup `
-Name $resourceGroup `
-Location $location
Preparar os dados de entrada
Antes de definir o trabalho do Stream Analytics, prepare os dados que estão configurados como entrada do trabalho.
O bloco de código da CLI do Azure a seguir executa muitos comandos para preparar os dados de entrada necessários para o trabalho. Examine as seções a seguir para entender o código.
Na janela do PowerShell, execute o comando
az login
para entrar em sua conta do Azure.Quando você entrar com êxito, a CLI do Azure retornará uma lista de suas assinaturas. Copie a assinatura que está você está usando para este início rápido e execute o comando
az account set
para selecionar essa assinatura. Escolha a mesma assinatura selecionada na seção anterior com o PowerShell. Substitua<your subscription name>
pelo nome de sua assinatura.az login az account set --subscription "<your subscription>"
Crie um Hub IoT usando o comando
az iot hub create
. Este exemplo cria um Hub IoT chamado MyASAIoTHub. Como os nomes do Hub IoT são exclusivos, você precisa inventar seu próprio nome do Hub IoT. Defina o SKU como F1 para usar o nível gratuito, se estiver disponível com sua assinatura. Caso contrário, escolha a próxima camada mais baixa.az iot hub create --name "MyASAIoTHub" --resource-group $resourceGroup --sku S1
Depois que o Hub IoT for criado, obtenha a cadeia de conexão do Hub IoT usando o comando az iot hub connection-string show. Copie toda a cadeia de conexão e salve-a. Você a usa enquanto adiciona o Hub IoT como uma entrada para o seu trabalho do Stream Analytics.
az iot hub connection-string show --resource-group $resourceGroup --hub-name "MyASAIoTHub"
Adicione um dispositivo ao hub IoT usando o comando
az iot hub device-identity create
. Este exemplo cria um dispositivo chamado MyASAIoTDevice.az iot hub device-identity create --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice"
Obtenha a cadeia de conexão do dispositivo por meio do comando
az iot hub device-identity connection-string show
. Copie a cadeia de conexão inteira e salve-a para quando você criar o simulador do Raspberry Pi.az iot hub device-identity connection-string show --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice" --output table
Exemplo de saída:
HostName=MyASAIoTHub.azure-devices.net;DeviceId=MyASAIoTDevice;SharedAccessKey=a2mnUsg52+NIgYudxYYUNXI67r0JmNubmfVafojG8=
Criar o armazenamento de blobs
O bloco de código do Azure PowerShell a seguir usa comandos para criar o armazenamento de blobs usado para a saída de trabalho. Examine as seções para entender o código.
Crie uma conta de armazenamento padrão para uso geral usando o cmdlet New-AzStorageAccount. Este exemplo cria uma conta de armazenamento chamada myasaquickstartstorage com LRS (armazenamento com redundância local) e criptografia de blob (habilitada por padrão).
Recupere o contexto da conta de armazenamento
$storageAccount.Context
que define a conta de armazenamento a ser usada. Ao trabalhar com contas de armazenamento, referencie o contexto em vez de fornecer as credenciais repetidamente.Crie um contêiner de armazenamento usando New-AzStorageContainer.
Copie a chave de armazenamento gerada pelo código e salve essa chave para criar a saída do trabalho de streaming mais tarde.
$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
Criar um trabalho de Stream Analytics
Crie um trabalho do Stream Analytics com o cmdlet New-AzStreamAnalyticsJob. Esse cmdlet usa o nome do trabalho, o nome do grupo de recursos, a localização e o nome do código SKU como parâmetros. O nome do trabalho pode ser qualquer nome amigável que identifique o trabalho. Ele só pode ter caracteres alfanuméricos, hifens e sublinhados e precisa ter entre 3 e 63 caracteres.
Execute o cmdlet New-AzStreamAnalyticsJob
.
$jobName = "MyStreamingJob"
New-AzStreamAnalyticsJob `
-ResourceGroupName $resourceGroup `
-Name $jobName `
-Location centralus `
-SkuName Standard
Configurar a entrada para o trabalho
Adicione uma entrada para seu trabalho usando o cmdlet New-AzStreamAnalyticsInput. Esse cmdlet usa o nome do trabalho, o nome de entrada do trabalho, o nome do grupo de recursos e a definição da entrada do trabalho como parâmetros. A definição de entrada do trabalho é um arquivo JSON que contém as propriedades necessárias para configurar a entrada do trabalho. Neste exemplo, você criará um armazenamento de blobs como uma entrada.
Em seu computador local, crie um arquivo chamado JobInputDefinition.json
e adicione os seguintes dados JSON a ele.
Importante
- Substitua
accesspolicykey
pela parteSharedAccessKey
da cadeia de conexão do Hub IoT salva em uma seção anterior. - Se você usou um nome diferente para o Hub IoT, atualize o valor de
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"
}
Defina a variável $jobInputDefinitionFile
do PowerShell como o caminho em que você armazenou o arquivo JSON de definição de entrada do trabalho.
$jobInputDefinitionFile = "C:\JobInputDefinition.json"
Em seguida, execute o cmdlet New-AzStreamAnalyticsInput
para criar uma entrada do Hub IoT do Azure para o trabalho do Stream Analytics.
$jobInputName = "IoTHubInput"
New-AzStreamAnalyticsInput `
-ResourceGroupName $resourceGroup `
-JobName $jobName `
-File $jobInputDefinitionFile `
-Name $jobInputName
Configurar a saída para o trabalho
Adicione uma saída ao trabalho usando o cmdlet New-AzStreamAnalyticsOutput. Esse cmdlet usa o nome do trabalho, o nome de saída do trabalho, o nome do grupo de recursos e a definição da saída do trabalho como parâmetros. A definição de saída do trabalho é um arquivo JSON que contém as propriedades necessárias para configurar a saída do trabalho. Este exemplo usa o armazenamento de blobs como saída.
Em seu computador local, crie um arquivo chamado JobOutputDefinition.json
e adicione os seguintes dados JSON a ele.
Importante
Substitua o valor de accountKey
pela chave de acesso da sua conta de armazenamento, que é o valor armazenado no valor $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"
}
Defina a variável $jobOutputDefinitionFile
do PowerShell como o caminho em que você armazenou o arquivo JSON de definição de entrada do trabalho.
$jobOutputDefinitionFile = "C:\JobOutputDefinition.json"
Em seguida, execute o cmdlet New-AzStreamAnalyticsOutput
para criar uma entrada do Hub IoT do Azure para o trabalho do Stream Analytics.
$jobOutputName = "BlobOutput"
New-AzStreamAnalyticsOutput `
-ResourceGroupName $resourceGroup `
-JobName $jobName `
-File $jobOutputDefinitionFile `
-Name $jobOutputName
Definir a consulta de transformação
Adicione uma transformação ao trabalho usando o cmdlet New-AzStreamAnalyticsTransformation. Esse cmdlet usa o nome do trabalho, o nome da transformação do trabalho, o nome do grupo de recursos e a definição da transformação do trabalho como parâmetros. Em seu computador local, crie um arquivo chamado JobTransformationDefinition.json
e adicione os seguintes dados JSON a ele. O arquivo JSON contém um parâmetro de consulta que define a consulta de transformação:
{
"name":"MyTransformation",
"type":"Microsoft.StreamAnalytics/streamingjobs/transformations",
"properties":{
"streamingUnits":1,
"script":null,
"query":"SELECT * INTO BlobOutput FROM IoTHubInput WHERE Temperature > 27"
}
}
Em seguida, execute o 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
Executar o simulador de IoT
Substitua o espaço reservado na Linha 15 pela cadeia de conexão inteira do Dispositivo Hub IoT do Azure salva em uma seção anterior.
Clique em Executar. A saída deve exibir os dados de sensor e as mensagens que estão sendo enviadas ao Hub IoT.
Iniciar o trabalho do Stream Analytics e verificar a saída
Inicie o trabalho usando o cmdlet Start-AzStreamAnalyticsJob. Esse cmdlet usa o nome do trabalho, o nome do grupo de recursos, o modo inicial de saída e a hora de início como parâmetros. OutputStartMode
aceita valores de JobStartTime
, CustomTime
ou LastOutputEventTime
. Para saber mais sobre o que cada um desses valores referencia, confira a seção Parâmetros na documentação do PowerShell.
Depois de executar o cmdlet a seguir, ele retornará True
como saída se o trabalho for iniciado. No contêiner de armazenamento, uma pasta de saída é criada com os dados transformados.
Start-AzStreamAnalyticsJob `
-ResourceGroupName $resourceGroup `
-Name $jobName `
-OutputStartMode 'JobStartTime'
Limpar os recursos
Quando não forem mais necessários, exclua o grupo de recursos, o trabalho de streaming e todos os recursos relacionados. A exclusão do trabalho evita a cobrança das unidades de streaming consumidas por ele. Se você estiver planejando usar o trabalho no futuro, ignore a exclusão e pare o trabalho agora. Se você não pretende continuar usando esse trabalho, exclua todos os recursos criados por este início rápido executando o seguinte cmdlet:
Remove-AzResourceGroup `
-Name $resourceGroup
Próximas etapas
Neste guia de início rápido, você implantou um trabalho simples do Stream Analytics usando PowerShell. Você também pode implantar trabalhos do Stream Analytics usando o portal do Azure e o Visual Studio.
Para saber mais sobre como configurar outras fontes de entrada e executar detecção em tempo real, avance para o artigo a seguir: