共用方式為


使用 Azure 入口網站設定 IoT 中樞檔案上傳

在你的物聯網中樞設定檔案上傳,讓你連接的裝置能將檔案上傳到 Azure 儲存帳號。 本文將示範如何使用 Azure 入口網站、Azure CLI 和 Azure PowerShell 在物聯網中樞設定檔案上傳。

若要使用 IoT 中樞的檔案上傳功能,您必須先將 Azure 儲存體帳戶和 blob 容器與您的 IoT 中樞建立關聯。 IoT 中樞會自動產生具有此 Blob 容器寫入權限的 SAS URI,以供裝置上傳檔案時使用。 除了儲存體帳戶和 blob 容器之外,您還可設定 SAS URI 的存留時間,以及 IoT 中樞搭配 Azure 儲存體使用的驗證類型。 您也可設定選擇性檔案上傳通知的設定,讓 IoT 中樞可傳遞至後端服務。

先決條件

  • 使用中的 Azure 帳戶。 如果您沒有帳戶,只需要幾分鐘的時間就可以建立 免費帳戶

  • 您的 Azure 訂用帳戶中的 IoT 中樞。 如果您還沒有中樞,可遵循建立 IoT 中樞中的步驟。

在 Azure 入口網站設定你的物聯網中樞

  1. Azure 入口網站中,瀏覽至 IoT 中樞,並選取 [檔案上傳] 以顯示檔案上傳屬性。 接著選取 [儲存體容器設定] 下的 [Azure 儲存體容器]

    此螢幕擷取畫面顯示如何在入口網站中設定檔案上傳設定。

  2. 選取 Azure 儲存體帳戶和目前訂用帳戶中的 blob 容器,以建立與 IoT 中樞的關聯。 視需要,您可在 [儲存體帳戶] 窗格上建立 Azure 儲存體帳戶,並在 [容器] 窗格上建立 Blob 容器。

    此螢幕擷取畫面顯示如何檢視用於檔案上傳的儲存體容器。

  3. 在選取 Azure 儲存體帳戶和 blob 容器後,設定檔案上傳屬性的其餘部分。

    • 接收已上傳檔案的通知︰透過切換來啟用或停用檔案上傳通知。

    • SAS TTL︰這個設定是「IoT 中樞」傳回給裝置之 SAS URI 的存留時間。 預設為 1 小時,但可以使用滑桿來自訂成其他值。

    • 檔案通知設定預設 TTL:檔案上傳通知到期前的存留時間。 預設為 1 天,但可以使用滑桿來自訂成其他值。

    • 檔案通知最大傳遞計數︰IoT 中樞可嘗試傳遞檔案上傳通知的次數。 預設為 10,但可以使用滑桿來自訂成其他值。

    • 驗證類型:依預設,Azure IoT 中樞會使用以金鑰為基礎的驗證,以連結和授權 Azure 儲存體。 您也可設定使用者指派或系統指派的受控識別,以驗證 Azure IoT 中樞的 Azure 儲存體。 受控識別會透過安全的方式,將 Microsoft Entra ID 中的自動受控識別提供給 Azure 服務。 若要了解如何設定受控識別,請參閱受控識別的 IoT 中樞支援。 已在 Azure 儲存體帳戶和 IoT 中樞上設定一或多個受控識別後,您可使用系統指派使用者指派按鈕,選取其中一個來進行 Azure 儲存體驗證。

      附註

      驗證類型設定可設定 IoT 中樞驗證 Azure 儲存體帳戶的方式。 裝置一律會使用從 IoT 中樞取得的 SAS URI 來驗證 Azure 儲存體。

  4. 選取 [儲存] 以儲存您的設定。 請務必檢查確認已成功完成。 某些選項 (如 驗證類型) 只會在儲存設定後才會進行驗證。

先決條件

  • 使用中的 Azure 帳戶。 如果您沒有帳戶,只需要幾分鐘的時間就可以建立 免費帳戶

  • 您的 Azure 訂用帳戶中的 IoT 中樞。 如果您還沒有中樞,可遵循建立 IoT 中樞中的步驟。

  • 一個帶有 blob 容器的 Azure Storage 帳號。 如果你沒有 Azure Storage 帳號,可以用 Azure CLI 建立一個。 如需詳細資訊,請參閱建立儲存體帳戶

登入並設定你的 Azure 帳號

登入您的 Azure 帳戶並選取您的訂用帳戶。 如果你正在使用 Azure Cloud Shell,應該已經登入了;不過,如果你有多個訂閱,可能還是需要選擇 Azure 訂閱。

  1. 在命令提示字元執行登入 指令

    az login
    

    依照指示使用程式碼進行驗證,並透過網頁瀏覽器登入 Azure 帳戶。

  2. 如果您有多個 Azure 訂用帳戶,則登入 Azure 會授予您所有與認證相關聯之 Azure 帳戶的存取權。 使用下列命令列出 Azure 帳戶 \(英文\) 以供您使用:

    az account list
    

    請使用以下指令選擇你想使用的訂閱,以執行建立物聯網中樞的指令。 您可以使用來自上一個命令之輸出內的訂用帳戶名稱或識別碼:

    az account set --subscription {your subscription name or id}
    

設定儲存體帳戶存取權

以下步驟假設你是使用 Resource Manager 部署模型建立儲存帳號,而非 經典 部署模型。

要設定裝置上傳檔案,你需要將物聯網中樞的存取權限授予 Azure Storage 帳號。 儲存帳號必須與你的物聯網中樞同屬一個訂閱。 你還需要存儲帳戶中 Blob 容器的名稱。

你可以使用基於金鑰或身份的認證來提供存取權限。 Microsoft 建議採用基於身份的認證作為更安全的選擇。

金鑰型驗證

針對基於金鑰的驗證,請提供你的儲存帳號的連線字串。 使用 az storage account 的 show-connection-string 指令來取得你的儲存帳號金鑰。

記下 connectionString 的值。 連接字串看起來與以下輸出相似:

{
  "connectionString": "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName={your_storage_account_name};AccountKey={your_storage_account_key}"
}

以身分識別為基礎的驗證

你可以使用系統指派的受管理身份或使用者指派的受管理身份來進行基於身份的認證。 欲了解更多資訊,請參閱 IoT Hub 對受管理身份的支援

使用 az 角色指派建立 命令,將角色指派到你的管理身份。 如需詳細資訊,請參閱 指派 Azure 角色以存取 Blob 數據

設定 IoT 中樞

你現在可以設定物聯網中樞,以使用您的儲存帳號資訊啟用檔案上傳到物聯網中樞的功能。

配置需要以下數值:

  • 儲存體容器︰您目前 Azure 訂用帳戶內 Azure 儲存體帳戶中的 blob 容器,會與您的 IoT 中樞產生關聯。 你在前一節取得了必要的儲存帳戶資訊。 IoT 中樞會自動產生具有此 Blob 容器寫入權限的 SAS URI,以供裝置上傳檔案時使用。

  • 接收上傳檔案通知:啟用或停用檔案上傳通知。

  • SAS TTL︰這個設定是「IoT 中樞」傳回給裝置之 SAS URI 的存留時間。 預設設定為一小時。

  • 檔案通知設定預設 TTL:檔案上傳通知到期前的存續時間。 預設是一天。

  • 檔案通知最大傳遞計數︰IoT 中樞可嘗試傳遞檔案上傳通知的次數。 預設設為 10。

  • 檔案通知鎖定時間:檔案通知佇列的鎖定時間。 預設為 60 秒。

  • 認證類型:IoT Hub 用於 Azure Storage 的認證類型。 此設定決定了你的物聯網中樞如何與 Azure Storage 進行認證與授權。 預設為基於金鑰的認證;不過,建議採用系統指派或使用者指派的管理身份驗證選項。 受控識別會透過安全的方式,將 Microsoft Entra ID 中的自動受控識別提供給 Azure 服務。

    附註

    驗證類型設定可設定 IoT 中樞驗證 Azure 儲存體帳戶的方式。 裝置一律會使用從 IoT 中樞取得的 SAS URI 來驗證 Azure 儲存體。

以下指令說明如何在你的物聯網中樞設定檔案上傳設定。 這些指令會分別顯示以便清楚,但通常你會發出一個包含所有必要參數的指令。 包含其在命令列中顯示位置的引號。 不要把牙套算進去。 關於每個參數的更多細節,可以在 Azure CLI 文件中針對 az iot hub update 指令找到。

以下指令用來設定儲存帳號和 blob 容器。

az iot hub update --name {your iot hub name} \
    --fileupload-storage-connectionstring "{your storage account connection string}" \
    --fileupload-storage-container-name "{your container name}" 

以下指令將 SAS URI 的存活時間設為預設值(一小時)。

az iot hub update --name {your iot hub name} \
    --fileupload-sas-ttl 1 

以下指令啟用檔案通知,並將檔案通知屬性設定為預設值。 (檔案上傳通知上線時間設為一小時,鎖定時間設為 60 秒。)

az iot hub update --name {your iot hub name} \
    --fileupload-notifications true  \
    --fileupload-notification-max-delivery-count 10 \
    --fileupload-notification-ttl 1 \
    --fileupload-notification-lock-duration 60

以下指令用於配置基於金鑰的認證:

az iot hub update --name {your iot hub name} \
    --fileupload-storage-auth-type keyBased

以下指令是利用物聯網樞紐系統指派的管理身份來設定認證。 在執行此指令之前,你需要啟用系統指派的物聯網中樞管理身份,並在你的 Azure Storage 帳號上賦予正確的基於角色的存取控制角色。 想了解如何設定,請參閱 IoT Hub 對受管理身份的支援

az iot hub update --name {your iot hub name} \
    --fileupload-storage-auth-type identityBased \
    --fileupload-storage-identity [system] 

以下指令可取得您在 IoT 中樞中設定的使用者指派管理身分識別,並設定其中一個以進行身份驗證。 在您可以使用使用者指派的受控身分進行驗證之前,必須先在您的 IoT 中樞上進行設定,並在您的 Azure Storage 帳戶上獲得適當的角色型存取控制角色。 欲了解更多細節與步驟,請參閱 IoT Hub 對受管理身份的支援

若要查詢 IoT 集線器上使用者指派的受管理身份,請使用 az iot hub identity show 指令。

az iot hub identity show --name {your iot hub name} --query userAssignedIdentities

該指令會回傳一組由使用者指派的管理身份,這些身份已設定在您的物聯網中樞上。 以下輸出顯示一個包含單一使用者指派管理身份的集合。

{
  "/subscriptions/{your subscription ID}/resourcegroups/{your resource group}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{your user-assigned managed identity name}": 
  {
    "clientId": "<client ID GUID>",
    "principalId": "<principal ID GUID>"
  }
}

以下指令將驗證設定為使用上述使用者指派的身份。

az iot hub update --name {your iot hub name} \
    --fileupload-storage-auth-type identityBased \
    --fileupload-storage-identity  "/subscriptions/{your subscription ID}/resourcegroups/{your resource group}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{your user-assigned managed identity name}"

你可以使用以下指令檢視物聯網中樞的設定:

az iot hub show --name {your iot hub name}

若要只查看檔案上傳設定,請使用以下指令:

az iot hub show --name {your iot hub name}
    --query '[properties.storageEndpoints, properties.enableFileUploadNotifications, properties.messagingEndpoints.fileNotifications]'

在大多數情況下,使用 Azure CLI 指令中的命名參數是最簡單的;不過,你也可以用參數 --set 來設定檔案上傳設定。 以下指令可以幫助你了解如何做到。

az iot hub update --name {your iot hub name} \
  --set properties.storageEndpoints.'$default'.connectionString="{your storage account connection string}"

az iot hub update --name {your iot hub name} \
  --set properties.storageEndpoints.'$default'.containerName="{your storage container name}"

az iot hub update --name {your iot hub name} \
  --set properties.storageEndpoints.'$default'.sasTtlAsIso8601=PT1H0M0S

az iot hub update --name {your iot hub name} \
  --set properties.enableFileUploadNotifications=true

az iot hub update --name {your iot hub name} \
  --set properties.messagingEndpoints.fileNotifications.maxDeliveryCount=10

az iot hub update --name {your iot hub name} \
  --set properties.messagingEndpoints.fileNotifications.ttlAsIso8601=PT1H0M0S

先決條件

登入並設定你的 Azure 帳號

登入您的 Azure 帳戶並選取您的訂用帳戶。 如果你正在使用 Azure Cloud Shell,應該已經登入了;不過,如果你有多個訂閱,可能還是需要選擇 Azure 訂閱。

  1. 在 PowerShell 提示字元處,執行 Connect-AzAccount cmdlet:

    Connect-AzAccount
    
  2. 如果你有多個 Azure 訂閱,登入 Azure 就能存取與你憑證相關的所有 Azure 訂閱。 請使用 Get-AzSubscription 指令列出可供使用的 Azure 訂閱:

    Get-AzSubscription
    

    請使用以下指令選擇你想使用的訂閱,以執行管理物聯網中樞的指令。 您可以使用來自上一個命令之輸出內的訂用帳戶名稱或識別碼:

    Select-AzSubscription `
        -Name "{your subscription name}"
    

    附註

    Select-AzSubscription 指令是 Select-AzContext 的別名,允許你使用 Get-AzSubscription 指令回傳的訂閱名稱(Name)或訂閱 ID(ID),而非 Select-AzContext 命令所需的更複雜的上下文名稱。

取得您的儲存帳戶資料

以下步驟假設你是使用 Resource Manager 部署模型建立儲存帳號,而非 經典 部署模型。

要設定從裝置上傳檔案,你需要 Azure 儲存帳號的連線字串。 儲存帳號必須與你的物聯網中樞同屬一個訂閱。 你還需要存儲帳戶中 Blob 容器的名稱。 請使用 Get-AzStorageAccountKey 指令來取得您的儲存帳戶金鑰:

Get-AzStorageAccountKey `
  -Name {your storage account name} `
  -ResourceGroupName {your storage account resource group}

記錄 key1 儲存帳戶的鍵值。 您需要在後續步驟中用到此值。

你可以選擇使用現有的 blob 容器來上傳檔案,或是建立新的:

  • 要列出你儲存帳號中現有的 blob 容器,請使用 New-AzStorageContextGet-AzStorageContainer 指令:

    $ctx = New-AzStorageContext `
        -StorageAccountName {your storage account name} `
        -StorageAccountKey {your storage account key}
    Get-AzStorageContainer -Context $ctx
    
  • 要在你的儲存帳號建立 blob 容器,請使用 New-AzStorageContextNew-AzStorageContainer 指令:

    $ctx = New-AzStorageContext `
        -StorageAccountName {your storage account name} `
        -StorageAccountKey {your storage account key}
    New-AzStorageContainer `
        -Name {your new container name} `
        -Permission Off `
        -Context $ctx
    

設定 IoT 中樞

你現在可以設定你的物聯網中樞,利用你的儲存帳號資料將 檔案上傳到中樞

配置需要以下數值:

  • 儲存體容器︰您目前 Azure 訂用帳戶內 Azure 儲存體帳戶中的 blob 容器,會與您的 IoT 中樞產生關聯。 你在前一節取得了必要的儲存帳戶資訊。 IoT 中樞會自動產生具有此 Blob 容器寫入權限的 SAS URI,以供裝置上傳檔案時使用。

  • 接收上傳檔案通知:啟用或停用檔案上傳通知。

  • SAS TTL︰這個設定是「IoT 中樞」傳回給裝置之 SAS URI 的存留時間。 預設設定為一小時。

  • 檔案通知設定預設 TTL:檔案上傳通知到期前的存留時間。 預設是一天。

  • 檔案通知最大傳遞計數︰IoT 中樞可嘗試傳遞檔案上傳通知的次數。 預設設為 10。

請使用 Set-AzIotHub 指令來設定您的物聯網集線檔案上傳設定:

Set-AzIotHub `
    -ResourceGroupName "{your iot hub resource group}" `
    -Name "{your iot hub name}" `
    -FileUploadNotificationTtl "01:00:00" `
    -FileUploadSasUriTtl "01:00:00" `
    -EnableFileUploadNotifications $true `
    -FileUploadStorageConnectionString "DefaultEndpointsProtocol=https;AccountName={your storage account name};AccountKey={your storage account key};EndpointSuffix=core.windows.net" `
    -FileUploadContainerName "{your blob container name}" `
    -FileUploadNotificationMaxDeliveryCount 10

附註

預設情況下,IoT Hub 會用連接字串中的帳戶金鑰與 Azure Storage 進行認證。 也可使用系統指派或使用者指派的受管理身份進行認證。 受控識別會透過安全的方式,將 Microsoft Entra ID 中的自動受控識別提供給 Azure 服務。 欲了解更多,請參閱 IoT Hub 對受管理身份的支援。 目前, Set-AzIotHub 指令中沒有設定認證類型的參數。