Краткое руководство. Создание задания Stream Analytics с помощью Azure PowerShell
Модуль PowerShell используется для создания ресурсов Azure и управления ими с помощью командлетов или скриптов PowerShell. В этом кратком руководстве показано, как использовать модуль Azure PowerShell для развертывания и запуска задания Azure Stream Analytics.
Пример задания считывает потоковые данные с устройства Центр Интернета вещей. Входные данные создаются онлайн-симулятором Raspberry Pi. Задание Stream Analytics преобразует данные с помощью языка запросов Stream Analytics для фильтрации сообщений с температурой больше 27°. Затем он записывает полученные выходные события в файл в хранилище BLOB-объектов.
Подготовка к работе
- Если у вас еще нет подписки Azure, создайте бесплатную учетную запись.
- Для работы с этим кратким руководством требуется модуль Azure PowerShell. Запустите
Get-Module -ListAvailable Az
, чтобы найти версию, установленную на вашем локальном компьютере. Если вам необходимо выполнить установку или обновление, см. статью об установке модуля Azure PowerShell. - Некоторые действия Центр Интернета вещей не поддерживаются Azure PowerShell и должны быть завершены с помощью Azure CLI версии 2.0.70 или более поздней версии и расширения Интернета вещей для Azure CLI. Установите Azure CLI и используйте
az extension add --name azure-iot
для установки расширения Интернета вещей.
Вход в Azure
Войдите в свою подписку Azure с помощью команды Connect-AzAccount
и введите учетные данные Azure во всплывающем окне браузера.
# Connect to your Azure account
Connect-AzAccount
Если у вас есть несколько подписок, выберите ту, которую вы хотите использовать при работе с этим кратким руководством, запустив следующие командлеты. Не забудьте заменить <your subscription name>
именем своей подписки:
# 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
Создание или изменение группы ресурсов
Создайте группу ресурсов Azure с помощью командлета New-AzResourceGroup. Группа ресурсов — это логический контейнер, в котором происходит развертывание ресурсов Azure и управление ими.
$resourceGroup = "StreamAnalyticsRG"
$location = "WestUS2"
New-AzResourceGroup `
-Name $resourceGroup `
-Location $location
Подготовка входных данных
Прежде чем определить задание Stream Analytics, подготовьте данные, которые настроены как входные данные задания.
Следующий блок кода Azure CLI содержит множество команд для подготовки входных данных, необходимых для задания. Ознакомьтесь со следующими разделами, чтобы понять код.
В окне PowerShell выполните
az login
команду, чтобы войти в учетную запись Azure.После успешного входа Azure CLI возвращает список подписок. Скопируйте подписку, используемую
az account set
для этого краткого руководства, и выполните команду, чтобы выбрать эту подписку. Выберите ту же подписку, что и в предыдущем разделе при использовании PowerShell. Не забудьте заменить<your subscription name>
именем своей подписки.az login az account set --subscription "<your subscription>"
Создайте Центр Интернета вещей с помощью
az iot hub create
команды. Этот пример создает Центр Интернета вещей с именем MyASAIoTHub. Так как имена Центров Интернета вещей являются уникальными, необходимо придумать собственное имя Центра Интернета вещей. Установите номер SKU на F1, чтобы использовать бесплатный уровень, если он доступен в вашей подписке. В противном случае выберите следующий самый низкий уровень.az iot hub create --name "MyASAIoTHub" --resource-group $resourceGroup --sku S1
После создания Центра Интернета вещей получите Центр Интернета вещей строка подключения с помощью команды az iot hub connection-string show. Скопируйте весь строка подключения и сохраните его. Это необходимо при добавлении Центр Интернета вещей в качестве входных данных в задание Stream Analytics.
az iot hub connection-string show --resource-group $resourceGroup --hub-name "MyASAIoTHub"
Добавьте устройство для Центр Интернета вещей с помощью
az iot hub device-identity create
команды. В этом примере создается устройство с именем MyASAIoTDevice.az iot hub device-identity create --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice"
Получите устройство строка подключения с помощью
az iot hub device-identity connection-string show
команды. Скопируйте всю строку подключения и сохраните ее для использования при создании симулятора Raspberry Pi.az iot hub device-identity connection-string show --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice" --output table
Пример выходных данных.
HostName=MyASAIoTHub.azure-devices.net;DeviceId=MyASAIoTDevice;SharedAccessKey=a2mnUsg52+NIgYudxYYUNXI67r0JmNubmfVafojG8=
Создание хранилища BLOB-объектов
Следующий блок кода Azure PowerShell использует команды для создания хранилища BLOB-объектов, принимающего выходные данные задания. Просмотрите разделы, чтобы понять код.
Создайте стандартную учетную запись хранения общего назначения с помощью командлета New-AzStorageAccount. В этом примере создается учетная запись хранения myasaquickstartstorage с локально избыточным хранилищем (LRS) и шифрованием больших двоичных объектов (включено по умолчанию).
Получите контекст учетной записи хранения
$storageAccount.Context
, определяющий необходимую учетную запись хранения. Работая в учетной записи хранения, ссылайтесь на контекст, вместо того чтобы многократно предоставлять учетные данные.Создайте контейнер хранилища с помощью командлета New-AzStorageContainer.
Скопируйте ключ к хранилищу данных, который выводится в коде, и сохраните этот ключ, чтобы позднее создать выходные данные задания потоковой передачи.
$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
Создание задания Stream Analytics
Создайте задание Stream Analytics с помощью командлета New-AzStreamAnalyticsJob. Этот командлет принимает имя задания, имя группы ресурсов, расположение и имя SKU в качестве параметров. Для задания можно присвоить любое понятное описательное имя. Оно может содержать только буквенно-цифровые символы, дефисы и знаки подчеркивания. Длина должна составлять от 3 до 63 символов.
Запустите командлет New-AzStreamAnalyticsJob
.
$jobName = "MyStreamingJob"
New-AzStreamAnalyticsJob `
-ResourceGroupName $resourceGroup `
-Name $jobName `
-Location centralus `
-SkuName Standard
Настройка входных данных для задания
Добавьте входные данные в задание с помощью командлета New-AzStreamAnalyticsInput. Этот командлет принимает имя задания, имя входных данных задания, имя группы ресурсов и определение входных данных задания в качестве параметров. Определение входных данных задания — это JSON-файл, содержащий свойства, необходимые для настройки входных данных задания. В этом примере создается хранилище BLOB-объектов в качестве входных данных.
На вашем локальном компьютере создайте файл с именем JobInputDefinition.json
и добавьте в него следующие данные JSON.
Внимание
- Замените
accesspolicykey
SharedAccessKey
частью Центр Интернета вещей строка подключения, сохраненной в предыдущем разделе. - Если вы использовали другое имя для Центра Интернета вещей, обновите значение для
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"
}
$jobInputDefinitionFile
Задайте переменную PowerShell в путь, в котором вы сохранили JSON-файл определения задания.
$jobInputDefinitionFile = "C:\JobInputDefinition.json"
Затем запустите New-AzStreamAnalyticsInput
командлет, чтобы создать Центр Интернета вещей Azure входные данные для задания Stream Analytics.
$jobInputName = "IoTHubInput"
New-AzStreamAnalyticsInput `
-ResourceGroupName $resourceGroup `
-JobName $jobName `
-File $jobInputDefinitionFile `
-Name $jobInputName
Настройка выходных данных для задания
Добавьте выходные данные в задание с помощью командлета New-AzStreamAnalyticsOutput. Этот командлет принимает имя задания, имя выходных данных задания, имя группы ресурсов и определение выходных данных задания в качестве параметров. Определение выходных данных задания — это JSON-файл, содержащий свойства, необходимые для настройки выходных данных задания. В этом примере в качестве выходных данных используется хранилище BLOB-объектов.
На вашем локальном компьютере создайте файл с именем JobOutputDefinition.json
и добавьте в него следующие данные JSON.
Внимание
Замените значение accountKey
на ключ доступа учетной записи хранения, который является значением, хранящимся в $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"
}
$jobOutputDefinitionFile
Задайте переменную PowerShell в путь, в котором вы сохранили JSON-файл определения выходных данных задания.
$jobOutputDefinitionFile = "C:\JobOutputDefinition.json"
Затем запустите New-AzStreamAnalyticsOutput
командлет, чтобы создать Хранилище BLOB-объектов Azure выходные данные для задания Stream Analytics.
$jobOutputName = "BlobOutput"
New-AzStreamAnalyticsOutput `
-ResourceGroupName $resourceGroup `
-JobName $jobName `
-File $jobOutputDefinitionFile `
-Name $jobOutputName
Определение запроса преобразования
Добавьте преобразование в задание с помощью командлета New-AzStreamAnalyticsTransformation. Этот командлет принимает имя задания, имя преобразования задания, имя группы ресурсов и определение преобразования задания в качестве параметров. На вашем локальном компьютере создайте файл с именем JobTransformationDefinition.json
и добавьте в него следующие данные JSON. JSON-файл содержит параметр запроса, который определяет запрос преобразования:
{
"name":"MyTransformation",
"type":"Microsoft.StreamAnalytics/streamingjobs/transformations",
"properties":{
"streamingUnits":1,
"script":null,
"query":"SELECT * INTO BlobOutput FROM IoTHubInput WHERE Temperature > 27"
}
}
Затем выполните командлет 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
Запуск IoT-симулятора
Откройте онлайн-симулятор Raspberry Pi для Интернета вещей Azure.
Замените значения заполнителя в 15-й строке строкой подключения устройства Центра Интернета вещей, которую вы сохранили при работе с предыдущим разделом.
Щелкните Выполнить. В выходных данных должны присутствовать показания датчика и сообщения, отправляемые в Центр Интернета вещей.
Запуск задания Stream Analytics и просмотр выходных данных
Запустите задание с помощью командлета Start-AzStreamAnalyticsJob. Этот командлет принимает имя задания, имя группы ресурсов, режим начала вывода задания и время запуска в качестве параметров. OutputStartMode
принимает значения JobStartTime
, CustomTime
или LastOutputEventTime
. Дополнительные сведения о том, к чему относится каждое из этих значений, см. в разделе параметров в документации по PowerShell.
После запуска следующего командлета, если задание запустится, будет возвращено значение True
в качестве выходных данных. В контейнере хранилища будет создана выходная папка с преобразованными данными.
Start-AzStreamAnalyticsJob `
-ResourceGroupName $resourceGroup `
-Name $jobName `
-OutputStartMode 'JobStartTime'
Очистка ресурсов
Ставшие ненужными группу ресурсов, задание потоковой передачи и все связанные ресурсы можно удалить. При удалении задания будет прекращена тарификация за единицы потоковой передачи, потребляемые заданием. Если вы планируете использовать задание в дальнейшем, остановите его и не выполняйте процедуру его удаления. Если вам больше не нужно это задание, удалите все ресурсы, созданные в ходе работы с этим кратким руководством, выполнив следующий командлет.
Remove-AzResourceGroup `
-Name $resourceGroup
Следующие шаги
В этом кратком руководстве вы развернули простое задание Stream Analytics, используя PowerShell. Вы также можете развертывать задания Stream Analytics, используя портал Azure и Visual Studio.
Дополнительные сведения о настройке других источников входных данных и обнаружении в режиме реального времени см. в следующей статье: