创建 Azure 逻辑应用接收的 Azure 存储帐户事件订阅的问题

Issues creating Azure Storage Account Event Subscription to be received by Azure Logic App

我有一个 Azure 逻辑应用程序,每当文件上传到特定的 Azure 存储帐户时,我都想 运行。逻辑应用程序是通过 ARM 模板部署的(该模板也已配置为创建 Event GridBlob Storage API 连接) .

当我部署 ARM 模板时,事件网格触发器不工作,因为 Azure 存储帐户中没有事件订阅。

仅供参考,如果我通过快速启动选项创建逻辑应用程序,即从 Events > Get Started > Logic Apps > When a new blob is uploaded > Create.

下的我的 Azure 存储帐户创建逻辑应用程序,我可以使事件订阅起作用

^^ 这将创建一个带有 Azure 事件网格触发器的新逻辑应用程序(当资源事件发生时),但我实际上想 create/link 事件订阅到现有的逻辑应用程序,即我通过 ARM 模板部署,我希望能够自动执行此操作。

如果我对逻辑应用快速启动创建的事件订阅进行逆向工程;我可以看到它的端点类型为 WebHook,端点形式为 {logic-app-access-endpoint}/triggers/{name-of-trigger}/versions/{logic-app-version}/run。我可以通过从我的逻辑应用程序中获取参数将其重构为如下所示:

https://prod-24.australiaeast.logic.azure.com:443/workflows/12433cc68f0e916dc3048c1775333506/triggers/When_blah_blah_blah/versions/12345678901234567890/run

我可以输入订阅者端点确认选择,但是当我尝试创建它时;我收到以下错误:

Deploying Event Subscription: Test123
Deployment has failed with the following error: {"code":"Url validation","message":"The attempt to validate the provided endpoint https://prod-24.australiaeast.logic.azure.com:443/workflows/12433cc68f0e916dc3048c1775333506/triggers/When_blah_blah_blah/versions/12345678901234567890/run failed. For more details, visit https://aka.ms/esvalidation."

奇怪的是,如果我进入我的逻辑应用程序并将事件网格连接更改为另一个(但具有完全相同的属性)然后保存我的逻辑应用程序;然后我可以创建我的事件网格订阅而不会出现错误。好像有点脾气...

我尝试了一些方法,例如授权我的 事件网格 API 连接,但它不起作用...

有谁知道如何在没有错误/气质行为的情况下设置对现有逻辑应用程序的事件网格订阅...还有如何自动创建事件网格订阅(假设有一些动态属性,例如作为逻辑应用程序版本)。

TIA - 瑞安

您的逻辑应用触发器端点似乎有点不正常。它应该看起来像这样:

https://prod-24.australiaeast.logic.azure.com:443/workflows/12433cc68f0e916dc3048c1775333506/triggers/When_blah_blah_blah/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers% When_blah_blah_blah%2Frun&sv=1.0&sig=1234567890abcdefghij

您可以通过单击“逻辑应用概述”边栏选项卡中的查看触发器历史记录来找到准确的值。

从 ARM 模板自动化部署的角度,您可以使用以下代码获取触发端点:

[listCallbackUrl(concat(resourceId('Microsoft.Logic/workflows',variables('myLogicAppName')),'/triggers/When_blah_blah_blah'), '2016-10-01').value]

我强烈建议同时部署逻辑应用程序和事件网格订阅,或者向事件网格订阅部署添加 "Logic App was changed" 触发器。如果您的逻辑应用程序触发端点更改,您将需要它,而这种更改应该只在部署时发生(朋友不让朋友保存在门户中)。