你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

为 HTTP/REST 配置连接器

在 Azure IoT 操作中,HTTP/REST 连接器允许从由 HTTP 服务公开的 REST 终结点访问数据。

Azure IoT Operations 中的 资产 是用于表示物理资产或设备的逻辑实体。 Azure IoT Operations 资产可以具有描述其行为和特征的自定义属性、数据点、流和事件。 资产与一个或多个设备相关联。 Azure IoT Operations 将资产定义存储在 Azure 设备注册表中。

Azure IoT作中的 设备 是一个逻辑实体,用于定义与物理资产或设备的连接。 如果没有设备,数据无法从物理设备或资产流向 MQTT 中转站。 配置设备和资产时,将建立与物理资产或设备的连接,而数据点值、事件和流将到达 Azure IoT 操作实例。 设备具有一个或多个入站终结点。 Azure IoT作将设备定义存储在 Azure 设备注册表中。

用于 HTTP/REST 的连接器支持以下功能:

  • 发生采样失败时自动重试。 报告无法重试的错误的失败状态。
  • 与 OpenTelemetry 集成。
  • 使用设备端点资源
  • (可选)使用 WASM 模块转换传入数据。
  • 用于 REST 兼容性的设备终结点和资产定义验证。
  • 多种身份验证方法:
    • 用户名/密码基本 HTTP 身份验证
    • x509 客户端证书
    • 用于测试目的的匿名访问
  • 若要建立与 HTTP 终结点的 TLS 连接,可以为连接器配置证书信任列表。

对于每个配置的数据集,HTTP/REST 的连接器:

  • 向设备终结点中指定的地址执行 GET 请求,并将资产中的数据集数据源附加到该地址。
  • 根据接收的数据为每个数据集生成消息架构,并将其注册到架构注册表和 Azure 设备注册表。
  • 将数据转发到指定的目标。

本文介绍如何使用用于 HTTP/REST 的连接器来执行如下任务:

  • 定义把 HTTP 源连接到 Azure IoT 运营实例的设备。
  • 添加资产,并定义数据点,以启用从 HTTP 源到 MQTT 中转站或 中转站状态存储的数据流。

先决条件

若要配置设备和资产,需要运行 Azure IoT 操作实例。

要登录到操作体验 Web UI,则需要至少具有包含 Kubernetes - Azure Arc 实例的资源组参与者权限的 Microsoft Entra ID 帐户。 无法使用 Microsoft 帐户 (MSA) 登录。 有关详细信息,请参阅 排查对操作 Web UI 界面的访问问题

IT 管理员必须在 Azure 门户中为 Azure IoT 操作实例配置 HTTP/REST 模板连接器。

需要任何必要的凭据才能访问 HTTP 源。 如果 HTTP 源需要身份验证,则需要创建包含 HTTP 源用户名和密码的 Kubernetes 机密。

部署用于 HTTP/REST 的连接器

部署 Azure IoT 运营时,安装包包含各种连接器。 在可以在操作体验 Web UI 中使用连接器(例如 ONVIF、媒体和 HTTP/REST)之前,管理员必须将连接器模板实例添加到您的 Azure IoT 操作实例中。

所有连接器都可以将捕获的数据发布到 MQTT 中转站。

若要将连接器模板实例添加到 Azure IoT 操作实例,请执行以下操作:

  1. 在 Azure 门户中,转到 Azure IoT作实例,选择 连接器模板,然后选择 “添加连接器模板实例

    显示如何添加连接器模板实例的 Azure 门户的屏幕截图。

  2. “添加 Akri 连接器模板 向导”的第一页上,选择要添加的连接器模板的类型和版本,例如 ONVIF媒体HTTP/RESTSSEMQTT。 然后选择 “元数据”。

    显示如何选择连接器模板实例类型的 Azure 门户的屏幕截图。

  3. “元数据 ”页上,接受默认值,然后选择 “设备入站终结点类型”。

  4. “设备入站终结点类型 ”页上,接受默认值,然后选择“ 诊断配置”。

  5. “诊断配置 ”页上,接受默认值,然后选择“ 运行时配置”。

  6. “运行时配置 ”页上,接受默认值,然后选择“ 审阅”。

  7. 在“ 审阅 ”页上,查看连接器模板实例的详细信息,然后选择“ 创建 ”以创建连接器模板实例。

OT 用户现在可以使用操作体验 Web UI 来创建具有连接器终结点的设备。


创建设备

若要为 HTTP/REST 配置连接器,请先创建一个定义与 HTTP 源的连接的设备。 设备包括 HTTP 源的 URL 以及访问 HTTP 源所需的任何凭据:

  1. 在操作体验 Web UI 中,在左侧导航窗格中选择设备。 然后选择“ 新建”。

  2. 输入设备的名称,例如 http-connector。 若要为 HTTP/REST 的连接器添加终结点,请在 Microsoft.Http 磁贴上选择“新建”。

  3. 添加用于 HTTP/REST 的连接器终结点的详细信息,包括任何身份验证凭据:

    显示如何为 HTTP/REST 终结点添加连接器的屏幕截图。

    选择 “应用 ”以保存终结点。

  4. “设备详细信息 ”页上,选择“ 下一步 ”以继续。

  5. “添加自定义属性 ”页上,添加要与设备关联的任何其他属性。 例如,可以添加一个属性来指示相机制造商。 然后选择“下一步”继续。

  6. “摘要 ”页上,查看设备的详细信息,然后选择“ 创建 ”以创建资产。

  7. 创建设备后,可以在 “设备” 列表中查看它:

    显示设备列表的屏幕截图。

将设备配置为使用用户名和密码

上述示例使用了 Anonymous 身份验证模式。 此模式不需要用户名或密码。

若要使用 Username password 身份验证模式,请完成以下步骤:

按照 “管理 Azure IoT作部署的机密 ”中的步骤,在 Azure Key Vault 中添加用户名和密码的机密,将其投影到 Kubernetes 群集中,并从设备配置中引用它们。

将设备配置为使用 X.509 证书

若要使用 X509 certificate 身份验证模式,请按照 管理用于外部通信的证书 的步骤在 Azure Key Vault 中添加证书的机密,将其投影到 Kubernetes 群集中,并从设备配置中引用它们。

为设备配置一个用于使用的证书信任列表

若要管理用于 HTTP/REST 的连接器的受信任证书列表,请参阅 管理用于外部通信的证书

创建资产

若要定义从 HTTP 终结点发布数据点的资产,请执行以下步骤:

  1. 在操作体验 Web 用户界面中,选择左侧导航窗格中的 资产。 然后选择“ 创建资产”。

  2. 选择在上一部分创建的 HTTP/REST 连接器的入站终结点。

  3. 输入资产的名称,例如 my-http-source

  4. 添加要与资产关联的任何自定义属性。 例如,可以添加一个属性来指示相机制造商。 选择“下一步”继续操作。

数据集定义连接器将从数据点集合中收集的数据发送到的目的地。 HTTP/REST 资产可以有多个数据集。 创建数据集:

  1. 选择“ 创建数据集”。

  2. 输入数据集的详细信息,例如数据集的名称、数据源、采样间隔和目标。 对于 HTTP/REST 资产,数据源是 REST 终结点上的路径。 对于 HTTP/REST 资产,目标为 MQTT 主题或 代理状态存储 键。 例如:

    如何在操作体验中创建数据集的屏幕截图显示如下。

    若要转换传入数据,请在 “转换 ”字段中添加 WebAssembly (WASM) 模块的 URL。 若要了解详细信息,请参阅 转换传入数据

  3. 选择创建和下一步 创建数据集。

    小窍门

    使用 “管理默认设置” 选项配置默认数据集设置,例如采样间隔。

  4. 在“ 审阅 ”页上,查看资产的详细信息,然后选择“ 创建 ”以创建资产。 几分钟后,资产将列在 “资产 ”页上:

    显示资产列表的屏幕截图。

转换传入数据

若要使用 WASM 模块转换传入数据,请完成以下步骤:

  1. 开发 WASM 模块以执行自定义转换。 有关详细信息,请参阅 开发 WebAssembly (WASM) 模块和图形定义

  2. 配置转换图。 有关详细信息,请参阅 配置 WebAssembly (WASM) 图形定义

  3. 部署模块和图形。 有关详细信息,请参阅使用 WebAssembly (WASM)。

    注释

    需要部署至少一个数据流图以启用 WASM 图处理,但此功能不需要实际使用该数据流图。

  4. 请在 Transform 字段中使用已部署的 WASM 图的 URL 来配置您的数据集:

    显示如何将 WASM 转换添加到数据集的屏幕截图。

HTTP/REST 连接器中的数据转换只需要单个 map 运算符,虽然完全支持 WASM 图,但有以下限制:

  • 图形必须具有单个 source 节点和单个 sink 节点。
  • 图形必须使用并发出 DataModel::Message 数据类型。
  • 图形必须是无状态的。 目前,该限制意味着累积运算符不受支持。