我有一个Azure Logic应用程序,每当文件上传到特定的Azure存储帐户时,我都要运行它。逻辑应用程序通过ARM模板部署(该模板还配置为创建事件网格和Blob存储API连接(。
当我部署ARM模板时,事件网格触发器不起作用,因为Azure存储帐户中没有事件订阅。
请注意。,如果我通过快速启动选项(即从Events > Get Started > Logic Apps > When a new blob is uploaded > Create
下的Azure存储帐户(创建逻辑应用程序,我可以获得事件订阅。
^^这创建了一个带有Azure事件网格触发器的新逻辑应用程序(当资源事件发生时(,但我实际上想创建/链接事件订阅到现有的逻辑应用程序,即我通过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-Ryan。
看起来您的逻辑应用程序触发端点有点偏离。它应该看起来像这样:
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]
我强烈建议您将逻辑应用程序和事件网格订阅一起部署,或者在事件网格订阅部署中添加"逻辑应用程序已更改"触发器。如果您的逻辑应用程序触发端点更改,而端点更改只应在部署时发生(朋友不允许朋友在门户中保存(,您将需要此功能。