分享方式:


IoT 中樞端點

Azure IoT 中樞會公開各種端點,以支援與其互動的裝置和服務。

注意

本文中提及的某些功能 (例如雲端對裝置傳訊、裝置對應項和裝置管理) 僅適用於 IoT 中樞的標準層。 如需有關基本和標準/免費 Azure IoT 中樞階層的詳細資訊,請參閱為您的解決方案選擇適合的 Azure IoT 中樞階層

IoT 中樞名稱

您可以在 Azure 入口網站中的 IoT 中樞 [概觀] 工作窗格上,找到 IoT 中樞的主機名稱。 根據預設,IoT 中樞的 DNS 名稱看起來會類似下列範例:

{your iot hub name}.azure-devices.net

用於開發和管理的 IoT 中樞端點

Azure IoT 中樞是一項多租用戶服務,可將其功能公開給各個執行者。 下圖顯示 IoT 中樞公開的各種端點。

顯示內建 IoT 中樞 端點清單的圖表。

下列清單說明這些端點:

  • 資源提供者Azure Resource Manager 介面。 此介面可讓 Azure 訂用帳戶擁有者建立和刪除 IoT 中樞,以及更新 IoT 中樞屬性。 IoT 中樞屬性用來管理中樞層級的共用存取原則 (相對於裝置層級的存取控制) 和雲端到裝置與裝置到雲端傳訊的功能選項。 IoT 中樞資源提供者也可讓您匯出裝置身分識別

  • 裝置識別碼管理: 一組 HTTPS REST 端點,用來管理裝置身分識別 (建立、擷取、更新和刪除)。 裝置身分識別用於裝置驗證和存取控制。

  • 裝置對應項管理: 一組服務面相的 HTTPS REST 端點,用來查詢和更新裝置對應項 (更新標籤和屬性)。

  • 作業管理: 一組服務面向的 HTTPS REST 端點,用來查詢和管理作業

  • 裝置端點: 身分識別登錄中每個裝置的一組端點。 公開這些端點時,是使用 MQTT v3.1.1、HTTPS 1.1 及 AMQP 1.0 通訊協定來公開 (除非另有標示)。 您也可以透過連接埠 443 上的 WebSockets 取得 AMQP 和 MQTT。 這些裝置端點包括:

    • 傳送裝置到雲端的訊息

    • 接收雲端到裝置的訊息

    • 起始檔案上傳

    • 擷取和更新裝置對應項的屬性 (不支援 HTTPS)

    • 接收直接方法要求 (不支援 HTTPS)

  • 服務端點: 一組端點,讓您的解決方案後端用以與裝置通訊。 但有一個例外狀況,這些端點只會使用 AMQP 和透過 WebSockets 的 AMQP 通訊協定來公開。 方直接法引動過程端點會透過 HTTPS 通訊協定來公開。

    • 接收裝置到雲端訊息: 此端點是訊息路由概念中討論的內建端點。 後端服務可用它來讀取由您的裝置所傳送的裝置到雲端訊息。 除了這個內建端點外,您可以在 IoT 中樞上建立自訂端點。

    • 傳送雲端到裝置的訊息及接收傳遞通知

    • 接收檔案上傳通知

    • 叫用直接方法

Azure IoT 中樞 SDK 一文說明您可用來存取這些端點的各種方式。

所有的 IoT 中樞端點都使用 TLS 通訊協定,且絕不會在未加密/不安全的通道上公開任何端點。

重要

在使用 X.509 憑證授權單位 (CA) 驗證的裝置上,下列功能尚未正式推出,務必啟用預覽模式

  • HTTPS、透過 WebSocket 的 MQTT,以及透過 WebSocket 的 AMQP 通訊協定。
  • 檔案上傳 (所有通訊協定)。

這些功能已在使用 X.509 指紋驗證的裝置上正式推出。 若要深入了解使用 IoT 中樞的 X.509 驗證,請參閱支援的 X.509 憑證

訊息路由的自訂端點

您可以將 Azure 訂用帳戶中的現有 Azure 服務連結至 IoT 中樞,以便作為訊息路由傳送的端點。 這些端點可做為服務端點,並當作訊息路由的接收器。 裝置無法直接寫入這些端點。 如需訊息路由的詳細資訊,請參閱使用 IoT 中樞訊息路由將裝置到雲端的訊息傳送至不同的端點

IoT 中樞目前支援下列 Azure 服務做為自訂端點:

  • 儲存體容器
  • 事件中樞
  • 服務匯流排佇列
  • 服務匯流排主題
  • Cosmos DB

如需每個中樞端點的限制,請參閱配額和節流

內建端點

您可以使用標準事件中樞整合和 SDK 接收內建端點 (訊息/事件) 的裝置到雲端訊息。 除非建立通向該端點的路由,否則在建立路由後,資料會停止流向內建端點。 即使未建立路由,也必須啟用後援路由,才能將訊息路由至內建端點。 如果您使用入口網站或 CLI 建立中樞,則會預設啟用後援。

Azure 儲存體做為路由端點

有兩個儲存體服務 IoT 中樞可以將訊息路由傳送至:Azure Blob 儲存體Azure Data Lake Storage Gen2 (ADLS Gen2) 帳戶。 這兩者都會使用 Blob 作為儲存體。

IoT 中樞支援以 Apache Avro 格式和 JSON 格式將資料寫入 Azure 儲存體。 預設值為 AVRP。 若要使用 JSON 編碼,請在訊息系統屬性中將 contentType 設定為 application/json,並將 contentEncoding 設定為 UTF-8。 這兩個值不區分大小寫。 如果未設定內容編碼,則 IoT 中樞將會以 Base 64 編碼格式寫入訊息。

只有在設定了 Blob 儲存體端點時,才能設定編碼格式;您無法編輯現有端點的編碼格式。

IoT 中樞會批次處理訊息,然後在批次達到特定大小或經過一段特定時間之後,就將資料寫入儲存體。 「IoT 中樞」預設會採用下列檔案命名慣例: {iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}

您可以使用任何檔案命名慣例,但必須使用所有列出的語彙基元。 如果沒有資料可供寫入,IoT 中樞會寫入空的 Blob。

我們建議列出 Blob 或檔案,然後加以逐一查看,以確保所有 Blob 或檔案都受到讀取,而不需進行任何分割假設。 分割範圍可能會在 Microsoft 起始的容錯移轉或 IoT 中樞手動容錯移轉期間變更。 您可使用列出 Blob API 來列舉 Blob 清單,或使用列出 ADLS Gen2 API 來列舉檔案清單。 例如:

public void ListBlobsInContainer(string containerName, string iothub)
{
    var storageAccount = CloudStorageAccount.Parse(this.blobConnectionString);
    var cloudBlobContainer = storageAccount.CreateCloudBlobClient().GetContainerReference(containerName);
    if (cloudBlobContainer.Exists())
    {
        var results = cloudBlobContainer.ListBlobs(prefix: $"{iothub}/");
        foreach (IListBlobItem item in results)
        {
            Console.WriteLine(item.Uri);
        }
    }
}

若要建立與 Azure Data Lake Gen2 相容的儲存體帳戶,請建立新的 V2 儲存體帳戶,然後在 [進階] 索引標籤的 [Data Lake Storage Gen2] 區段上選取 [啟用階層命名空間],如下圖所示:

顯示如何選取 Azure Date Lake Gen2 記憶體的螢幕快照。

將服務匯流排佇列和服務匯流排主題作為路由端點

做為 IoT 中樞端點的服務匯流排佇列和主題不能啟用 [工作階段] 或 [重複偵測]。 如果已啟用其中一個選項,端點會在 Azure 入口網站中顯示為 [無法連線]

做為路由端點的事件中樞

除了內建事件中樞相容端點之外,您也可以將資料傳送至事件中樞類型的自訂端點。

Azure Cosmos DB 作為路由端點

您可以從 IoT 中樞將資料直接傳送至 Azure Cosmos DB。 IoT 中樞支援以 JSON (如果在訊息內容類型中指定) 或 Base 64 編碼二進位形式寫入 Cosmos DB。

若要支持大規模案例,您可以為 Cosmos DB 端點啟用 綜合分割區索引鍵。 因為 Cosmos DB 是超大規模資料存放區,所以寫入其中的所有資料/文件都必須包含代表邏輯分割區的欄位。 每個邏輯分割區的大小上限為 20 GB。 您可以在分割區索引鍵名稱中指定分割區索引鍵屬性名稱。 分割區索引鍵屬性名稱是在容器層級所定義,一旦設定之後就無法變更。

您可以根據預估的資料量,在分割區索引鍵範本中指定範本,以設定綜合分割區索引鍵值。 例如,在製造業案例中,您的邏輯分割區可能會在一個月內接近其 20 GB 的最大限制。 在此情況下,您可以將綜合分割區索引鍵定義為裝置識別碼和月份的組合。 所產生的索引鍵值將自動新增至每個新 Cosmos DB 記錄的分割區索引鍵屬性,以確保每個裝置每個月都會建立邏輯分割區。

警告

如果您使用系統指派的受控識別來驗證 Cosmos DB,您必須使用 Azure CLI 或 Azure PowerShell 將 Cosmos DB 內建資料參與者內建角色定義指派給身分識別。 Azure 入口網站目前不支援 Cosmos DB 的角色指派。 如需各種角色的詳細資料,請參閱為 Azure Cosmos DB 設定角色型存取。 若要了解如何透過 CLI 指派角色,請參閱管理 Azure Cosmos DB SQL 角色資源。

端點健康情況

您可以使用 REST API Get Endpoint Health 來取得端點的健全狀態。 當端點無法使用或狀況不良時,我們建議使用與路由訊息延遲相關的 IoT 中樞路由計量來識別和偵錯錯誤,因為當端點處於這其中一種狀態時,延遲會更高。 若要深入了解如何使用 IoT 中樞計量,請參閱監視 IoT 中樞

健全狀態 描述
healthy 端點會如預期般接受訊息。
狀況不良 端點不接受訊息,且 IoT 中樞會重試將訊息傳送至此端點。
未知 IoT 中樞未嘗試將訊息傳遞至此端點。
降級 端點接受的訊息速度比預期慢,或正在從狀況不良的狀態復原。
無法使用 IoT 中樞不再將訊息傳遞至此端點。 重試將訊息傳送至此端點失敗。

下一步

深入了解這些主題: