我有一个要在文件上传到特定Azure存储帐户时运行的Azure逻辑应用程序。逻辑应用程序通过ARM模板(也已配置为创建事件网格和 Blob存储 API连接)进行部署。
当我部署ARM模板时,事件网格触发器不起作用,因为Azure存储帐户中没有事件订阅。
仅供参考,如果我通过快速启动选项创建逻辑应用,即从Events > Get Started > Logic Apps > When a new blob is uploaded > Create
下的Azure存储帐户中创建逻辑应用,我就可以使用事件订阅。
^^这会使用Azure事件网格触发器(当发生资源事件时)创建一个新的Logic App,但我实际上想将事件订阅创建/链接到现有的Logic App,即我通过ARM部署的那个模板,我希望能够实现此自动化。
如果我对Logic App快速入门创建的事件订阅进行反向工程;我可以看到它的终结点类型为 WebHook ,终结点的形式为{logic-app-access-endpoint}/triggers/{name-of-trigger}/versions/{logic-app-version}/run
。我可以通过从Logic App中获取参数来将其重构为如下所示的内容:
https://prod-24.australiaeast.logic.azure.com:443/workflows/12433cc68f0e916dc3048c1775333506/triggers/When_blah_blah_blah/versions/12345678901234567890/run
我可以输入 Subscriber Endpoint 和 Confirm Selection ,但是当我尝试创建它时;我收到以下错误:
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连接,但是它不起作用...
有人知道如何在没有错误/气质行为的情况下设置对现有Logic App的事件网格订阅吗?还有人如何去自动创建事件网格订阅(假设存在一些动态属性,例如逻辑应用版本)。
TIA-瑞安。
答案 0 :(得分:1)
您的Logic App触发器端点似乎有点不正常。它应该看起来像这样:
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
您可以通过单击Logic App概述刀片中的查看触发器历史记录来找到确切的值。
从ARM模板自动部署的角度来看,您可以使用以下代码获取触发端点:
[listCallbackUrl(concat(resourceId('Microsoft.Logic/workflows',variables('myLogicAppName')),'/triggers/When_blah_blah_blah'), '2016-10-01').value]
我强烈建议您将Logic App和Event Grid订阅一起部署,或者为Event Grid订阅部署添加一个“ Logic App is changes”触发器。如果您的Logic App触发了仅在部署时发生的端点更改(您的朋友不会让朋友保存在门户中),则需要此功能。