生成EventGrid并将AzureFunction定义为端点

时间:2019-09-04 11:45:27

标签: azure arm-template azure-eventgrid azure-template

通过门户,我可以在“存储帐户”中定义“事件订阅”,最后,我在门户中具有以下视图: enter image description here

现在我想对ARM模板做同样的事情,我有以下代码:

{
  "type": "Microsoft.EventGrid/topics/providers/eventSubscriptions",
  "name": "[concat(variables('StorageAccountName'),'/Microsoft.EventGrid/',variables('EventGridName'))]",
  "location": "[parameters('region')]",
  "apiVersion": "2018-01-01",
  "dependsOn": [ "[resourceId('Microsoft.Web/sites', variables('AzureFunction'))]" ],
  "properties": {
    "topic": "[concat('Microsoft.EventGrid/topics/',variables('StorageAccountName'))]",
    "destination": {
      "endpointType": "WebHook",
      "properties": {
        "topics": "[variables('StorageAccountName')]",
        "endpointUrl": "[concat('https://', variables('AzureFunction'),'.azurewebsites.net/admin/extensions/EventGridExtensionConfig')]"
      }
    }

  }
}

运行此代码后,出现以下错误:

Resource Microsoft.EventGrid/topics/providers/eventSubscriptions 'xxxx0prod0sac0xx0we/Microsoft.EventGrid/xxxx-prod-eg-dz-we' failed with message '{
   "error": {
     "code": "ResourceNotFound",
     "message": "The Resource 'Microsoft.EventGrid/topics/xxxx0prod0sac0xx0we' under resource group 'xxxx' was not found."
   }
 }'

您有什么想法,我应该怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

@Kaja,请使用下面的ARM模板在存储帐户中创建事件订阅:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageName": {
      "type": "string",
      "defaultValue": "[concat('storage', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "Provide a unique name for the Blob Storage account."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Provide a location for the Blob Storage account that supports Event Grid."
      }
    },
    "eventSubName": {
      "type": "string",
      "defaultValue": "subToStorage",
      "metadata": {
        "description": "Provide a name for the Event Grid subscription."
      }
    },
    "endpoint": {
      "type": "string",
      "metadata": {
        "description": "Provide the URL for the WebHook to receive events. Create your own endpoint for events."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts/providers/eventSubscriptions",
      "name": "[concat(parameters('storageName'), '/Microsoft.EventGrid/', parameters('eventSubName'))]",
      "apiVersion": "2018-01-01",
      "properties": {
        "destination": {
          "endpointType": "WebHook",
          "properties": {
            "endpointUrl": "[parameters('endpoint')]"
          }
        },
        "filter": {
          "subjectBeginsWith": "",
          "subjectEndsWith": "",
          "isSubjectCaseSensitive": false,
          "includedEventTypes": [
            "All"
          ]
        }
      }
    }
  ]
}

参考:https://github.com/Azure/azure-quickstart-templates/blob/master/101-event-grid-subscription-and-storage/azuredeploy.json