azureazure-functionsazure-app-service-plans

Azure Functions consumption plan naming


I've created a new Function App in Azure. I picked a consumption plan for the App Service Plan.

Once the app is created I now have a new App Service Plan called "WestEuropePlan" In my resource group.

Next thing. IT department says "WestEuropePlan" is not the correct naming convention for App Service Plans.

What are my options. When creating the Function App Im not allowed to pick or name an existing plan when using consumption based plans.

I cannot rename my autogenerated plan.

I cannot manually create a consumption based plan previous to creating the Function App.

What do i do? Is my only option to not use Consumption based plans and instead create a normal app service plan that I can name myself?

Is there something I can do from azure CLI or using ARM templates?


Solution

  • You can create a Azure Function on Consumption plan with your choice of name for consumption plan using ARM Template. Below is the sample template and parameter file:

    Templatefile.json

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "appName": {
          "type": "string",
          "metadata": {
            "description": "The name of the function app that you wish to create."
          }
        },
        "storageAccountType": {
          "type": "string",
          "defaultValue": "Standard_LRS",
          "allowedValues": ["Standard_LRS", "Standard_GRS", "Standard_RAGRS"],
          "metadata": {
            "description": "Storage Account type"
          }
        },
        "location": {
          "type": "string",
          "defaultValue": "[resourceGroup().location]",
          "metadata": {
            "description": "Location for all resources."
          }
        },
        "runtime": {
          "type": "string",
          "defaultValue": "node",
          "allowedValues": ["node", "dotnet", "java"],
          "metadata": {
            "description": "The language worker runtime to load in the function app."
          }
        }
      },
      "variables": {
        "functionAppName": "[parameters('appName')]",
        "hostingPlanName": "[parameters('appName')]",
        "applicationInsightsName": "[parameters('appName')]",
        "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'azfunctions')]",
        "storageAccountid": "[concat(resourceGroup().id,'/providers/','Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
        "functionWorkerRuntime": "[parameters('runtime')]"
      },
      "resources": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "name": "[variables('storageAccountName')]",
          "apiVersion": "2016-12-01",
          "location": "[parameters('location')]",
          "kind": "Storage",
          "sku": {
            "name": "[parameters('storageAccountType')]"
          }
        },
        {
          "type": "Microsoft.Web/serverfarms",
          "apiVersion": "2015-04-01",
          "name": "[variables('hostingPlanName')]",
          "location": "[parameters('location')]",
          "properties": {
            "name": "[variables('hostingPlanName')]",
            "computeMode": "Dynamic",
            "sku": "Dynamic"
          }
        },
        {
          "apiVersion": "2015-08-01",
          "type": "Microsoft.Web/sites",
          "name": "[variables('functionAppName')]",
          "location": "[parameters('location')]",
          "kind": "functionapp",
          "dependsOn": [
            "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
            "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
          ],
          "properties": {
            "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
            "siteConfig": {
              "appSettings": [
                {
                  "name": "AzureWebJobsDashboard",
                  "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountid'),'2015-05-01-preview').key1)]"
                },
                {
                  "name": "AzureWebJobsStorage",
                  "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountid'),'2015-05-01-preview').key1)]"
                },
                {
                  "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
                  "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountid'),'2015-05-01-preview').key1)]"
                },
                {
                  "name": "WEBSITE_CONTENTSHARE",
                  "value": "[toLower(variables('functionAppName'))]"
                },
                {
                  "name": "FUNCTIONS_EXTENSION_VERSION",
                  "value": "~2"
                },
                {
                  "name": "WEBSITE_NODE_DEFAULT_VERSION",
                  "value": "8.11.1"
                },
                {
                  "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
                  "value": "[reference(resourceId('microsoft.insights/components/', variables('applicationInsightsName')), '2015-05-01').InstrumentationKey]"
                },
                {
                  "name": "FUNCTIONS_WORKER_RUNTIME",
                  "value": "[variables('functionWorkerRuntime')]"
                }
              ]
            }
          }
        },
        {
          "apiVersion": "2018-05-01-preview",
          "name": "[variables('applicationInsightsName')]",
          "type": "microsoft.insights/components",
          "location": "East US",
          "tags": {
            "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/sites/', variables('applicationInsightsName'))]": "Resource"
          },
          "properties": {
            "ApplicationId": "[variables('applicationInsightsName')]",
            "Request_Source": "IbizaWebAppExtensionCreate"
          }
        }
      ]
    }
    

    Reference: https://github.com/Azure/azure-quickstart-templates/tree/master/101-function-app-create-dynamic