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

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

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

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

先决条件

  • 你需要一个 Azure 帐户(可免费设置一个

  • 在 Azure 订阅中需要一个“Azure 数字孪生实例”。 如果还没有实例,可以使用设置实例和身份验证中的步骤创建一个。 准备好以下设置值,以便稍后在本文中使用:

    • 实例名称
    • 资源组

    设置实例后,可以在 Azure 门户中找到这些详细信息。

    Screenshot of the Overview page for an Azure Digital Twins instance in the Azure portal. The name and resource group are highlighted.

接下来,如果打算在遵循本指南时使用 Azure CLI,请按照以下说明操作。

为 Azure CLI 准备环境

创建所需资源

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

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

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

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

事件中心

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

服务总线主题

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

创建终结点

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

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

  1. 从实例菜单中选择“终结点”。 然后,在显示的“终结点”页选择“+ 创建终结点”。 这样做将打开“创建终结点”页,可在该页面中按以下步骤填写字段。

    Screenshot of creating an endpoint of type Event Grid in the Azure portal.

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

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

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

    Screenshot of creating an endpoint of type Event Hubs in the Azure portal.

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

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

Screenshot of the notification to verify the creation of an endpoint in the Azure portal.

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

还可以返回 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 数字孪生实例的名称匹配。

    Screenshot of the 'Add role assignment' page for an Azure Digital Twins instance.

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

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

注意

对于已使用基于密钥的标识创建的终结点,不能通过对其进行编辑来将其更改为使用基于标识的身份验证。 必须选择最初创建终结点时指定的身份验证类型。

使用下面的选项卡,使用首选体验创建终结点。

按照常规说明 开始创建 Azure 数字孪生终结点

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

Screenshot of creating an endpoint of type Event Hubs.

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

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

由于标识与使用该标识的终结点是分开管理的,因此必须考虑到对标识或其角色做出的任何更改可能给 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 令牌。

    Screenshot of the storage account page in the Azure portal.

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

  4. 对于其余的设置,设置所需的任何值。

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

    Screenshot of the storage account page in the Azure portal showing all the setting selection to generate a SAS token.

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

    Screenshot of the storage account page in the Azure portal highlighting how to copy the SAS token to use in the dead-letter secret.

创建死信终结点

若要创建启用死信的终结点,必须使用 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 数字孪生发送到终结点,需要定义一个事件路由。 通过这些路由,开发人员可在整个系统中串联事件流并连接到下游服务。 单一路由可允许选择多个通知和事件类型。 继续在“创建路由和筛选器”中创建到终结点的事件路由。