快速入門:使用 Azure PowerShell 建立串流分析作業
使用 Azure PowerShell 模組,即可利用 PowerShell Cmdlet 或指令碼建立和管理 Azure 資源。 本快速入門展示如何使用 Azure PowerShell 模組來部署和執行串流分析作業。
範例作業會從 IoT 中樞裝置讀取串流資料。 輸入資料是由 Raspberry Pi 線上模擬器產生。 串流分析作業會使用串流分析查詢語言來轉換資料,以篩選包含溫度超過 27° 的訊息。 然後,它會將產生的輸出事件寫入 Blob 儲存體中的檔案。
開始之前
- 如果您沒有 Azure 訂閱,請建立免費帳戶。
- 本快速入門需要 Azure PowerShell 模組。 執行
Get-Module -ListAvailable Az
來尋找本機電腦上所安裝的版本。 如果您需要安裝或升級,請參閱安裝 Azure PowerShell 模組。 - 某些 IoT 中樞動作不受 Azure PowerShell 支援,而且必須使用 Azure CLI 2.0.70 版或更新版本和適用於 Azure CLI 的 IoT 延伸模組完成。 安裝 Azure CLI並使用
az extension add --name azure-iot
來安裝 IoT 擴充功能。
登入 Azure
使用 Connect-AzAccount
命令登入 Azure 訂用帳戶,並在快顯瀏覽器中輸入您的 Azure 認證:
# Connect to your Azure account
Connect-AzAccount
如果您有多個訂用帳戶,請執行下列 Cmdlet 以選取您想要用於本快速入門的訂用帳戶。 務必要以您的訂用帳戶名稱取代 <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
建立資源群組
使用 New-AzResourceGroup 來建立 Azure 資源群組。 資源群組是在其中部署與管理 Azure 資源的邏輯容器。
$resourceGroup = "StreamAnalyticsRG"
$location = "WestUS2"
New-AzResourceGroup `
-Name $resourceGroup `
-Location $location
準備輸入資料
定義串流分析作業前,先準備設定為作業輸入的資料。
下列 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
命令建立 IoT 中樞。 此範例會建立名為 MyASAIoTHub 的 IoT 中樞。 因為 IoT 中樞名稱是唯一的,所以您需要提出您自己的 IoT 中樞名稱。 將 SKU 設定為 F1 可使用免費層 (如果適用於您的訂用帳戶)。 否則,請選擇下一個最低層。az iot hub create --name "MyASAIoTHub" --resource-group $resourceGroup --sku S1
建立 IoT 中樞後,使用 az iot hub show-connection-string 命令來取得 IoT 中樞連接字串。 複製整個連接字串,並加以儲存。 當您將 IoT 中樞新增為串流分析作業的輸入時,您會需要它。
az iot hub show-connection-string --resource-group $resourceGroup --hub-name "MyASAIoTHub"
使用
az iot hub device-identity create
命令將裝置新增至 IoT 中樞。 此範例會建立名為 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 Cmdlet 來建立標準的一般用途儲存體帳戶。 這個範例會建立名為 myasaquickstartstorage 的儲存體帳戶,並含有本機備援儲存體 (LRS) 和 Blob 加密 (預設會啟用)。
取出儲存體帳戶內容
$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
建立串流分析作業
使用 New-AzStreamAnalyticsJob Cmdlet 建立串流分析作業。 此 Cmdlet 會將作業名稱、資源群組名稱、位置和 SKU 名稱作為參數。 作業名稱可以是任何可識別作業的易記名稱。 只能有英數字元、連字號與底線,且其長度必須介於 3 到 63 個字元之間。
New-AzStreamAnalyticsJob
執行 Cmdlet。
$jobName = "MyStreamingJob"
New-AzStreamAnalyticsJob `
-ResourceGroupName $resourceGroup `
-Name $jobName `
-Location centralus `
-SkuName Standard
設定作業的輸入
使用 New-AzStreamAnalyticsInput Cmdlet 新增作業的輸入。 此 Cmdlet 會採用作業名稱、作業輸入名稱、資源群組名稱和作業輸入定義來作為參數。 作業輸入定義是 JSON 檔案,其中包含設定作業輸入所需的屬性。 在此範例中,您會建立 blob 儲存體作為輸入。
在本機電腦上,建立名為 JobInputDefinition.json
的檔案,並於其中新增下列 JSON 資料。
重要
- 將取代
accesspolicykey
為您在上一節中所儲存 IoT 中樞連接字串的SharedAccessKey
部分。 - 如果您針對 IoT 中樞使用不同的名稱,請更新
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
Cmdlet 來建立串流分析作業的 Azure IoT 中樞輸入。
$jobInputName = "IoTHubInput"
New-AzStreamAnalyticsInput `
-ResourceGroupName $resourceGroup `
-JobName $jobName `
-File $jobInputDefinitionFile `
-Name $jobInputName
設定作業的輸出
使用 New-AzStreamAnalyticsOutput Cmdlet 新增作業的輸出。 此 Cmdlet 會採用作業名稱、作業輸出名稱、資源群組名稱和作業輸出定義來作為參數。 作業輸出定義是 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
Cmdlet 來建立串流分析作業的 Azure Blob 儲存體輸出。
$jobOutputName = "BlobOutput"
New-AzStreamAnalyticsOutput `
-ResourceGroupName $resourceGroup `
-JobName $jobName `
-File $jobOutputDefinitionFile `
-Name $jobOutputName
定義轉換查詢
使用 New-AzStreamAnalyticsTransformation Cmdlet 新增作業的轉換。 此 Cmdlet 會採用作業名稱、作業轉換名稱、資源群組名稱和作業轉換定義來作為參數。 在本機電腦上,建立名為 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
Cmdlet。
$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 模擬器
以您在上一節中儲存的整個 Azure IoT 中樞裝置連接字串取代行 15 中的預留位置。
按一下執行。 下列輸出會顯示傳送至 IoT 中樞的感應器資料和訊息。
啟動串流分析工作並查看輸出
使用 Start-AzStreamAnalyticsJob Cmdlet 啟動作業。 此 Cmdlet 會採用作業名稱、資源群組名稱、輸出啟動模式和啟動時間來作為參數。 OutputStartMode
可接受 JobStartTime
、CustomTime
或 LastOutputEventTime
。 若要了解這些值各自代表什麼,請參閱 PowerShell 文件中的參數一節。
執行下列 Cmdlet 後,如果作業啟動,它會在輸出中傳回 True
。 在儲存體容器中,建立的輸出資料夾包含已轉換的資料。
Start-AzStreamAnalyticsJob `
-ResourceGroupName $resourceGroup `
-Name $jobName `
-OutputStartMode 'JobStartTime'
清除資源
若不再需要,可刪除資源群組、串流作業和所有相關資源。 刪除作業可避免因為作業使用串流單位而產生費用。 如果您計劃在未來使用該作業,您可以跳過刪除動作,且目前停止作業。 如果您不要繼續使用此作業,請執行下列 Cmdlet,以刪除本快速入門所建立的所有資源:
Remove-AzResourceGroup `
-Name $resourceGroup
下一步
在本快速入門中,您已使用 PowerShell 部署了簡單的串流分析作業。 您也可以使用 Azure 入口網站和 Visual Studio 部署串流分析作業。
若要了解如何設定其他輸入來源及執行即時偵測,請前往下列文章: