将Azure Blob存储事件通知发送到另一个帐户的事件中心

时间:2019-04-01 15:45:51

标签: azure azure-active-directory azure-eventhub azure-eventgrid azure-storage-account

在Azure中,我试图将事件通知从一个Active Directory中的存储帐户发送到另一个Active Directory中的事件中心。

我在弄清楚如何共享/链接资源时遇到麻烦。

在AWS中,我能够通过在接收方帐户中创建角色,按ID添加源帐户,添加SQS Writer资源权限以及添加SQS Queue ARN作为存储桶通知目标来实现此目的。我猜想Azure中可能有类似的事情。

目前,我正在查看Active Directory IAM,它似乎具有EventGrid EventSubscription Contributor属性。在目标帐户中,我已将源帐户添加为贡献者,并且在源帐户中收到一条通知,告知我对目标帐户具有权限,但是当我尝试在源帐户中创建事件订阅时,目标帐户不会显示为选项。

如何从一个帐户的另一个存储帐户向一个帐户的事件中心写入事件通知?

2 个答案:

答案 0 :(得分:0)

绝对可以。我认为可以通过多种方式在不同的订阅中执行此操作,例如以下两种。

  1. 解决方案1以使用Azure函数。您可以将Azure函数与Blob触发器一起使用,以获取blob更改的事件通知,然后通过PUT / POST方法通过HttpTrigger请求另一个Azure函数,以传输blob信息(例如blob)的事件消息带有SAS令牌的URL,可以访问其他订阅。

  2. 解决方案2以使用Azure Logic应用。您可以使用下面的逻辑流来获取Blob更改事件,以将通知消息发送到其他订阅中的EventHub,因为Azure Logic Apps允许按以下方式手动配置其连接信息。

    图1.从Blob存储获取事件并发送到EventHub的逻辑流程 enter image description here

    图2.单击Manually enter connection information以配置其他订阅中的服务。

    图2-A。

    enter image description here

    图2-B。

    enter image description here

答案 1 :(得分:0)

基本上,Azure事件网格发布/订阅模型中支持两种方式来跨多租户环境传递事件,例如:

    根据{{​​3}}将事件消息
  1. 紧密耦合传递到订户资源。在订户(目标)资源上,您可以
    • 添加内置角色分配,例如Azure AD用户的 EventGrid EventSubscription贡献者等。
    • 或在Azure订阅级别添加共同管理员

下面的屏幕片段显示了一个示例,当我是两个Azure订阅的共同管理员时,例如 Stage Development

Stage 天蓝色帐户的AEG提供程序中为事件驱动的Blob存储主题创建事件订阅,并将其通知事件跨天蓝色帐户边界传递到订阅服务器,例如位于发展天青帐户很简单:

RBAC

    根据WebHook事件处理程序终结点,跨多租户边界将事件消息
  1. 松散地传递给订阅服务器。对于跨租户边界的发布/预订集成,可以使用EventGridTrigger函数,并将输出绑定到Event Hub资源。以下屏幕片段显示了此示例:

    enter image description here

    上述解决方案非常简单,可以将事件消息中介(预处理)到事件中心资源。

    在以扇出模式将事件分发给其他订阅者等的情况下,Azure事件网格可以层叠,如以下屏幕片段所示:

    enter image description here

    在上述解决方案中,每个租户都有自己的Azure事件网格提供程序,并且通过“管道” WebHook事件处理程序终结点和自定义主题终结点进行级联。 可以在enter image description here中找到有关AEG级联实施的更多详细信息。