Início Rápido: Criar um trabalho do Azure Stream Analytics usando a CLI do Azure

Neste início rápido, você usará a CLI do Azure para definir um trabalho do Stream Analytics que filtra mensagens de sensor em tempo real com uma leitura de temperatura superior a 27. O trabalho do Stream Analytics lê os dados do Hub IoT, transforma os dados e grava os dados de saída em um contêiner em um armazenamento de blob. Os dados de entrada usados neste início rápido são gerados por um simulador online do Raspberry Pi.

Antes de começar

Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.

Pré-requisitos

  • Crie um grupos de recursos. Todos os recursos do Azure devem ser implantados em um grupo de recursos. Os grupos de recursos facilitam organizar e gerenciar os recursos relacionados ao Azure.

    Para este início rápido, crie um grupo de recursos chamado streamanalyticsrg na localização eastus com o seguinte comando az group create:

    az group create --name streamanalyticsrg --location eastus
    

Preparar os dados de entrada

Antes de definir o trabalho do Stream Analytics, prepare os dados que são usados para a entrada do trabalho. Os seguintes comandos da CLI do Azure preparam os dados de entrada exigidos pelo trabalho.

  1. 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 devem ser globalmente exclusivos, você pode ter que alterar o nome se ele já estiver em uso. 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.

    iotHubName=MyASAIoTHub
    az iot hub create --name $iotHubName --resource-group streamanalyticsrg --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 --hub-name $iotHubName
    
  2. Adicione um dispositivo ao Hub IoT usando o comando az iothub device-identity create. Este exemplo cria um dispositivo chamado MyASAIoTDevice.

    az iot hub device-identity create --hub-name $iotHubName --device-id "MyASAIoTDevice"
    
  3. Obtenha a cadeia de conexão do dispositivo usando o 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 --hub-name $iotHubName --device-id "MyASAIoTDevice" --output table
    

    Exemplo de saída:

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

Criar uma conta de armazenamento de blobs

Os seguintes comandos da CLI do Azure criam umaconta de armazenamentodo BLOB usada para a saída do trabalho.

  1. Crie uma conta de armazenamento de uso geral com o comando az storage account create. A conta de armazenamento de uso geral pode ser usada para todos os quatro serviços: blobs, arquivos, tabelas e filas.

    storageAccountName="asatutorialstorage$RANDOM"
    az storage account create \
        --name $storageAccountName \
        --resource-group streamanalyticsrg \
        --location eastus \
        --sku Standard_ZRS \
        --encryption-services blob
    
  2. Obtenha a chave para sua conta de armazenamento executando o comando az storage account keys list.

    key=$(az storage account keys list -g streamanalyticsrg -n $storageAccountName --query "[0].value" -o tsv)
    echo $key
    

    Importante

    Anote a chave de acesso da conta de armazenamento do Azure. Você usará essa chave mais tarde neste início rápido.

  3. Crie um contêiner chamado state para armazenar os blobs com o comando az storage container create. Você usa a chave de conta de armazenamento para autorizar a operação para criar o contêiner. Para obter mais informações sobre como autorizar operações de dados com a CLI do Azure, confira Autorizar o acesso a dados de blob ou de fila com a CLI do Azure.

    az storage container create \
        --account-name $storageAccountName \
        --name state \
        --account-key $key \
        --auth-mode key
    

Criar um trabalho de Stream Analytics

Crie um trabalho do Stream Analytics com o comando az stream-analytics job create.

az stream-analytics job create \
    --job-name "streamanalyticsjob" \
    --resource-group "streamanalyticsrg" \
    --location "eastus" \
    --output-error-policy "Drop" \
    --out-of-order-policy "Drop" \
    --order-max-delay 5 \
    --arrival-max-delay 16 \
    --data-locale "en-US"

Configurar a entrada para o trabalho

Adicione uma entrada ao seu trabalho usando o cmdlet az stream-analytics input. Esse cmdlet toma como parâmetros o nome do trabalho, o nome do trabalho de entrada, o nome do grupo de recursos e as propriedades de entrada no formato JSON. Neste exemplo, você criará um Hub IoT como uma entrada.

Importante

  • Substitua IOT HUB ACCESS KEY pelo valor da Chave de Acesso Compartilhado na cadeia de conexão do Hub IOT que você salvou. Por exemplo, se a cadeia de conexão do Hub IOT for: HostName=MyASAIoTHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=xxxxxxxxxxxxxx=, o valor da Chave de Acesso Compartilhado será xxxxxxxxxxxxxx=. Ao substituir o valor, certifique-se de não excluir o caractere \ (escape) de " (aspas duplas).
  • Atualize o valor de iotHubNamespace no comando a seguir se você tiver usado um nome diferente de MyASAIoTHub. Execute echo $iotHubName para ver o nome do seu Hub IoT.
az stream-analytics input create \
    --properties "{\"type\":\"Stream\",\"datasource\":{\"type\":\"Microsoft.Devices/IotHubs\",\"properties\":{\"consumerGroupName\":\"\$Default\",\"endpoint\":\"messages/events\",\"iotHubNamespace\":\"MyASAIoTHub\",\"sharedAccessPolicyKey\":\"IOT HUB ACCESS KEY\",\"sharedAccessPolicyName\":\"iothubowner\"}},\"serialization\":{\"type\":\"Json\",\"encoding\":\"UTF8\"}}" \
    --input-name "asaiotinput" \
    --job-name "streamanalyticsjob" \
    --resource-group "streamanalyticsrg"

Configurar a saída para o trabalho

Adicione uma saída ao seu trabalho usando o cmdlet az stream-analytics output create. Esse cmdlet toma como parâmetros o nome do trabalho, nome do trabalho de saída, nome do grupo de recursos, a fonte de dados no formato JSON e o tipo de serialização.

Importante

Substitua STORAGEACCOUNTNAME> pelo nome da sua conta de Armazenamento do Microsoft Azure e STORAGEACCESSKEY> pela chave de acesso da sua conta de armazenamento. Se você não anotou esses valores, execute os comandos a seguir para obtê-los: echo $storageAccountName e echo $key. Ao substituir os valores, certifique-se de não excluir o caractere \ (escape) de " (aspas duplas).

az stream-analytics output create \
    --job-name streamanalyticsjob \
    --datasource "{\"type\":\"Microsoft.Storage/Blob\",\"properties\":{\"container\":\"state\",\"dateFormat\":\"yyyy/MM/dd\",\"pathPattern\":\"{date}/{time}\",\"storageAccounts\":[{\"accountKey\":\"STORAGEACCESSKEY\",\"accountName\":\"STORAGEACCOUNTNAME\"}],\"timeFormat\":\"HH\"}}" \
    --serialization "{\"type\":\"Json\",\"properties\":{\"format\":\"Array\",\"encoding\":\"UTF8\"}}" \
    --output-name asabloboutput \
    --resource-group streamanalyticsrg

Definir a consulta de transformação

Adicione uma transformação ao seu trabalho usando o cmdlet az stream-analytics transformation create.

az stream-analytics transformation create \
    --resource-group streamanalyticsrg \
    --job-name streamanalyticsjob \
    --name Transformation \
    --streaming-units "6" \
    --saql "SELECT * INTO asabloboutput FROM asaiotinput WHERE Temperature > 27"

Executar o simulador de IoT

  1. Abra o Simulador Online de IoT do Azure do Raspberry Pi.

  2. Substitua o espaço reservado na linha 15 por toda a cadeia de conexão do Dispositivo do Hub IoT do Azure (não a cadeia de conexão do Hub IoT) que você salvou no começo do início rápido.

  3. Selecione Executar. A saída deve exibir os dados de sensor e as mensagens que estão sendo enviadas ao Hub IoT.

    Raspberry Pi Azure IoT Online Simulator

Iniciar o trabalho do Stream Analytics e verificar a saída

Inicie o trabalho usando o cmdlet az stream-analytics job start. 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.

Depois de executar o cmdlet a seguir, ele retornará True como saída se o trabalho for iniciado.

az stream-analytics job start \
    --resource-group streamanalyticsrg \
    --name streamanalyticsjob \
    --output-start-mode JobStartTime

Aguarde alguns minutos e verifique se um arquivo de saída foi criado no contêiner de blob state.

Screenshot showing the output file in the State blob container.

Baixe e abra o arquivo para ver várias entradas semelhantes às seguintes:

{
    "messageId": 229,
    "deviceId": "Raspberry Pi Web Client",
    "temperature": 31.85214010589595,
    "humidity": 60.278830289656284,
    "EventProcessedUtcTime": "2023-02-28T22:06:33.5567789Z",
    "PartitionId": 3,
    "EventEnqueuedUtcTime": "2023-02-28T22:05:49.6520000Z",
    "IoTHub": {
        "MessageId": null,
        "CorrelationId": null,
        "ConnectionDeviceId": "MyASAIoTDevice",
        "ConnectionDeviceGenerationId": "638132150746523845",
        "EnqueuedTime": "2023-02-28T22:05:49.6520000Z",
        "StreamId": null
    }
}

Limpar os recursos

Exclua o grupo de recursos, que excluirá todos os recursos no grupo de recursos, incluindo o trabalho do Stream Analytics, o Hub IoT e a conta de Armazenamento do Microsoft Azure.

az group delete \
    --name streamanalyticsrg \
    --no-wait

Próximas etapas

Neste guia de início rápido, você implantou um trabalho simples do Stream Analytics usando a CLI do Azure. 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: