Share via


Guia de 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 do sensor em tempo real com uma leitura de temperatura maior que 27. O trabalho do Stream Analytics lê 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 não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Pré-requisitos

  • Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

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

    Para este início rápido, crie um grupo de recursos chamado streamanalyticsrg no local 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 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, 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 ele estiver disponível com sua assinatura. Caso contrário, escolha o próximo nível mais baixo.

    iotHubName=MyASAIoTHub
    az iot hub create --name $iotHubName --resource-group streamanalyticsrg --sku S1
    

    Depois que o hub IoT tiver sido 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ê o usa ao adicionar o Hub IoT como uma entrada ao 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 toda a cadeia de conexão e salve-a para quando 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 blob

Os seguintes comandos da CLI do Azure criam uma conta de armazenamento de blob que é usada para saída de trabalho.

  1. Crie uma conta de armazenamento para fins gerais com o comando az storage account create. A conta de armazenamento para fins gerais pode ser utilizada para os quatro serviços: blobs, ficheiros, 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 para a conta de armazenamento do Azure. Você usará essa chave mais tarde 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 para criar o 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 do 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 da tarefa

Adicione uma entrada ao seu trabalho usando o cmdlet az stream-analytics input . Este 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 entrada.

Importante

  • Substitua IOT HUB ACCESS KEY pelo valor de 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 \ (escape) o caractere ( " aspas duplas).
  • Atualize o valor de no comando a seguir se você usou um nome diferente de iotHubNamespaceMyASAIoTHub. 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 da tarefa

Adicione uma saída ao seu trabalho usando o cmdlet az stream-analytics output create . Este cmdlet usa o nome da tarefa, o nome da saída da tarefa, 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 \ (escape) caractere para " (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"

Execute o simulador de IoT

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

  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) salva no início do início rápido.

  3. Selecione Executar. A saída deve mostrar os dados do sensor e as mensagens que estão sendo enviadas para o Hub IoT.

    Raspberry Pi Azure IoT Online Simulator

Iniciar a tarefa do Stream Analytics e verificar a saída

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

Depois de executar o cmdlet seguinte, devolve True como a saída, se o trabalho for iniciado.

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

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

Screenshot showing the output file in the State blob container.

Transfira e abra o ficheiro 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
    }
}

Clean up resources (Limpar recursos)

Exclua o grupo de recursos, que excluirá todos os recursos do 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óximos passos

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