ARM 模板对 EndpointType 为 AzureFunction 的主题的事件订阅 [英] Event subscription by ARM template for topic with EndpointType as AzureFunction

查看:17
本文介绍了ARM 模板对 EndpointType 为 AzureFunction 的主题的事件订阅的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 "endpointType": "AzureFunction" 创建事件网格主题订阅.它给出了以下错误:-

<块引用>

错误":{"code": "无效请求","message": "无效的事件订阅请求:提供的 URL 无效.它不能为 null 或为空,并且应该是正确的 HTTPS URL比如

有人遇到过这个问题吗?

解决方案

Jakob 关于更改 api 版本的建议对我有用,因为我更改了 resourceId.这是我修改后的工作模板:-

<代码>{"name": "[concat(variables('eventGridTopicName'), '/Microsoft.EventGrid/', variables('myFuncName'))]","type": "Microsoft.EventGrid/topics/providers/eventSubscriptions","apiVersion": "2020-01-01-preview","location": "[参数('location')]",特性": {"topic": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('resourceGroupName'), '/providers/Microsoft.EventGrid/topics/', variables('eventGridTopicName'))]",目的地": {"endpointType": "AzureFunction",特性": {"resourceId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('resourceGroupName'), '/providers/Microsoft.Web/sites/', variables('funcAppName)'), '/functions/' , variables('myFuncName'))]","maxEventsPerBatch": 1,preferredBatchSizeInKilobytes":64}},筛选": {高级过滤器":[{"operatorType": "StringIn","key": "事件类型",价值观":[xyz事件"]},{"operatorType": "StringIn","key": "主题",价值观":[xyzEventReceived"]}]},标签": [],"eventDeliverySchema": "EventGridSchema"},取决于": [[变量('eventGridTopicName')]"]}

I am trying to create an event grid topic subscription with "endpointType": "AzureFunction". It is giving following error: -

"error": { "code": "InvalidRequest", "message": "Invalid event subscription request: Supplied URL is invalid. It cannot be null or empty and should be a proper HTTPS URL like https://www.example.com." }

My ARM template is given below: -

{
      "name": "[concat(variables('eventGridTopicName'), '/Microsoft.EventGrid/', variables('myFuncName'))]",
      "type": "Microsoft.EventGrid/topics/providers/eventSubscriptions",
      "apiVersion": "2019-01-01",
      "location": "[parameters('location')]",
      "properties": {
        "topic": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('resourceGroupName'), '/providers/Microsoft.EventGrid/topics/', variables('eventGridTopicName'))]",
        "destination": {
          "endpointType": "AzureFunction",
          "properties": {
            "resourceId": "[resourceId('Microsoft.Web/sites/functions/', variables('funcAppName'), variables('myFuncName'))]",
            "maxEventsPerBatch": 1,
            "preferredBatchSizeInKilobytes": 64
          }
        },
        "filter": {
          "advancedFilters": [
            {
              "operatorType": "StringIn",
              "key": "eventType",
              "values": [
                "xyzEvent"
              ]
            },
            {
              "operatorType": "StringIn",
              "key": "subject",
              "values": [
                "xyzEventReceived"
              ]
            }
          ]
        },
        "labels": [],
        "eventDeliverySchema": "EventGridSchema"
      },
      "dependsOn": [
        "[variables('eventGridTopicName')]"
      ]
    }

Earlier, I was using EndpointType as a webhook since new event handlers like Azure Function, storage Queues, etc. were not available (https://docs.microsoft.com/en-us/azure/event-grid/event-handlers). I used the generated arm template from Azure portal as shown below: -

Has anyone faced this issue?

解决方案

Jakob's suggestion for changing api version worked for me with change in resourceId. Here is my modified working template: -

{
      "name": "[concat(variables('eventGridTopicName'), '/Microsoft.EventGrid/', variables('myFuncName'))]",
      "type": "Microsoft.EventGrid/topics/providers/eventSubscriptions",
      "apiVersion": "2020-01-01-preview",
      "location": "[parameters('location')]",
      "properties": {
        "topic": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('resourceGroupName'), '/providers/Microsoft.EventGrid/topics/', variables('eventGridTopicName'))]",
        "destination": {
          "endpointType": "AzureFunction",
          "properties": {
            "resourceId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('resourceGroupName'), '/providers/Microsoft.Web/sites/', variables('funcAppName'), '/functions/' , variables('myFuncName'))]",
            "maxEventsPerBatch": 1,
            "preferredBatchSizeInKilobytes": 64
          }
        },
        "filter": {
          "advancedFilters": [
            {
              "operatorType": "StringIn",
              "key": "eventType",
              "values": [
                "xyzEvent"
              ]
            },
            {
              "operatorType": "StringIn",
              "key": "subject",
              "values": [
                "xyzEventReceived"
              ]
            }
          ]
        },
        "labels": [],
        "eventDeliverySchema": "EventGridSchema"
      },
      "dependsOn": [
        "[variables('eventGridTopicName')]"
      ]
    }

这篇关于ARM 模板对 EndpointType 为 AzureFunction 的主题的事件订阅的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆