快速入門 - 使用 Azure CLI 建立串流分析作業
在本快速入門中,您將使用 Azure CLI 來定義串流分析作業,以篩選出溫度讀數大於 27 的即時感應器訊息。 串流分析作業會從 IoT 中樞讀取資料、轉換資料,以及將輸出資料寫入 Blob 儲存體中的容器。 本快速入門中使用的輸入資料是由 Raspberry Pi 線上模擬器產生。
開始之前
如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶。
必要條件
在 Azure Cloud Shell 中使用 Bash 環境。 如需詳細資訊,請參閱 Azure Cloud Shell 中的 Bash 快速入門。
若要在本地執行 CLI 參考命令,請安裝 Azure CLI。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱〈如何在 Docker 容器中執行 Azure CLI〉。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱使用 Azure CLI 登入。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能詳細資訊,請參閱使用 Azure CLI 擴充功能。
執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
建立資源群組。 所有 Azure 資源都必須部署至資源群組。 資源群組可讓您組織和管理相關的 Azure 資源。
針對此快速入門,請使用下列 az group create 命令,在 eastus 位置中建立一個名為 streamanalyticsrg 的資源群組:
az group create --name streamanalyticsrg --location eastus
準備輸入資料
在您定義串流分析作業之前,請先準備用於作業輸入的資料。 下列 Azure CLI 命令會準備作業所需的輸入資料。
使用 az iot hub create 命令建立 IoT 中樞。 此範例會建立名為 MyASAIoTHub 的 IoT 中樞。 由於 IoT 中樞名稱必須是全域唯一的,因此如果已取得名稱,您可能必須變更名稱。 將 SKU 設定為 F1 可使用免費層 (如果適用於您的訂用帳戶)。 否則,請選擇下一個最低層。
iotHubName=MyASAIoTHub az iot hub create --name $iotHubName --resource-group streamanalyticsrg --sku S1
建立 IoT 中樞後,使用 az iot hub connection-string show 命令來取得 IoT 中樞連接字串。 複製整個連接字串,並加以儲存。 您會在將 IoT 中樞新增為串流分析作業的輸入時使用它。
az iot hub connection-string show --hub-name $iotHubName
使用 az iothub device-identity create 命令,將裝置新增到 IoT 中樞。 此範例會建立名為 MyASAIoTDevice 的裝置。
az iot hub device-identity create --hub-name $iotHubName --device-id "MyASAIoTDevice"
使用 az iot hub device-identity connection-string show 命令取得裝置連接字串。 複製整個連接字串並加以儲存,以便在建立 Raspberry Pi 模擬器時使用。
az iot hub device-identity connection-string show --hub-name $iotHubName --device-id "MyASAIoTDevice" --output table
輸出範例:
HostName=MyASAIoTHub.azure-devices.net;DeviceId=MyASAIoTDevice;SharedAccessKey=a2mnUsg52+NIgYudxYYUNXI67r0JmNubmfVafojG8=
建立 Blob 儲存體帳戶
下列 Azure CLI 命令會建立用於作業輸出的 Blob 儲存體帳戶。
使用 az storage account create 命令建立一般用途的儲存體帳戶。 一般用途的儲存體帳戶可以用於所有四個服務:Blob、檔案、資料表和佇列。
storageAccountName="asatutorialstorage$RANDOM" az storage account create \ --name $storageAccountName \ --resource-group streamanalyticsrg \ --location eastus \ --sku Standard_ZRS \ --encryption-services blob
執行 az storage account keys list 命令,以取得儲存體帳戶的金鑰。
key=$(az storage account keys list -g streamanalyticsrg -n $storageAccountName --query "[0].value" -o tsv) echo $key
重要
記下 Azure 儲存體帳戶的存取金鑰。 稍後在本快速入門中,您將使用此金鑰。
使用 az storage container create 命令,建立名為
state
且用於儲存 Blob 的容器。 您可以使用儲存體帳戶金鑰來授權作業以建立容器。 如需有關藉由 Azure CLI 授權資料作業的詳細資訊,請參閱 藉由 Azure CLI 來授權 Blob 或佇列資料的存取權。az storage container create \ --account-name $storageAccountName \ --name state \ --account-key $key \ --auth-mode key
建立串流分析作業
使用 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"
設定作業的輸入
使用 az stream-analytics input Cmdlet,將輸入新增至您的作業。 此 Cmdlet 會採用 JSON 格式的作業名稱、作業輸入名稱、資源群組名稱和輸入屬性作為參數。 在此範例中,您將建立 IoT 中樞來作為輸入。
重要
- 將
IOT HUB ACCESS KEY
取代為您所儲存 IOT 中樞連接字串中的共用存取金鑰值。 例如,如果 IOT 中樞連接字串為:HostName=MyASAIoTHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=xxxxxxxxxxxxxx=
,則共用存取金鑰值為xxxxxxxxxxxxxx=
。 取代值時,請確定您不會刪除"
(雙引號) 的\
(逸出) 字元。 - 如果您使用
MyASAIoTHub
以外的名稱,請更新下列命令中iotHubNamespace
的值。 執行echo $iotHubName
以查看 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"
設定作業的輸出
使用 az stream-analytics output create Cmdlet,將輸出新增至您的作業。 此 Cmdlet 會採用作業名稱、作業輸出名稱、資源群組名稱、JSON 格式的資料來源,以及序列化類型作為參數。
重要
將 STORAGEACCOUNTNAME>
取代為您的 Azure 儲存體帳戶名稱,並將 STORAGEACCESSKEY>
取代為儲存體帳戶的存取金鑰。 如果您未記下這些值,請執行下列命令以取得這些值:echo $storageAccountName
和 echo $key
。 取代值時,請確定您不會刪除 "
(雙引號) 的 \
(逸出) 字元。
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
定義轉換查詢
使用 az stream-analytics transformation create Cmdlet 來新增轉換作業。
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"
執行 IoT 模擬器
將第 15 行中的預留位置取代為您在快速入門開頭儲存的整個 Azure IoT 中樞裝置連接字串 (而非 IoT 中樞連接字串)。
選取執行。 下列輸出會顯示傳送至 IoT 中樞的感應器資料和訊息。
啟動串流分析工作並查看輸出
使用 az stream-analytics job start Cmdlet 來啟動作業。 此 Cmdlet 會採用作業名稱、資源群組名稱、輸出啟動模式和啟動時間來作為參數。 OutputStartMode
可接受 JobStartTime
、CustomTime
或 LastOutputEventTime
。
執行下列 Cmdlet 後,如果作業啟動,它會在輸出中傳回 True
。
az stream-analytics job start \
--resource-group streamanalyticsrg \
--name streamanalyticsjob \
--output-start-mode JobStartTime
請提供幾分鐘的時間,然後確認已在 state
Blob 容器中建立輸出檔案。
下載並開啟檔案,以查看數個類似項目,如下所示:
{
"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
}
}
清除資源
刪除資源群組,這會刪除資源群組中的所有資源,包括串流分析作業、IoT 中樞和 Azure 儲存體帳戶。
az group delete \
--name streamanalyticsrg \
--no-wait
下一步
在本快速入門中,您已使用 Azure CLI 部署了簡單的串流分析作業。 您也可以使用 Azure 入口網站和 Visual Studio 部署串流分析作業。
若要了解如何設定其他輸入來源及執行即時偵測,請前往下列文章: