本文介绍如何使用 Azure 门户或 Azure CLI 为 Azure 数字孪生事件创建终结点。 还可以使用 DigitalTwinsEndpoint 控制平面 API 管理终结点。
将 事件通知 从 Azure 数字孪生路由到下游服务或连接的计算资源是一个双重过程:创建终结点,然后创建将数据发送到这些终结点的事件路由。 本文介绍第一个步骤:设置可以接收事件的终结点。 然后,可创建事件路由来指定由 Azure 数字孪生生成的哪些事件传递到哪些终结点。
先决条件
可以 免费设置的 Azure 帐户。
Azure 订阅中的 Azure 数字孪生实例。 如果没有实例,请按照 设置实例和身份验证中的步骤创建一个实例。 准备好以下设置值,以便稍后在本文中使用:
- 实例名称
- 资源组
设置实例后,可以在 Azure 门户中找到这些详细信息。
如果打算在遵循本指南时使用 Azure CLI,请按照下一部分中的说明进行作。
为 Azure CLI 准备环境
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 入门。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅 使用 Azure CLI 向 Azure 进行身份验证。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展的详细信息,请参阅 使用和管理 Azure CLI 中的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
创建所需资源
以下服务是可为实例创建的受支持的终结点类型:
若要将终结点链接到 Azure 数字孪生,需具备将用于终结点的事件网格主题、事件中心或服务总线主题。
使用以下图表查看在创建终结点之前应设置的资源。
终结点类型 | 所需的资源(已链接到创建说明) |
---|---|
事件网格终结点 | 事件网格主题 \* 事件架构必须是事件网格架构或云事件架构 v1.0 |
事件中心终结点 | 事件中心命名空间 事件中心 (可选)基于密钥的身份验证的授权规则 |
Service Bus 终结点 | 服务总线命名空间 服务总线主题 (可选)基于密钥的身份验证的授权规则 |
创建终结点
创建终结点资源后,将其用于 Azure 数字孪生终结点。
若要创建新终结点,请转到 Azure 门户中实例的页面。 可以通过在门户搜索栏中输入实例的名称来查找该实例。
从实例菜单中选择“终结点”。 然后,从 “终结点 ”页中选择“ + 创建终结点”。 此操作将打开“创建终结点”页。
输入终结点的“名称”,并选择“终结点类型”。
完成终结点类型所需的其他详细信息,包括订阅和前文所述的终结点资源。
- 对于事件中心和服务总线终结点,请选择 身份验证类型。 可以使用预先创建的授权规则,配合基于密钥的身份验证,也可以使用系统分配的托管标识或用户分配的托管标识。 有关使用标识身份验证选项的详细信息,请参阅终结点选项:基于标识的身份验证。
选择“保存”,完成终结点创建。
创建终结点后,可以通过检查 Azure 门户栏顶部的通知图标来验证它是否已成功创建:
如果终结点创建失败,可查看错误消息并在几分钟后重试。
还可以查看在 Azure 数字孪生实例的 “终结点 ”页上创建的终结点。
目前,根据为终结点所选的名称,可使用事件网格主题、事件中心或服务总线主题作为 Azure 数字孪生中的终结点。 通常,将该名称用作事件路由的目标,可以在 “创建路由”和“筛选器”中创建该名称。
终结点选项:基于标识的身份验证
本部分介绍如何在将事件转发到受支持的路由目标时,使用 Azure 数字孪生实例的托管标识。 虽然路由不强制要求设置托管标识,但它可以帮助实例轻松访问其他受 Microsoft Entra 保护的资源,例如事件中心、服务总线目标和 Azure 存储容器。 托管标识可以是系统分配或用户分配的标识。
本部分的其余部分逐步讲解设置具有托管标识的终结点的三个步骤。
1.为实例启用托管标识
使用以下选项卡获取与首选体验匹配的说明。
2.将 Azure 角色分配给标识
为 Azure 数字孪生实例创建托管标识后,请为其分配适当的角色,以使用不同类型的 终结点 进行身份验证,以便将事件路由到支持的目标。 本部分将介绍角色选项,以及如何将它们分配给托管标识。
重要
请确保完成此步骤。 如果没有这个,身份将无法访问终端,并且事件将不会被传递。
下面是 Azure 数字孪生标识访问终结点所需的最低角色,具体取决于目标类型。 具有更高权限的角色(如数据所有者角色)也起作用。
目标 | Azure 角色 |
---|---|
Azure 事件中心 | Azure 事件中心数据发送方 |
Azure 服务总线 | Azure 服务总线数据发送方 |
Azure 存储容器 | 存储 Blob 数据参与者 |
使用以下选项卡通过首选体验分配角色。
若要向标识分配角色,请在浏览器中打开 Azure 门户 。
在门户搜索栏中搜索你的终结点资源(事件中心、服务总线主题或存储容器)名称并导航到该资源。
选择“访问控制 (IAM)”。
选择“添加”“添加角色分配”,打开“添加角色分配”页面 。
将所需角色分配给 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 帐户中设置这些存储资源,请按照以下部分中的步骤作。 设置存储资源后,可以设置终结点连接。
- 若要在 Azure 订阅中创建存储帐户,请按照 “创建存储帐户”中的步骤作。 记下存储帐户名称,以便稍后可以使用它。
- 若要在新存储帐户中创建容器,请按照 “创建容器”中的步骤作。 记下容器名称,以便稍后使用它。
创建 SAS 令牌
接下来,为存储帐户创建一个 SAS 令牌,终结点可以使用该令牌来访问它。
在 Azure 门户中 导航到存储帐户(可以使用门户搜索栏按名称找到它)。
在存储帐户页面中,选择左侧导航栏中的“共享访问签名”链接以开始设置 SAS 令牌。
在 “共享访问签名”页上,在 “允许的服务 ”和 “允许的资源类型”下,选择所需的设置。 需要在每个类别中选择至少一个框。 在 “允许的权限”下,选择“ 写入”。 还可以选择其他权限。
设置剩余设置所需的值。
完成后,选择“生成 SAS 和连接字符串”以生成 SAS 令牌。
这样做会在设置选择下方的同一页底部生成多个 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 数字孪生发送到终结点,请定义 事件路由。 通过这些路由,可以设置整个系统和下游服务的事件流。 单一路由可允许选择多个通知和事件类型。 若要创建到终结点的事件路由,请参阅 “创建路由和筛选器”。