【问题标题】:Send Azure Blob Storage event notifications to Event Hubs on another account将 Azure Blob 存储事件通知发送到另一个帐户上的事件中心
【发布时间】:2019-08-22 20:18:39
【问题描述】:
在 Azure 中,我尝试将事件通知从一个 Active Directory 中的存储帐户发送到另一个 Active Directory 中的事件中心。
我无法弄清楚如何共享/链接资源。
在 AWS 中,我能够通过在接收者账户中创建角色、按 ID 添加源账户、添加 SQS Writer 资源权限以及添加 SQS Queue ARN 作为存储桶通知目标来完成此操作。我猜 Azure 中可能会出现类似的情况。
目前,我正在查看 Active Directory IAM,它似乎具有 EventGrid EventSubscription Contributor 属性。在目标帐户中,我已将源帐户添加为参与者,并且我在源帐户中收到一条通知,表明我在目标帐户中具有权限,但是当我尝试在源帐户中创建事件订阅时,事件中心位于目标帐户不显示为选项。
如何将事件通知从另一个帐户中的存储帐户写入一个帐户中的事件中心?
【问题讨论】:
标签:
azure
azure-active-directory
azure-eventhub
azure-eventgrid
azure-storage-account
【解决方案1】:
绝对是的。我认为跨不同订阅有很多方法可以做到这一点,例如下面的两种。
使用 Azure Functions 的解决方案 1。您可以使用带有 Blob Trigger 的 Azure Function 来获取 blob 更改的事件通知,然后通过 PUT/POST 方法使用 HttpTrigger 请求其他 Azure Function 来传输 blob 信息的事件消息,例如带有 SAS 令牌的 blob url用于在其他订阅中访问。
-
使用 Azure 逻辑应用的解决方案 2。您可以使用下面的逻辑流来获取 blob 更改事件以将通知消息发送到其他订阅中的 EventHub,因为 Azure 逻辑应用允许手动配置其连接信息,如下所示。
图 1. 从 Blob Storage 获取事件并发送到 EventHub 的逻辑流程
图 2. 单击 Manually enter connection information 以配置其他订阅中的服务。
图 2-A。
图 2-B。
【解决方案2】:
基本上,Azure Event Grid Pub/Sub 模型支持两种跨多租户环境传递事件的方式,例如:
-
基于RBAC 将事件消息紧密耦合传递到订阅者资源。在订阅者(目标)资源中,您可以
- 为 Azure AD 用户添加内置角色分配,例如 EventGrid EventSubscription Contributor 等。
- 或在 Azure 订阅级别添加共同管理员
以下屏幕 sn-p 显示了当我是两个 Azure 订阅(例如 Stage 和 Development)的共同管理员时的示例。
在 azure 帐户的阶段 AEG 提供程序中为事件驱动的 blob 存储主题创建事件订阅,并将其通知事件跨 azure 帐户边界传递给订阅者,例如位于开发 azure 帐户很简单:
-
基于 WebHook 事件处理程序端点,跨多租户边界将事件消息
松散解耦地传递。对于跨租户边界的 Pub/Sub 集成,可以使用带有输出绑定到事件中心资源的 EventGridTrigger 函数。以下屏幕 sn -p 显示了此示例:
上述解决方案非常简单,能够将事件消息调解(预处理)到事件中心资源。
在以扇出模式方式将事件分发给其他订阅者等的情况下,Azure 事件网格可以级联,如下面的屏幕 sn-p 所示:
在上述解决方案中,每个租户都有自己的 Azure 事件网格提供程序,并且通过“管道”WebHook 事件处理程序端点和自定义主题端点进行级联。
有关 AEG 级联实现的更多详细信息,请参见 here。