azure - 如何从 ARM 模板创建具有事件网格订阅的逻辑应用程序

标签 azure azure-logic-apps azure-eventgrid

我制作了一个逻辑应用程序来监听事件网格主题,它工作正常,但如果我删除它并尝试从模板创建它,它就不起作用。它永远不会运行。

问题在于,虽然它确实创建了与事件网格的 API 连接,但它使其未经授权,并且也不会创建对事件网格主题的任何订阅。任何时候都不会显示任何错误。一切都会成功,但它并没有创造出它应该创造的一切。

为了解决这个问题,我向 Powershell 脚本添加了命令来对其进行身份验证。这工作正常,但这当然不会创建订阅。

如果我再次运行 ARM 模板,我希望它现在就创建它,因为连接无效,但事实并非如此。我想 Azure 意识到模板中没有任何更改并且什么也没做?如果我编辑 ARM 模板并更改订阅名称,然后再次部署它,则会创建订阅并开始工作。

我当然可以使用 2 个不同的订阅名称作为参数来调用模板两次,但这听起来很愚蠢。必须有更好的方法。

那么从模板和脚本创建此类逻辑应用的最佳方法是什么?

最佳答案

您可以将事件网格主题订阅及其逻辑应用连接创建为单独的资源。示例模板对象如下。请记住,连接正在使用 oauth。

事件网格主题订阅

{
  "type": "Microsoft.EventGrid/topics/providers/eventSubscriptions",
  "name": "[concat(parameters('TopicName'), '/Microsoft.EventGrid/', variables('name'))]",
  "location": "[parameters('Location')]",
  "apiVersion": "2018-01-01",
  "properties": {
    "destination": {
      "endpointType": "WebHook",
      "properties": {
        "endpointUrl": "[parameters('Endpoint')]"
      }
    },
    "filter": {
      "includedEventTypes": [
        "[parameters('EventType')]"
      ]
    }
  },
  "dependsOn": [
  ]
}

网络连接

{
  "type": "Microsoft.Web/connections",
  "name": "[variables('connectionName')]",
  "apiVersion": "2016-06-01",
  "location": "[parameters('ConnectionLocation')]",
  "properties": {
    "displayName": "[variables('connectionName')]",
    "api": {
      "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/northcentralus/managedApis/azureeventgrid/')]"
    },
    "parameterValues": {
      "token:clientId": "[parameters('ConnectionClientId')]",
      "token:clientSecret": "[parameters('ConnectionClientSecret')]",
      "token:TenantId": "[parameters('ConnectionTenantId')]",
      "token:resourceUri": "https://management.core.windows.net/",
      "token:grantType": "client_credentials"
    }
  },
  "dependsOn": []
}

关于azure - 如何从 ARM 模板创建具有事件网格订阅的逻辑应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54826114/

相关文章:

excel - 将 OData 源导入 PowerPivot,其中源受 OAuth 2 保护

azure - 如何查询 dev azure 项目中所有管道的 yaml 文件路径?

python - 创建 Azure 事件网格主题错误 - "does not have authorization to perform action"

azure - 如何创建具有 vnet 集成的 azure 标准逻辑应用程序,以启用不同 azure 订阅中的存储帐户之间的访问?

Azure服务总线: No session available to complete the message with the lock token

azure - 将文件上传到 Azure Blob 存储时没有触发事件网格事件 - 为什么?

azure - 无法为 Event-Grid 创建 Webhook 订阅

azure - 创建后如何在 Azure 数据工厂中启用诊断

Azure AD - 是否可以在企业应用程序之间复制/复制/克隆角色/用户/组?

azure - 从logicapp调用Azure函数时出现BadRequest