快速入門:將您的第一個 IoT Edge 模組部署至虛擬 Linux 裝置
適用於: IoT Edge 1.5 IoT Edge 1.4
重要
IoT Edge 1.5 LTS 和 IoT Edge 1.4 LTS 為支援的版本。 IoT Edge 1.4 LTS 於 2024 年 11 月 12 日結束生命週期。 如果您是舊版,請參閱更新 IoT Edge。
藉由將容器化程式碼部署至虛擬 Linux IoT Edge 裝置,在本快速入門中測試 Azure IoT Edge。 IoT Edge 可讓您從遠端管理裝置上的程式碼,以便可以將更多的工作負載傳送到邊緣。 在本快速入門中,建議您對 IoT Edge 裝置使用 Azure 虛擬機器,以便您可以快速建立測試機器,然後在完成時將其刪除。
在此快速入門中,您將了解如何:
- 建立 IoT 中樞。
- 向 IoT 中樞註冊 IoT Edge 裝置。
- 在虛擬裝置上安裝並啟動 IoT Edge 執行階段。
- 將模組從遠端部署到 IoT Edge 裝置。
本快速入門將引導您建立設定為 IoT Edge 裝置的 Linux 虛擬機器。 接著,您可以從 Azure 入口網站將模組部署至裝置。 本快速入門中使用的模組是一個模擬感應器,會產生溫度、溼度和壓力資料。 其他 Azure IoT Edge 教學課程會以您在此所做的工作為基礎,部署其他模組來分析模擬資料以產生商業見解。
如果您沒有使用中的 Azure 訂用帳戶,請在開始前建立免費帳戶。
必要條件
備妥環境以使用 Azure CLI。
在 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。
雲端資源:
一個資源群組,用以管理本快速入門中使用的所有資源。 在本快速入門及之後的教學課程中,我們會使用名為 IoTEdgeResources 的範例資源群組。
az group create --name IoTEdgeResources --location westus2
建立 IoT 中樞
使用 Azure CLI 建立 IoT 中樞,開始進行此快速入門。
此快速入門適用於 IoT 中樞的免費層級。 如果您在過去已使用過 IoT 中樞,並已建立中樞,您可以使用該 IoT 中樞。
下列程式碼會在資源群組 IoTEdgeResources 中建立免費的 F1 中樞。 以 IoT 中樞的唯一名稱來取代 {hub_name}
。 建立 IoT 中樞可能需要幾分鐘的時間。
az iot hub create --resource-group IoTEdgeResources --name {hub_name} --sku F1 --partition-count 2
如果因您的訂用帳戶中已有免費中樞而發生錯誤,請將 SKU 變更為 S1。 每個訂用帳戶只能有一個免費的 IoT 中樞。 如果您收到無法使用 IoT 中樞名稱的錯誤,表示已有其他人的中樞使用該名稱。 請嘗試使用新名稱。
註冊 IoT Edge 裝置
向新建立的 IoT 中樞註冊 IoT Edge 裝置。
建立 IoT Edge 裝置的裝置身分識別,使它能與 IoT 中樞通訊。 裝置身分識別存在於雲端,您可以使用唯一裝置連接字串來建立實體裝置與裝置身分識別的關聯。
由於 IoT Edge 裝置的行為和管理方式不同於典型 IoT 裝置,請使用 --edge-enabled
旗標將此身分識別宣告為 IoT Edge 裝置。
在 Azure Cloud Shell 中輸入下列命令,以在中樞內建立名為 myEdgeDevice 的裝置。
az iot hub device-identity create --device-id myEdgeDevice --edge-enabled --hub-name {hub_name}
如果您收到有關 iothubowner 原則金鑰的錯誤,請確定 Cloud Shell 正在執行最新版的 azure-iot 擴充功能。
檢視裝置的連接字串 (此字串會連結實體裝置與其在 IoT 中樞的身分識別)。 它包含了 IoT 中樞的名稱、裝置的名稱,以及一個用來驗證兩者之間連線的共用金鑰。 當您在下一節中設定 IoT Edge 裝置時,我們將再次參考此連接字串。
az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name {hub_name}
例如,您的連接字串看起來應該類似於
HostName=contoso-hub.azure-devices.net;DeviceId=myEdgeDevice;SharedAccessKey=<DEVICE_SHARED_ACCESS_KEY>
。
設定您的 IoT Edge 裝置
建立其中具有 Azure IoT Edge 執行階段的虛擬機器。
IoT Edge 執行階段會部署在所有 IoT Edge 裝置上。 其有三個元件。 IoT Edge 安全性精靈會在每次 IoT Edge 裝置開機時啟動,並藉由啟動 IoT Edge 代理程式來啟動該裝置。 IoT Edge 代理程式有助於在 IoT Edge 裝置 (包括 IoT Edge 中樞) 上部署及監視模組。 IoT Edge 中樞會管理 IoT Edge 裝置上的模組通訊,以及裝置與 IoT 中樞之間的通訊。
在執行階段設定期間,您會提供裝置連接字串。 這是您從 Azure CLI 中擷取的字串。 此字串會將您的實體裝置與 Azure 中的 IoT Edge 裝置身分識別產生關聯。
部署 IoT Edge 裝置
本節將使用 Azure Resource Manager 範本來建立新的虛擬機器,並在其中安裝 IoT Edge 執行階段。 如果您想要改為使用自己的 Linux 裝置,您可以遵循手動佈建單一 Linux IoT Edge 裝置中的安裝步驟,然後再返回本快速入門。
使用 [部署至 Azure] 按鈕或 CLI 命令,根據預建的 iotedge-vm-deploy 範本來建立您的 IoT Edge 裝置。
使用 IoT Edge Azure Resource Manager 範本進行部署。
針對 Bash 或 Cloud Shell 使用者,請將下列命令複製到文字編輯器 (以您的資訊取代預留位置文字),然後複製到您的 Bash 或 Cloud Shell 視窗:
az deployment group create \ --resource-group IoTEdgeResources \ --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/main/edgeDeploy.json" \ --parameters dnsLabelPrefix='<REPLACE_WITH_VM_NAME>' \ --parameters adminUsername='azureUser' \ --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <REPLACE_WITH_HUB_NAME> -o tsv) \ --parameters authenticationType='password' \ --parameters adminPasswordOrKey="<REPLACE_WITH_PASSWORD>"
針對 PowerShell 使用者,請將下列命令複製到您的 PowerShell 視窗,然後以您自己的資訊取代預留位置文字:
az deployment group create ` --resource-group IoTEdgeResources ` --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/main/edgeDeploy.json" ` --parameters dnsLabelPrefix='<REPLACE_WITH_VM_NAME>' ` --parameters adminUsername='azureUser' ` --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <REPLACE_WITH_HUB_NAME> -o tsv) ` --parameters authenticationType='password' ` --parameters adminPasswordOrKey="<REPLACE_WITH_PASSWORD>"
此範本會取用下列參數:
參數 | 描述 |
---|---|
資源群組 | 將在其中建立資源的資源群組。 使用我們在本文中使用的預設 IoTEdgeResources,或提供您訂用帳戶中現有資源群組的名稱。 |
template-uri | 我們所用 Resource Manager 範本的指標。 |
dnsLabelPrefix | 將用來建立虛擬機器主機名稱的字串。 將預留位置文字取代為您虛擬機器的名稱。 |
adminUsername | 虛擬機器管理帳戶的使用者名稱。 使用範例 azureUser 或提供新的使用者名稱。 |
deviceConnectionString | IoT 中樞中裝置身分識別的連接字串,用來設定虛擬機器上的 IoT Edge 執行階段。 此參數內的 CLI 命令會為您抓取連接字串。 以您的 IoT 中樞名稱取代預留位置文字。 |
authenticationType | 管理帳戶的驗證方法。 本快速入門會使用密碼驗證,但您也可以將此參數設定為 sshPublicKey。 |
adminPasswordOrKey | 管理帳戶的 SSH 金鑰密碼或值。 以安全密碼取代預留位置文字。 您的密碼長度必須至少有 12 個字元,而且有下列四項中的三項:小寫字元、大寫字元、數字和特殊字元。 |
部署完成之後,您應該會在 CLI 中收到 JSON 格式的輸出,其中包含連線到虛擬機器的 SSH 資訊。 複製 [輸出] 區段的 [公用 SSH] 項目值。 例如,您的 SSH 命令看起來應該類似於 ssh azureUser@edge-vm.westus2.cloudapp.azure.com
。
檢視 IoT Edge 執行階段狀態
此快速入門中的其餘命令,會在您的 IoT Edge 裝置本身上執行,讓您可以查看在裝置上發生的事。 如果您使用的是虛擬機器,請使用您所設定的管理使用者名稱和部署命令所輸出的 DNS 名稱,立即連線到該機器。 您也可在 Azure 入口網站中您虛擬機器的 [概觀] 頁面上找到 DNS 名稱。 使用下列命令連線到您的虛擬機器。 將{admin username}
和 {DNS name}
取代為您自己的值。
ssh {admin username}@{DNS name}
連線到您的虛擬機器之後,請確認 IoT Edge 裝置上已成功安裝並設定執行階段。
檢查確認 IoT Edge 正在執行。 如果 IoT Edge 正在執行,下列命令應傳回 Ok 狀態,否則提供服務錯誤。
sudo iotedge system status
提示
您需要有較高的權限才能執行
iotedge
命令。 當您在安裝 IoT Edge 執行階段之後登出機器,並第一次重新登入時,您的權限將會自動更新。 在那之前,請在這些命令前面使用sudo
。如果您需要對服務進行疑難排解,請擷取服務記錄。
sudo iotedge system logs
檢視在 IoT Edge 裝置上執行的所有模組。 由於服務只有第一次會啟動,您應該只會看到 edgeAgent 模組正在執行。 edgeAgent 模組預設會執行,且有助於安裝及啟動部署至裝置的任何其他模組。
sudo iotedge list
IoT Edge 裝置現已設定完成。 其已準備好執行雲端部署的模組。
部署模組
從雲端管理您的 Azure IoT Edge 裝置,以部署會將遙測資料傳送到 IoT 中樞的模組。
Azure IoT Edge 的主要功能之一,是將程式碼從雲端部署至 IoT Edge 裝置。 IoT Edge 模組是實作為容器的可執行檔套件。 在本節中,您將從 Microsoft 成品登錄的 IoT Edge 模組區段中部署預先建置的模組。
您在本節中部署的模組會模擬感應器,並傳送產生的資料。 當您開始使用 IoT Edge 時,此模組會是很有用的一組程式碼,因為您可以使用模擬的資料進行開發和測試。 如果您想要清楚檢視此模組的運作情形,您可以檢視模擬溫度感應器的原始程式碼。
請遵循下列步驟以部署第一個模組。
登入 Azure 入口網站,並移至您的 IoT 中樞。
從左側功能表的 [裝置管理] 底下,選取 [裝置]。
從清單中選取目標 IoT Edge 裝置的裝置識別碼。
當您建立新的 IoT Edge 裝置時,其會在 Azure 入口網站中顯示狀態碼
417 -- The device's deployment configuration is not set
。 此狀態為正常,表示裝置已就緒可接收模組部署。在上方列中,選取 [設定模組]。
選擇您要在裝置上執行的模組。 您可以選擇自己建置的模組,或是容器登錄中的映像。 在本快速入門中,您將會部署 Microsoft 容器登錄的模組。
在 [IoT Edge 模組] 區段中,選取 [新增],然後選擇 [IoT Edge Module 模組]。
更新下列模組設定:
設定 值 IoT 模組名稱 SimulatedTemperatureSensor
映像 URI mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:latest
重新啟動原則 always 需要的狀態 執行中 選取 [下一步:路由] 以繼續設定路由。
新增路由,以將所有訊息從模擬的溫度模組傳送到 IoT 中樞。
設定 值 名稱 SimulatedTemperatureSensorToIoTHub
值 FROM /messages/modules/SimulatedTemperatureSensor/* INTO $upstream
完成時,選取 [下一步:檢閱 + 建立]。
檢閱 JSON 檔案,然後選取 [建立]。 JSON 檔案會定義部署至 IoT Edge 裝置的所有模組。
注意
當將新的部署提交至 IoT Edge 裝置時,不會有任何項目推送至裝置。 此時,裝置會定期查詢 IoT 中樞以取得新的指示。 裝置在發現更新的部署資訊清單時,即會使用新部署的相關資訊從雲端提取模組映像,然後開始在本機執行模組。 此程序可能需要幾分鐘的時間。
在您建立模組部署詳細資料之後,精靈會讓您回到裝置詳細資料頁面。 在 [模組] 索引標籤上檢視部署狀態。
您應看到三個模組:$edgeAgent、$edgeHub 和 SimulatedTemperatureSensor。 如果一或多個模組的 [已在部署中指定] 下顯示 [是],但在 [由裝置回報] 下未顯示,則您的 IoT Edge 裝置仍在啟動這些模組。 等待幾分鐘,然後重新整理頁面。
如果您在部署模組時遇到問題,請參閱從 Azure 入口網站針對 IoT Edge 裝置進行疑難排解 (部分機器翻譯)。
檢視產生的資料
在此快速入門中,您可以建立新的 IoT Edge 裝置,並在其中安裝 IoT Edge 執行階段。 然後,您已使用 Azure 入口網站來部署 IoT Edge 模組,使其無須變更裝置本身就能在裝置上執行。
在此案例中,您推送的模組會產生可用於稍後測試的環境資料範例。 模擬感應器會同時監視機器本身和機器的周邊環境。 例如,此感應器可能位於伺服器機房中、廠房中或風力發電機上。 訊息包含環境溫度和溼度、機器溫度和壓力,以及時間戳記。 IoT Edge 教學課程會使用此模組所建立的資料作為分析的測試資料。
在您的 IoT Edge 裝置上再次開啟命令提示字元,或從 Azure CLI 使用 SSH 連線。 確認從雲端部署的模組正在 IoT Edge 裝置上執行:
sudo iotedge list
檢視從溫度感應器模組傳送的訊息:
sudo iotedge logs SimulatedTemperatureSensor -f
提示
IoT Edge 命令在在參考模組名稱時會區分大小寫。
清除資源
如果您想要繼續進行 IoT Edge 教學課程,您可以使用在本快速入門中註冊和設定的裝置。 否則,您可以刪除您建立的 Azure 資源,以避免產生費用。
如果您是在新的資源群組中建立虛擬機器和 IoT 中樞,您可以刪除該群組和所有相關聯的資源。 再次檢查資源群組的內容,確定沒有您想要保留的內容。 如果您不想刪除整個群組,可改為刪除個別資源。
重要
刪除資源群組是無法回復的動作。
移除 IoTEdgeResources 群組。 可能需要幾分鐘才能刪除資源群組。
az group delete --name IoTEdgeResources --yes
您可以檢視資源群組清單來確認已移除資源群組。
az group list
下一步
在本快速入門中,您已建立 IoT Edge 裝置,並使用 Azure IoT Edge 雲端介面將程式碼部署至裝置上。 現在,您已有測試裝置,可產生其環境的相關原始資料。
在下一個教學課程中,您將了解如何從 Azure 入口網站監視裝置的活動和健康情況。