Início Rápido: Criar uma tarefa do Stream Analytics com Azure PowerShell
O módulo Azure PowerShell é utilizado para criar e gerir recursos do Azure com cmdlets ou scripts do PowerShell. Este início rápido mostra como utilizar o módulo Azure PowerShell para implementar e executar uma tarefa do Azure Stream Analytics.
A tarefa de exemplo lê dados de transmissão em fluxo de um dispositivo Hub IoT. Os dados de entrada são gerados por um simulador online Raspberry Pi. A tarefa do Stream Analytics transforma os dados com a linguagem de consulta do Stream Analytics para filtrar mensagens com uma temperatura superior a 27°. Em seguida, escreve os eventos de saída resultantes num ficheiro num armazenamento de blobs.
Antes de começar
- Se não tiver uma subscrição 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 instalada no computador local. Se precisar de instalar ou atualizar, veja Install Azure PowerShell module(Instalar o módulo do Azure PowerShell). - Algumas Hub IoT ações não são suportadas por Azure PowerShell e têm de ser concluídas com a versão 2.0.70 ou posterior da CLI do Azure e a extensão IoT para a CLI do Azure.
Instale a CLI do Azure e utilize
az extension add --name azure-iot
para instalar a extensão IoT.
Iniciar sessão no Azure
Inicie sessão na sua subscrição do Azure com o Connect-AzAccount
comando e introduza as suas credenciais do Azure no browser de pop-up:
# Connect to your Azure account
Connect-AzAccount
Se tiver mais do que uma subscrição, selecione a subscrição que pretende utilizar para este início rápido ao executar os seguintes cmdlets. Certifique-se de que substitui <your subscription name>
pelo nome da sua subscrição:
# 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 contentor lógico no qual os recursos do Azure são implementados e geridos.
$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 configurados como entrada do mesmo.
O seguinte bloco de código da CLI do Azure tem muitos comandos para preparar os dados de entrada necessários para a tarefa. Reveja as secções seguintes para compreender o código.
Na janela do PowerShell, execute o
az login
comando para iniciar sessão na sua conta do Azure.Quando inicia sessão com êxito, a CLI do Azure devolve uma lista das suas subscrições. Copie a subscrição que está a utilizar para este início rápido e execute o
az account set
comando para selecionar essa subscrição. Escolha a mesma subscrição que selecionou na secção anterior com o PowerShell. Certifique-se de que substitui<your subscription name>
pelo nome da sua subscrição.az login az account set --subscription "<your subscription>"
Crie um Hub IoT com o
az iot hub create
comando . Este exemplo cria uma Hub IoT denominada MyASAIoTHub. Uma vez que Hub IoT nomes são exclusivos, tem de criar o seu próprio nome Hub IoT. Defina o SKU como F1 para utilizar o escalão gratuito se estiver disponível com a sua subscrição. Caso contrário, selecione o escalão mais baixo seguinte.az iot hub create --name "MyASAIoTHub" --resource-group $resourceGroup --sku S1
Assim que o hub IoT tiver sido criado, obtenha a cadeia de ligação Hub IoT com o comando az iot hub show-connection-string. Copie toda a cadeia de ligação e guarde-a. Precisa dele quando adicionar o Hub IoT como uma entrada à sua tarefa do Stream Analytics.
az iot hub show-connection-string --resource-group $resourceGroup --hub-name "MyASAIoTHub"
Adicione um dispositivo a Hub IoT com o
az iot hub device-identity create
comando . 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 ligação do dispositivo com o
az iot hub device-identity connection-string show
comando . Copie toda a cadeia de ligação e guarde-a para quando criar o simulador 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 armazenamento de blobs
O seguinte bloco de código Azure PowerShell utiliza comandos para criar o armazenamento de blobs que é utilizado para a saída da tarefa. Reveja as secções para compreender o código.
Crie uma conta de armazenamento padrão para fins gerais com o cmdlet New-AzStorageAccount . Este exemplo cria uma conta de armazenamento denominada myasaquickstartstorage com armazenamento localmente redundante (LRS) e encriptação de blobs (ativada por predefinição).
Obtenha o contexto da conta de armazenamento
$storageAccount.Context
que define a conta de armazenamento a ser utilizada. Ao trabalhar com contas de armazenamento, referencia o contexto em vez de fornecer repetidamente as credenciais.Crie um contentor de armazenamento com New-AzStorageContainer.
Copie a chave de armazenamento que é saída pelo código e guarde essa chave para criar a saída da tarefa de transmissão em fluxo 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 uma tarefa do Stream Analytics
Crie uma tarefa do Stream Analytics com o cmdlet New-AzStreamAnalyticsJob . Este cmdlet utiliza o nome da tarefa, o nome do grupo de recursos, a localização e o nome do sku como parâmetros. O nome do trabalho pode ser qualquer nome amigável que o identifique. Só pode ter carateres alfanuméricos, hífenes e carateres de sublinhado e tem de ter entre 3 e 63 carateres de comprimento.
Execute o New-AzStreamAnalyticsJob
cmdlet.
$jobName = "MyStreamingJob"
New-AzStreamAnalyticsJob `
-ResourceGroupName $resourceGroup `
-Name $jobName `
-Location centralus `
-SkuName Standard
Configurar a entrada da tarefa
Adicione uma entrada à sua tarefa com o cmdlet New-AzStreamAnalyticsInput . Este cmdlet utiliza o nome da tarefa, o nome da entrada da tarefa, o nome do grupo de recursos e a definição de entrada da tarefa como parâmetros. A definição da entrada do trabalho é um ficheiro JSON que contém as propriedades necessárias para configurar essa entrada. Neste exemplo, vai criar um armazenamento de blobs como entrada.
No computador local, crie um ficheiro denominado JobInputDefinition.json
e adicione os seguintes dados JSON ao mesmo.
Importante
- Substitua
accesspolicykey
pelaSharedAccessKey
parte da cadeia de ligação Hub IoT que guardou numa secção anterior. - Se utilizou um nome diferente para o hub IoT, atualize o valor para
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 do $jobInputDefinitionFile
PowerShell para o caminho onde armazenou o ficheiro JSON da definição de entrada da tarefa.
$jobInputDefinitionFile = "C:\JobInputDefinition.json"
Em seguida, execute o New-AzStreamAnalyticsInput
cmdlet para criar uma entrada de Hub IoT do Azure para a tarefa do Stream Analytics.
$jobInputName = "IoTHubInput"
New-AzStreamAnalyticsInput `
-ResourceGroupName $resourceGroup `
-JobName $jobName `
-File $jobInputDefinitionFile `
-Name $jobInputName
Configurar a saída da tarefa
Adicione um resultado à sua tarefa com o cmdlet New-AzStreamAnalyticsOutput . Este cmdlet utiliza o nome da tarefa, o nome da saída da tarefa, o nome do grupo de recursos e a definição de saída da tarefa como parâmetros. A definição da saída do trabalho é um ficheiro JSON que contém as propriedades necessárias para configurar essa saída. Este exemplo utiliza o armazenamento de blobs como saída.
No computador local, crie um ficheiro denominado JobOutputDefinition.json
e adicione os seguintes dados JSON ao mesmo.
Importante
Substitua o valor para pela accountKey
chave de acesso da sua conta de armazenamento que é o valor armazenado no $storageAccountKey
valor.
{
"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 do $jobOutputDefinitionFile
PowerShell para o caminho onde armazenou o ficheiro JSON da definição de saída da tarefa.
$jobOutputDefinitionFile = "C:\JobOutputDefinition.json"
Em seguida, execute o New-AzStreamAnalyticsOutput
cmdlet para criar uma saída Armazenamento de Blobs do Azure para a tarefa 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 à sua tarefa com o cmdlet New-AzStreamAnalyticsTransformation . Este cmdlet utiliza o nome da tarefa, o nome da transformação da tarefa, o nome do grupo de recursos e a definição de transformação da tarefa como parâmetros. No computador local, crie um ficheiro denominado JobTransformationDefinition.json
e adicione os seguintes dados JSON ao mesmo. O ficheiro 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"
}
}
Execute novamente 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 IoT
Substitua o marcador de posição na Linha 15 pela cadeia de ligação Hub IoT do Azure Dispositivo que guardou numa secção anterior.
Clique em Run (Executar). O resultado deve mostrar os dados do sensor e as mensagens que estão a ser enviadas para o seu Hub IoT.
Iniciar a tarefa do Stream Analytics e verificar a saída
Inicie a tarefa com o cmdlet Start-AzStreamAnalyticsJob . Este cmdlet utiliza o nome da tarefa, o nome do grupo de recursos, o modo de início da saída e a hora de início como parâmetros.
OutputStartMode
aceita os valores JobStartTime
CustomTime
ou LastOutputEventTime
. Para obter mais informações sobre ao que cada um destes valores se refere, veja a secção parameters (parâmetros) na documentação do PowerShell.
Depois de executar o cmdlet seguinte, devolve True
como a saída, se o trabalho for iniciado. No contentor de armazenamento, é criada uma pasta de saída com os dados transformados.
Start-AzStreamAnalyticsJob `
-ResourceGroupName $resourceGroup `
-Name $jobName `
-OutputStartMode 'JobStartTime'
Limpar os recursos
Quando já não for necessário, elimine o grupo de recursos, a tarefa de transmissão em fluxo e todos os recursos relacionados. A eliminação da tarefa evita a faturação das unidades de transmissão em fluxo consumidas pela tarefa. Se estiver a planear utilizar o trabalho no futuro, pode ignorar a eliminação e parar o trabalho por agora. Se não pretender continuar a utilizar esta tarefa, elimine todos os recursos criados por este início rápido ao executar o seguinte cmdlet:
Remove-AzResourceGroup `
-Name $resourceGroup
Passos seguintes
Neste início rápido, implementou uma tarefa simples do Stream Analytics com o PowerShell. Também pode implementar tarefas do Stream Analytics com o portal do Azure e o Visual Studio.
Para saber mais sobre como configurar outras origens de entrada e efetuar a deteção em tempo real, avance para o seguinte artigo: