設定適用於 Azure Sphere 的 Azure IoT Edge
重要
這是 Azure Sphere (舊版) 檔。 Azure Sphere(舊版)將於 2027 年 9 月 27 日淘汰,且使用者此時必須移轉至 Azure Sphere(整合式)。 使用位於 TOC 上方的版本選取器來檢視 Azure Sphere (整合式) 檔。
Azure IoT Edge 提供下游裝置之間的篩選和數據處理層,例如 Azure Sphere 和 Azure IoT 中樞。 如果您的 Azure Sphere 裝置會產生大量需要後續處理的數據或數據,請考慮使用 Azure IoT Edge。
本主題記載使用 Azure Sphere 設定 Azure IoT Edge 裝置的步驟。 Azure Sphere 支援 Azure IoT Edge 1.1 版和 1.2 版;指示中會指出顯著差異。 主要差別在於:
- 封裝名稱從
iotedge
變更為aziot-edge
。 - 預設設定檔具有新的名稱和位置。 在 Azure IoT Edge 1.1 中,組態檔是 /etc/iotedge/config.yaml。 在 Azure IoT Edge 1.2 中,組態檔是 /etc/aziot/config.toml。
- Azure IoT Edge 1.2 需要透過網路上的 DNS 伺服器存取的完整功能變數名稱 (FQDN)。
完成本主題中的工作之後,您的 Azure Sphere 裝置會設定為透過作為透明閘道的 Azure IoT Edge 裝置將資料傳送至 Azure IoT 中樞。 您可以遵循 Azure IoT Edge 模組指南,在 Azure IoT Edge 裝置上新增其他數據篩選和處理。
開始之前
本主題中的步驟假設:
- 您的 Azure Sphere 裝置會透過 USB 連線到您的電腦。
- 您有 Azure 訂用帳戶。
- 您已建立 Azure IoT 中樞 實例,並手動布建裝置。 請注意,在稍後的程式 (步驟 6) 中,您必須針對 IoT 中樞 使用租使用者 CA 憑證。
- 您已建立資源群組,且與 Azure IoT 中樞 和IoT Edge服務相關的所有資源都必須屬於此資源群組。
重要
雖然您可以建立 Azure 訂用帳戶,但註冊程式會要求您輸入信用卡號碼。 Azure 提供數個層級的訂用帳戶服務。 根據預設,當您建立 Azure IoT 中樞 實例時,會選取需要每月服務費用的標準層。 若要避免每月收費,請選取免費層。 免費層包含搭配 Azure IoT 中樞 實例使用裝置所需的服務,包括裝置對應項。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
概觀
設定 Azure IoT Edge 裝置並將其設定為使用 Azure Sphere 裝置需要多步驟程式,而且您應該規劃大約 8 小時才能完成這些步驟,特別是如果您不熟悉 Azure IoT Edge。 如果這是您第一次使用 Azure IoT Edge,請遵循每個區段中的快速入門指示,以設定在 Linux 虛擬機上執行的 IoT Edge 裝置。
每個 Azure Sphere 租使用者和 Azure IoT Edge 裝置都必須只完成這些步驟一次;不過,每個 Azure Sphere 裝置都必須在 Azure IoT 中樞 中手動設定,且 Azure IoT Edge 裝置必須設定為 Azure Sphere 裝置的父系。
設定步驟可以分成三個邏輯群組:
建立IoT Edge裝置並將其設定為透明閘道
- 步驟 1: 建立 Azure IoT Edge 裝置。
- 步驟 2。 將 Azure IoT Edge 閘道裝置設定為伺服器。
- 步驟 3: 開啟 Azure IoT Edge 閘道裝置埠以進行通訊。
- 步驟 4. 在 config.toml 中更新閘道主機名(Azure IoT Edge 1.2 版)或 config.yaml(Azure IoT Edge 1.1 版)。
在 Azure IoT 中樞 中設定 Azure Sphere 裝置
- 步驟 5: 將 Azure IoT Edge 裝置設定為 Azure Sphere 裝置的父系。
建立 Azure Sphere 裝置與 IoT Edge 裝置之間的信任連線
- 步驟 6。 將 Azure Sphere 裝置的租使用者 CA 憑證提供給 Azure IoT Edge 裝置。
- 步驟 7。 將 Azure IoT Edge 裝置的根 CA 憑證提供給 Azure Sphere 裝置。
步驟 1: 建立 Azure IoT Edge 裝置
如果您尚未這麼做,您必須設定 Azure IoT Edge 裝置,並將其註冊 Azure IoT 中樞。
您可以使用裝置布建服務 (DPS) 來布建 Azure IoT Edge 裝置。 不過,您無法使用 DPS 來布建 Azure Sphere 裝置。 不支援使用 Azure IoT 中樞 DPS 自動布建 Azure IoT Edge 裝置下游的裝置。
您可以遵循IoT Edge快速入門中的步驟,設定在Linux VM或 Windows 裝置上執行的 Azure IoT Edge 裝置,並將其註冊至 Azure IoT 中樞。
使用快速入門中的步驟來:
- 將 Azure IoT Edge 裝置註冊到您的 Azure IoT 中樞 實例。 請勿在此步驟中建立新的IoT中樞,只要將 Azure IoT Edge 裝置註冊到您已建立的IoT中樞。
- 在 Azure IoT Edge 裝置上安裝並啟動 Azure IoT Edge 運行時間。
注意
在IoT Edge快速入門中,在部署模組之前先停止。
步驟 2。 將 IoT Edge 閘道裝置設定為伺服器
請依照指示設定 Azure IoT Edge 裝置作為透明閘道 (Azure IoT Edge 1.2) 或 Azure IoT Edge 1.1,但在您到達「在閘道裝置上開啟埠」一節時停止。雖然這些指示會告訴您將憑證檔案複製到 IoT Edge 裝置,但在此程式的步驟 8 之前,請勿將檔案複製到您的 VM。
在完成將裝置閘道設定為伺服器的步驟中,您已經具備:
- 已設定 Azure IoT Edge 裝置憑證。
- 已部署 Azure IoT Edge 中樞模組。
- 透過 Azure IoT Edge 設定訊息路由。
此外,在這些步驟中,您也會建立這些憑證:
- 根 CA 憑證:
certs/azure-iot-test-only.root.ca.cert.pem
- 裝置 CA 憑證和私鑰(用來向 IoT 中樞 註冊 IoT Edge 裝置):
certs/iot-edge-device-identity-<cert-name>-full-chain.cert.pem
private/iot-edge-device-identity-<cert-name>.key.pem
- IoT Edge CA 憑證和私鑰(要複製到 IoT Edge 裝置並在其組態檔中參考):
certs/iot-edge-device-ca-<cert-name>-full-chain.cert.pem
private/iot-edge-device-ca-<cert-name>.key.pem
如果您遵循快速入門,請在產生憑證的計算機上是以Linux為基礎的計算機時,使用Linux指示來設定示範憑證。 如果您要產生憑證的計算機是 Windows 計算機,請使用 Windows 指示來產生示範憑證。 請參閱將跟證書複製到 Linux VM 或本機 Windows 電腦一節。
Azure IoT Edge 根 CA 憑證將在步驟 7 中修改,但您需要步驟 8 中的原始憑證。 保留原始憑證的複本,以便重複使用它。
注意
更新 config.toml (Azure IoT Edge 1.2) 或 config.yaml (Azure IoT Edge 1.1) 檔案的憑證區段時,請確定 certificates:
config.toml (Azure IoT Edge 1.2) 或 config.yaml (Azure IoT Edge 1.1) 中的行沒有先前的空格,且每個巢狀憑證都由兩個空格縮排。
更新檔案之後,請確認 edgehub 模組正在您的 Azure IoT Edge 裝置上執行:
sudo iotedge list
如需詳細資訊,請參閱 如何使用 IoT Edge 裝置作為閘道 (Azure IoT Edge 1.2) 或 Azure IoT Edge 1.1。
如果您使用測試憑證,請在產生下游裝置憑證之前停止,如建立下游裝置憑證 (Azure IoT Edge 1.2) 或 Azure IoT Edge 1.1 中所述。
步驟 3: 開啟 Azure IoT Edge 閘道裝置埠以進行通訊
閘道裝置必須能夠接收來自其下游裝置的訊息。 若要讓閘道案例能夠運作,至少必須開啟其中一個IoT中樞支持的通訊協定,才能從下游裝置輸入流量。
Azure Sphere 使用通訊協定 MQTT。 此通訊協定會使用埠 8883。
如需詳細資訊,請參閱 在閘道裝置上開啟埠 (Azure IoT Edge 1.2) 或 Azure IoT Edge 1.1。
遵循下列步驟,在快速入門中設定Edge裝置之後,在Windows VM上開啟埠8883:
- 如有必要,請使用您的 Azure 帳戶登入您的 Azure 入口網站。
- 流覽至您在步驟 1:建立 Azure IoT Edge 裝置一節中建立的虛擬機。
- 在左側的 [設定] 區段中,選取 [網络],然後選取 [新增輸入埠規則]。
- 在 [新增輸入埠規則] 刀鋒視窗中,於 [目的地埠範圍] 底下,將值變更為 8883。
- 在 [通訊協定] 底下,選取 [TCP]。
- 在 [名稱] 底下,將值變更為 MQTT。
- 將所有其他設定保留為預設值,然後選取 [ 新增]。
遵循下列步驟,在快速入門中設定 Azure IoT Edge 裝置之後,在 Linux VM 上開啟埠 8883:
執行下列命令來檢查 MQTT 的埠是否已開啟:
sudo netstat -lptu
如有必要,請使用下列命令來開啟埠:
sudo ufw allow 8883
這會定義輸入安全性規則,以允許 MQTT 通訊協定與 Azure IoT Edge 閘道的通訊。
步驟 4. 更新閘道主機名
此步驟會根據您使用的 Azure IoT Edge 版本使用不同的程式: Azure IoT Edge 1.2 或 Azure IoT Edge 1.1。
Azure IoT Edge 1.2:在 config.toml 中更新網關主機名
Azure IoT Edge 運行時間支援少於 64 個字元的主機名。 實體機器通常沒有很長的主機名,但如果您使用虛擬機作為 Azure IoT Edge 裝置,就像快速入門中的範例一樣,您必須手動設定主機名。
若要針對無效的主機名進行疑難解答,請參閱 常見的錯誤解決方式。
遵循下列步驟,在快速入門中設定 MQTT 埠之後,設定 Azure IoT Edge 裝置主機名:
在 Azure 入口網站中流覽至 IoT Edge 裝置 (Linux VM),並從 [概觀] 頁面複製 DNS 名稱的值,以尋找 IoT Edge 閘道的完整功能變數名稱 (FQDN)。
如有必要,請登入 Azure IoT Edge 裝置。
在文字編輯器中開啟 config.toml 檔案。
/etc/aziot/config.toml
將 FQDN 貼到 config.toml 的主機名區段中。 請確定名稱全都是小寫。
hostname: "<iotedge_machinename>.<mydomain>"
注意
根據 Azure IoT Edge v1.2 和更新版本的設計, 主機名 必須是 FQDN 名稱(IP 位址不再允許,如 v1.1 所示):因此,在相同網路上具有適當 A 記錄的 DNS 伺服器是必要的。
重新啟動
iotedge
精靈。sudo systemctl restart iotedge
如果您在狀態中看到錯誤 (前面加上 "[ERROR]" 的彩色文字),請檢查精靈記錄檔以取得詳細的錯誤資訊。
sudo journalctl -u iotedge --no-pager --no-full
若要避免警告,請在 Azure IoT Edge 裝置上設定模組的 DNS 組態,以在 /etc/docker/daemon.json 包含組態檔,例如:
{ "dns": ["<IP address of your DNS server>"] }
Azure IoT Edge 1.1:在 config.yaml 中更新網關主機名
Azure IoT Edge 運行時間支援少於 64 個字元的主機名。 實體機器通常沒有很長的主機名,但如果您使用虛擬機作為 Azure IoT Edge 裝置,就像快速入門中的範例一樣,您必須手動設定主機名。
若要針對無效的主機名進行疑難解答,請參閱 常見的錯誤解決方式。
遵循下列步驟,在快速入門中設定 MQTT 埠之後,設定 Azure IoT Edge 裝置主機名:
在 Azure 入口網站 中,流覽至您的虛擬機。 從 [概觀] 區段複製 DNS 名稱 (FQDN) 的值。
如有必要,請登入 Azure IoT Edge 裝置。
在 文本編輯器中開啟 config.yaml 檔案。
/etc/iotedge/config.yaml
將 FQDN 貼到 config.yaml 的主機名區段中。 請確定名稱全都是小寫。
`hostname: "<machinename>.<region>.cloudapp.azure.com"`
注意
如果 DNS 解析程式位於網路上,您可能必須使用主機名的裸機名稱(IP 位址或實際主機名),因為 Azure Sphere 不支援 netbios。
重新啟動
iotedge
精靈。sudo systemctl restart iotedge
如果您在狀態中看到錯誤 (前面加上 "[ERROR]" 的彩色文字),請檢查精靈記錄檔以取得詳細的錯誤資訊。
sudo journalctl -u iotedge --no-pager --no-full
若要避免警告,請在 Azure IoT Edge 裝置上設定模組的 DNS 組態,以在 /etc/docker/daemon.json 包含組態檔,例如:
{ "dns": ["<IP address of your DNS server>"] }
步驟 5: 將 Azure IoT Edge 裝置設定為 Azure Sphere 裝置的父系
請遵循下列步驟,將 Azure IoT Edge 裝置設定為 Azure Sphere 裝置的父系:
- 流覽至上面手動布建的 Azure Sphere 裝置。
- 選取 [ 裝置標識符]。
- 選取 [沒有父裝置] 底下的齒輪圖示。
- 選取您想要設定為父系的 Azure IoT Edge 裝置。
- 選取 [確定],然後選取 [儲存]。
Azure IoT Edge 裝置現在會成為 Azure Sphere 裝置的父系。
步驟 6。 將 Azure Sphere 裝置的租使用者 CA 憑證提供給 IoT Edge 裝置
若要驗證 Azure Sphere 裝置憑證,Azure IoT Edge 裝置必須有自己的租使用者 CA 複本。
如果您尚未這麼做,請下載租使用者 CA 憑證。 注意:您應該已在設定 Azure IoT 中樞 時完成此作業。
從命令提示字元,使用您的 Azure Sphere 登入登入:
azsphere login
下載 Azure Sphere 租使用者的 CA 憑證。 此命令會將憑證下載至目前工作目錄中名為 CAcertificate.cer 的檔案。 請確定您將檔案下載到您具有寫入許可權的目錄,否則下載作業將會失敗。 輸出檔案必須具有.cer擴展名。
azsphere ca-certificate download --destination CAcertificate.cer
將租使用者 CA 憑證轉換為 PEM 格式。 在 Windows 電腦上轉換格式的範例指示如下:
- 找出您電腦上的憑證路徑,然後按兩下憑證以開啟它。
- 開啟 [詳細數據] 索引標籤,然後選取 [複製到檔案]。
- 在 [ 憑證導出 精靈] 中,選取 [ 下一步]。
- 選取Base-64編碼 X.509 (CER) 格式,然後選取 [ 下一步]。
- 輸入要匯出之憑證的檔名,然後選取 [ 下一步]。
- 若要完成精靈,請選取 [完成]。
- 將下載的憑證檔案重新命名為擴展名為 .pem。
將租用戶憑證附加至 Azure IoT Edge 跟證書。 請記住,您已在步驟 2 中建立 Azure IoT Edge 憑證。
- 如有必要,請登入 Azure IoT Edge 裝置。
- 找出 IoT Edge 裝置根 CA 憑證的路徑,並在文本編輯器中開啟它。 如果您遵循快速入門,然後使用 Azure IoT Edge Git 存放庫中提供的腳本來建立示範憑證,則根 CA 憑證會命名為 azure-iot-test-only.root.ca.cert.pem。
- 在文本編輯器中開啟 Azure Sphere 租使用者 CA 憑證(PEM 格式)。 複製內容,並將其貼到IoT Edge根CA憑證的結尾。
- 儲存對 Azure IoT Edge 根 CA 憑證所做的變更,然後關閉檔案。
- 重新啟動 Azure IoT Edge 裝置。 針對 Linux Azure IoT Edge 裝置,請執行:
sudo systemctl restart iotedge
。 - 確認模組正在您的 Azure IoT Edge 裝置上執行。 針對 Linux Azure IoT Edge 裝置,請執行:
sudo iotedge list
。
步驟 7。 將 Azure IoT Edge 裝置的根 CA 憑證提供給 Azure Sphere 裝置
若要驗證 Azure IoT Edge 裝置憑證,Azure Sphere 裝置(下游裝置)必須有自己的 Azure IoT Edge 裝置跟 CA 憑證複本,您在步驟 2 中設定。
如需詳細資訊,請參閱 將下游裝置連線到 Azure IoT Edge 閘道。
找出原始的 Azure IoT Edge 裝置跟證書。
- 請記住,原始的 Azure IoT Edge 裝置跟證書是您在步驟 2 中建立的跟證書。
- 如果您遵循快速入門,然後使用 IoT Edge Git 存放庫中提供的腳本來建立示範憑證,則根 CA 憑證稱為 azure-iot-test-only.root.ca.cert.pem。
將 Azure IoT Edge 跟證書新增至應用程式套件,將它複製到 Azure Sphere 裝置。
步驟 8。 將 IoT 跟證書複製到遠端電腦
請遵循下列步驟,將 Azure IoT Edge 跟證書複製到遠端 Linux VM 或本機 Windows 電腦:
您可以安裝 WinSCP 工具來 傳輸檔案。 此工具提供 GUI,因此比命令行方法更容易使用。
若要使用命令行,請使用SCP(安全複製) 命令行工具。
若要將檔案從本機 Windows 計算機傳輸到遠端 Linux VM,請在 Windows PowerShell 中執行下列命令:
powershell -Command scp -r <path-to-file-name> <userName@remote-ip>:<path-to-destination-directory>
範例語法:
scp C:\Documents\cert.pem AzureUser@edgevmname-west.westus22.cloudapp.azure.com:/home/azureUser/test/
若要將檔案從遠端 Linux VM 傳輸到本機 Windows 計算機,請在 Windows PowerShell 中執行下列命令:
powershell -Command scp -r <userName@remote-ip>:<path-to-file-name> <path-to-destination-dir>
範例語法:
scp azureUser@edgevmname-west.westus22.cloudapp.azure.com:/home/azureUser/test/cert.pem C:\Documents\
疑難排解
如果您在環境中執行 Azure IoT Edge 時遇到問題,請使用下列文章進行疑難解答和診斷:
針對 IoT Edge 裝置 (Azure IoT Edge 1.2) 或 Azure IoT Edge 1.1 進行疑難解答
Azure IoT Edge (Azure IoT Edge 1.2) 或 Azure IoT Edge 1.1 的常見問題和解決方法
下一步
- 完成本主題中的步驟之後,您可以執行 Azure IoT 範例,並遵循使用 Azure IoT Edge 進行連線的指示。