使用 PowerShell 配置 IoT 中心文件上传

本文介绍如何使用 PowerShell 在 IoT 中心配置文件上传。

若要使用 IoT 中心的文件上传功能,必须先将 Azure 存储帐户和 Blob 容器与 IoT 中心关联。 IoT 中心会自动生成对此 Blob 容器具有写入权限的 SAS URI,以供设备上传文件时使用。 除了存储帐户和 Blob 容器外,还可以设置 SAS URI 的生存时间,以及配置可由 IoT 中心传送给后端服务的可选文件上传通知的设置。

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

先决条件

登录并设置 Azure 帐户

登录到 Azure 帐户,并选择订阅。

  1. 在 PowerShell 提示符下,运行 Connect-AzAccount -Environment AzureChinaCloud cmdlet:

    Connect-AzAccount -Environment AzureChinaCloud
    
  2. 如果有多个 Azure 订阅,则访问 Azure 即有权访问与凭据关联的所有 Azure 订阅。 使用 Get-AzSubscription 命令列出可供使用的 Azure 订阅:

    Get-AzSubscription
    

    使用以下命令,选择想要用于运行命令以管理 IoT 中心的订阅。 可使用上一命令输出中的订阅名称或 ID:

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

    注意

    Select-AzSubscription 命令是 Select-AzContext 的别名,让你可以使用 Get-AzSubscription 命令返回的订阅名称 (Name) 或订阅 ID (Id),而不必使用 Select-AzContext 命令所需的较复杂的上下文名称。

检索存储帐户详细信息

以下步骤假设已使用 Resource Manager 部署模型而不经典部署模型创建了存储帐户。

若要从设备配置文件上传,需要 Azure 存储帐户的连接字符串。 存储帐户必须与 IoT 中心位于同一订阅中。 还需要存储帐户中 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 中心

现在可以使用存储帐户详细信息配置 IoT 中心以将文件上传到 IoT 中心

配置需要以下值:

  • 存储容器:当前 Azure 订阅中要与 IoT 中心关联的 Azure 存储帐户中的 Blob 容器。 检索在上一部分中必要的存储帐户信息。 IoT 中心会自动生成对此 Blob 容器具有写入权限的 SAS URI,以供设备上传文件时使用。

  • 接收已上传文件的通知:启用或禁用文件上传通知。

  • SAS TTL:此设置是 IoT 中心返回给设备的 SAS URI 生存时间。 默认设置为一小时。

  • 文件通知设置默认 TTL:文件上传通知到期前的生存时间。 默认设置为一天。

  • 文件通知最大传送数:IoT 中心将尝试传送文件上传通知的次数。 默认设置为 10。

使用 Set-AzIotHub 命令在 IoT 中心配置文件上传设置:

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.chinacloudapi.cn" `
    -FileUploadContainerName "{your blob container name}" `
    -FileUploadNotificationMaxDeliveryCount 10

注意

默认情况下,IoT 中心使用连接字符串中的帐户密钥通过 Azure 存储进行身份验证。 也可以使用系统分配的或用户分配的托管标识进行身份验证。 托管标识在 Microsoft Entra ID 中以安全方式为 Azure 服务提供了一个自动托管标识。 若要了解详细信息,请参阅 IoT 中心对托管标识的支持。 Set-AzIotHub 命令中当前没有用于设置身份验证类型的参数。 你可以改用 Azure 门户Azure CLI

后续步骤