在 Azure 数字孪生中创建终结点

本文介绍如何使用 Azure 门户Azure CLI 为 Azure 数字孪生事件创建终结点。 还可以使用 DigitalTwinsEndpoint 控制平面 API 管理终结点。

事件通知 从 Azure 数字孪生路由到下游服务或连接的计算资源是一个双重过程:创建终结点,然后创建将数据发送到这些终结点的事件路由。 本文介绍第一个步骤:设置可以接收事件的终结点。 然后,可创建事件路由来指定由 Azure 数字孪生生成的哪些事件传递到哪些终结点。

先决条件

如果打算在遵循本指南时使用 Azure CLI,请按照下一部分中的说明进行作。

为 Azure CLI 准备环境

创建所需资源

以下服务是可为实例创建的受支持的终结点类型:

若要将终结点链接到 Azure 数字孪生,需具备将用于终结点的事件网格主题、事件中心或服务总线主题。

使用以下图表查看在创建终结点之前应设置的资源。

终结点类型 所需的资源(已链接到创建说明)
事件网格终结点 事件网格主题
\* 事件架构必须是事件网格架构或云事件架构 v1.0
事件中心终结点 事件中心命名空间

事件中心

(可选)基于密钥的身份验证的授权规则
Service Bus 终结点 服务总线命名空间

服务总线主题

(可选)基于密钥的身份验证的授权规则

创建终结点

创建终结点资源后,将其用于 Azure 数字孪生终结点。

若要创建新终结点,请转到 Azure 门户中实例的页面。 可以通过在门户搜索栏中输入实例的名称来查找该实例。

  1. 从实例菜单中选择“终结点”。 然后,从 “终结点 ”页中选择“ + 创建终结点”。 此操作将打开“创建终结点”页。

    在 Azure 门户中创建“事件网格”类型终结点的屏幕截图。

  2. 输入终结点的“名称”,并选择“终结点类型”。

  3. 完成终结点类型所需的其他详细信息,包括订阅和前文所述的终结点资源。

    1. 对于事件中心和服务总线终结点,请选择 身份验证类型。 可以使用预先创建的授权规则,配合基于密钥的身份验证,也可以使用系统分配的托管标识或用户分配的托管标识。 有关使用标识身份验证选项的详细信息,请参阅终结点选项:基于标识的身份验证

    在 Azure 门户中创建“事件中心”类型终结点的屏幕截图。

  4. 选择“保存”,完成终结点创建。

创建终结点后,可以通过检查 Azure 门户栏顶部的通知图标来验证它是否已成功创建:

指示验证 Azure 门户中终结点的创建的通知的屏幕截图。

如果终结点创建失败,可查看错误消息并在几分钟后重试。

还可以查看在 Azure 数字孪生实例的 “终结点 ”页上创建的终结点。

目前,根据为终结点所选的名称,可使用事件网格主题、事件中心或服务总线主题作为 Azure 数字孪生中的终结点。 通常,将该名称用作事件路由的目标,可以在 “创建路由”和“筛选器”中创建该名称。

终结点选项:基于标识的身份验证

本部分介绍如何在将事件转发到受支持的路由目标时,使用 Azure 数字孪生实例的托管标识。 虽然路由不强制要求设置托管标识,但它可以帮助实例轻松访问其他受 Microsoft Entra 保护的资源,例如事件中心服务总线目标和 Azure 存储容器。 托管标识可以是系统分配或用户分配的标识。

本部分的其余部分逐步讲解设置具有托管标识的终结点的三个步骤。

1.为实例启用托管标识

使用以下选项卡获取与首选体验匹配的说明。

首先,请确保为 Azure 数字孪生实例启用了 托管标识

另请确保实例上已有“Azure 数字孪生数据所有者”角色。 可以在设置用户访问权限中找到说明。

2.将 Azure 角色分配给标识

为 Azure 数字孪生实例创建托管标识后,请为其分配适当的角色,以使用不同类型的 终结点 进行身份验证,以便将事件路由到支持的目标。 本部分将介绍角色选项,以及如何将它们分配给托管标识。

重要

请确保完成此步骤。 如果没有这个,身份将无法访问终端,并且事件将不会被传递。

下面是 Azure 数字孪生标识访问终结点所需的最低角色,具体取决于目标类型。 具有更高权限的角色(如数据所有者角色)也起作用。

目标 Azure 角色
Azure 事件中心 Azure 事件中心数据发送方
Azure 服务总线 Azure 服务总线数据发送方
Azure 存储容器 存储 Blob 数据参与者

使用以下选项卡通过首选体验分配角色。

若要向标识分配角色,请在浏览器中打开 Azure 门户

  1. 在门户搜索栏中搜索你的终结点资源(事件中心、服务总线主题或存储容器)名称并导航到该资源。

  2. 选择“访问控制 (IAM)”。

  3. 选择“添加”“添加角色分配”,打开“添加角色分配”页面 。

  4. 将所需角色分配给 Azure 数字孪生实例的托管标识。 有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色

    设置
    角色 从选项中选择所需的角色。
    将访问权限分配到 托管的标识
    成员 在此处选择要为其分配角色的 Azure 数字孪生实例的用户分配或系统分配的托管标识。 用户分配的标识具有创建标识时选择的名称,系统分配的标识的名称与 Azure 数字孪生实例的名称匹配。

    Azure 数字孪生实例的“添加角色分配”页的屏幕截图。

3.创建使用基于标识的身份验证的终结点

为 Azure 数字孪生实例设置托管标识并为其分配适当的角色后,创建使用标识进行身份验证的终结点。 此选项仅适用于事件中心和服务总线类型终结点(事件网格不支持此选项)。

注意

不能编辑使用基于密钥的标识创建的终结点,以更改为基于标识的身份验证。 首次创建终结点时,必须选择身份验证类型。

使用以下部分使用首选体验创建终结点。

请按照有关创建 Azure 数字孪生终结点的一般说明开始操作。

完成终结点类型所需的详细信息的步骤时,请为“身份验证类型”选择“系统分配”或“用户分配(预览版)”。

创建“事件中心”类型终结点的屏幕截图。

完成终结点设置,然后选择“保存”。

有关禁用托管标识的注意事项

标识独立于使用该标识的终结点进行管理。 因此,请务必考虑对标识或其角色的任何更改如何影响 Azure 数字孪生实例中的终结点。 如果禁用标识或删除终结点的必要角色,则终结点将不可访问,并且事件流会中断。

若要继续使用使用已禁用的托管标识设置的终结点,请删除该终结点,并使用其他身份验证类型 重新创建该 终结点。 发生此更改后,事件可能需要长达一小时才能恢复传递到终结点。

终结点选项:死信

当终结点无法在某个时间段内传递事件或尝试次数时,它将未传递的事件发送到存储帐户。 此过程称为“死信处理”。

可以使用 Azure 门户Azure 数字孪生 CLI 来设置必需的存储资源。 但是,若要创建启用了死信的终结点,需要使用 Azure 数字孪生 CLI控制平面 API

若要详细了解死信,请参阅终结点和事件路由。 有关如何设置使用死信的终结点的说明,请继续阅读本部分的其余内容。

设置存储资源

在设置死信位置之前,必须有一个存储帐户,其中包含 Azure 帐户中的容器

创建终结点时,请提供此容器的 URI。 死信位置会作为包含 SAS 令牌的容器 URI 提供给终结点。 该令牌需要存储帐户中目标容器的 write 权限。 完全格式化的死信 SAS URI 的格式为:https://<storage-account-name>.blob.core.windows.net/<container-name>?<SAS-token>

若要在 Azure 帐户中设置这些存储资源,请按照以下部分中的步骤作。 设置存储资源后,可以设置终结点连接。

  1. 若要在 Azure 订阅中创建存储帐户,请按照 “创建存储帐户”中的步骤作。 记下存储帐户名称,以便稍后可以使用它。
  2. 若要在新存储帐户中创建容器,请按照 “创建容器”中的步骤作。 记下容器名称,以便稍后使用它。

创建 SAS 令牌

接下来,为存储帐户创建一个 SAS 令牌,终结点可以使用该令牌来访问它。

  1. Azure 门户中 导航到存储帐户(可以使用门户搜索栏按名称找到它)。

  2. 在存储帐户页面中,选择左侧导航栏中的“共享访问签名”链接以开始设置 SAS 令牌。

    Azure 门户中存储帐户页的屏幕截图。

  3. “共享访问签名”页上,在 “允许的服务 ”和 “允许的资源类型”下,选择所需的设置。 需要在每个类别中选择至少一个框。 在 “允许的权限”下,选择“ 写入”。 还可以选择其他权限。

  4. 设置剩余设置所需的值。

  5. 完成后,选择“生成 SAS 和连接字符串”以生成 SAS 令牌。

    Azure 门户中存储帐户页的屏幕截图,其中显示了生成 SAS 令牌的所有设置选择。

  6. 这样做会在设置选择下方的同一页底部生成多个 SAS 和连接字符串值。 向下滚动以查看这些值,并使用“复制到剪贴板”图标复制“SAS 令牌”值。 保存它以供以后使用。

创建死信终结点

若要创建启用了死信的终结点,请使用 CLI 命令控制平面 API 创建终结点。 无法在 Azure 门户中创建这种类型的终结点。

有关如何使用 Azure CLI 创建此类终结点的说明,请切换到此部分的“CLI”选项卡。

消息存储架构

使用死信设置终结点后,死信消息将以以下格式存储在存储帐户中:

<container>/<endpoint-name>/<year>/<month>/<day>/<hour>/<event-ID>.json

死信消息与原始终结点要传递的原始事件的架构匹配。

下面是孪生体创建通知的死信消息示例:

{
  "specversion": "1.0",
  "id": "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "type": "Microsoft.DigitalTwins.Twin.Create",
  "source": "<your-instance>.api.<your-region>.da.azuredigitaltwins-test.net",
  "data": {
    "$dtId": "<your-instance>xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "$etag": "W/\"xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxxxxx\"",
    "TwinData": "some sample",
    "$metadata": {
      "$model": "dtmi:test:deadlettermodel;1",
      "room": {
        "lastUpdateTime": "2020-10-14T01:11:49.3576659Z"
      }
    }
  },
  "subject": "<your-instance>xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "time": "2020-10-14T01:11:49.3667224Z",
  "datacontenttype": "application/json",
  "traceparent": "00-889a9094ba22b9419dd9d8b3bfe1a301-f6564945cb20e94a-01"
}

后续步骤

若要将数据从 Azure 数字孪生发送到终结点,请定义 事件路由。 通过这些路由,可以设置整个系统和下游服务的事件流。 单一路由可允许选择多个通知和事件类型。 若要创建到终结点的事件路由,请参阅 “创建路由和筛选器”。