jwendl / functions-simulator

An IoT Device Simulator using Azure Functions and Event Grid
4 stars 1 forks source link

Can't use ARM to create EventGridTrigger subscription #9

Open jwendl opened 6 years ago

jwendl commented 6 years ago

Right now we can't have a function generate the systemkey needed in order to do an EventGrid subscription via ARM (similar to below)

    {
      "name": "[concat(parameters('eventGridTopicName'), '/Microsoft.EventGrid/RegistrationSubscription')]",
      "type": "Microsoft.EventGrid/topics/providers/eventSubscriptions",
      "location": "[resourceGroup().location]",
      "apiVersion": "2018-01-01",
      "properties": {
        "destination": {
          "endpointType": "WebHook",
          "properties": {
            "endpointUrl": "[concat('https://', parameters('functionsApiAppName'), '.azurewebsites.net/runtime/webhooks/EventGridExtensionConfig?functionName=RegistrationConsumer&code=', listSecrets(resourceId('Microsoft.Web/sites/functions', parameters('functionsApiAppName'), 'RegistrationConsumer'), '2018-02-01').key)]"
          }
        },
        "filter": {
          "subjectEndsWith": "registration"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', parameters('functionsApiAppName'))]",
        "[resourceId('Microsoft.Web/sites/sourcecontrols', parameters('functionsApiAppName'), 'web')]"
      ]
    },
    {
      "name": "[concat(parameters('eventGridTopicName'), '/Microsoft.EventGrid/SendEventConsumer')]",
      "type": "Microsoft.EventGrid/topics/providers/eventSubscriptions",
      "location": "[resourceGroup().location]",
      "apiVersion": "2018-01-01",
      "properties": {
        "destination": {
          "endpointType": "WebHook",
          "properties": {
            "endpointUrl": "[concat('https://', parameters('functionsApiAppName'), '.azurewebsites.net/runtime/webhooks/EventGridExtensionConfig?functionName=SendEventConsumer&code=', listSecrets(resourceId('Microsoft.Web/sites/functions', parameters('functionsApiAppName'), 'SendEventConsumer'), '2018-02-01').key)]"
          }
        },
        "filter": {
          "subjectEndsWith": "event"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', parameters('functionsApiAppName'))]",
        "[resourceId('Microsoft.Web/sites/sourcecontrols', parameters('functionsApiAppName'), 'web')]"
      ]
    }

Because of this we will have to use Azure CLI instead...

az eventgrid event-subscription create -g $resourceGroupName -n RegistrationConsumer --endpoint "https://$functionName.azurewebsites.net/runtime/webhooks/EventGridExtensionConfig?functionName=RegistrationConsumer&code=$masterKey"
az eventgrid event-subscription create -g $resourceGroupName -n SendEventConsumer --endpoint "https://$functionName.azurewebsites.net/runtime/webhooks/EventGridExtensionConfig?functionName=SendEventConsumer&code=$masterKey"
jwendl commented 6 years ago

Creating a "generate.sh" for folks to run after the "Deploy to Azure" button is clicked... Maybe could have them run from cloud shell?