Compartilhar via


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

Se você ainda não tiver uma conta do Azure, crie uma conta gratuita antes de começar.

Pré-requisitos

  • Crie um grupo 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 regiã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 comandos da CLI do Azure a seguir 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, talvez seja necessário alterar o nome se ele já tiver sido usado. 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 da 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 adiante neste início rápido.

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

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

Criar uma tarefa 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 usa o nome do trabalho, o nome da entrada do trabalho, o nome do grupo de recursos e as propriedades de entrada no formato JSON como parâmetros. 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ê usou um nome diferente de MyASAIoTHub. Execute echo $iotHubName para ver o nome do 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 comando az stream-analytics output create. Esse cmdlet usa o nome do trabalho, o nome da saída do trabalho, o nome do grupo de recursos, a fonte de dados no formato JSON e o tipo de serialização como parâmetros.

Importante

Substitua STORAGEACCOUNTNAME> pelo nome da sua conta de Armazenamento do Azure e STORAGEACCESSKEY> pela chave de acesso da sua conta de armazenamento. Se você não anotou esses valores, execute os seguintes comandos 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.

    Simulador do Azure IoT Online do Raspberry Pi

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

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

Captura de tela mostrando o arquivo de saída no Estado do contêiner de blob.

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

{
    "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 Azure.

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

Próximas etapas

Neste 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: