Search code examples
azuretemplatesazure-data-factoryazure-data-lake-gen2azure-rm-template

Custom template deployment in Azure - Schema Error


I am trying to upload a Storage account "template.json" file in Custom deployment in Azure. The link I am referring to deploy the template is - https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/quickstart-create-templates-use-the-portal.

But I am getting the following schema error :

"Unable to load schema from 'https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json'. No schema request service available"

I have tried using different versions like - "2019-04-01" and "2021-02-01". Still does not work. Can someone please help me to deploy this template correctly?

My template.json file is as follows:

{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
    "storageAccounts_name": {
        "defaultValue": "NameOfStorageAccount",
        "type": "String"
    }
},
"variables": {},
"resources": [
    {
        "type": "Microsoft.Storage/storageAccounts",
        "apiVersion": "2021-04-01",
        "name": "[parameters('storageAccounts_name')]",
        "location": "eastus",
        "tags": {
            "Application": "CA",
            "Environment": "Test"
        },
        "sku": {
            "name": "Standard_RAGRS",
            "tier": "Standard"
        },
        "kind": "StorageV2",
        "properties": {
            "isHnsEnabled": true,
            "networkAcls": {
                "bypass": "AzureServices",
                "virtualNetworkRules": [],
                "ipRules": [],
                "defaultAction": "Allow"
            },
            "supportsHttpsTrafficOnly": true,
            "encryption": {
                "services": {
                    "file": {
                        "keyType": "Account",
                        "enabled": true
                    },
                    "blob": {
                        "keyType": "Account",
                        "enabled": true
                    }
                },
                "keySource": "Microsoft.Storage"
            },
            "accessTier": "Hot"
        }
    },
    {
        "type": "Microsoft.Storage/storageAccounts/blobServices",
        "apiVersion": "2021-04-01",
        "name": "[concat(parameters('storageAccounts_name'), '/default')]",
        "dependsOn": [
            "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]"
        ],
        "sku": {
            "name": "Standard_RAGRS",
            "tier": "Standard"
        },
        "properties": {
            "cors": {
                "corsRules": []
            },
            "deleteRetentionPolicy": {
                "enabled": false
            }
        }
    },
    {
        "type": "Microsoft.Storage/storageAccounts/fileServices",
        "apiVersion": "2021-04-01",
        "name": "[concat(parameters('storageAccounts_name'), '/default')]",
        "dependsOn": [
            "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]"
        ],
        "sku": {
            "name": "Standard_RAGRS",
            "tier": "Standard"
        },
        "properties": {
            "protocolSettings": {
                "smb": {}
            },
            "cors": {
                "corsRules": []
            }
        }
    },
    {
        "type": "Microsoft.Storage/storageAccounts/queueServices",
        "apiVersion": "2021-04-01",
        "name": "[concat(parameters('storageAccounts_name'), '/default')]",
        "dependsOn": [
            "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]"
        ],
        "properties": {
            "cors": {
                "corsRules": []
            }
        }
    },
    {
        "type": "Microsoft.Storage/storageAccounts/tableServices",
        "apiVersion": "2021-04-01",
        "name": "[concat(parameters('storageAccounts_name'), '/default')]",
        "dependsOn": [
            "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]"
        ],
        "properties": {
            "cors": {
                "corsRules": []
            }
        }
    },
    {
        "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
        "apiVersion": "2021-04-01",
        "name": "[concat(parameters('storageAccounts_name'), '/default/archive')]",
        "dependsOn": [
            "[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_name'), 'default')]",
            "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]"
        ],
        "properties": {
            "defaultEncryptionScope": "$account-encryption-key",
            "denyEncryptionScopeOverride": false,
            "publicAccess": "None"
        }
    },
    {
        "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
        "apiVersion": "2021-04-01",
        "name": "[concat(parameters('storageAccounts_name'), '/default/intermediate')]",
        "dependsOn": [
            "[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_name'), 'default')]",
            "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]"
        ],
        "properties": {
            "defaultEncryptionScope": "$account-encryption-key",
            "denyEncryptionScopeOverride": false,
            "publicAccess": "None"
        }
    },
    {
        "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
        "apiVersion": "2021-04-01",
        "name": "[concat(parameters('storageAccounts_name'), '/default/processed')]",
        "dependsOn": [
            "[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_name'), 'default')]",
            "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]"
        ],
        "properties": {
            "defaultEncryptionScope": "$account-encryption-key",
            "denyEncryptionScopeOverride": false,
            "publicAccess": "None"
        }
    },
    {
        "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
        "apiVersion": "2021-04-01",
        "name": "[concat(parameters('storageAccounts_name'), '/default/propectstest')]",
        "dependsOn": [
            "[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_name'), 'default')]",
            "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]"
        ],
        "properties": {
            "defaultEncryptionScope": "$account-encryption-key",
            "denyEncryptionScopeOverride": false,
            "publicAccess": "None"
        }
    },
    {
        "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
        "apiVersion": "2021-04-01",
        "name": "[concat(parameters('storageAccounts_name'), '/default/staging')]",
        "dependsOn": [
            "[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_name'), 'default')]",
            "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]"
        ],
        "properties": {
            "defaultEncryptionScope": "$account-encryption-key",
            "denyEncryptionScopeOverride": false,
            "publicAccess": "None"
        }
    },
    {
        "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
        "apiVersion": "2021-04-01",
        "name": "[concat(parameters('storageAccounts_name'), '/default/test-sandbox')]",
        "dependsOn": [
            "[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_name'), 'default')]",
            "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]"
        ],
        "properties": {
            "defaultEncryptionScope": "$account-encryption-key",
            "denyEncryptionScopeOverride": false,
            "publicAccess": "None"
        }
    }
]

}


Solution

    1. You're deploying a Storage Account with hierarchical namespace (isHnsEnabled=true). Encryption scopes are not supported in those accounts (docs). To make your template work, you have to remove the defaultEncryptionScope and denyEncryptionScopeOverride properties on containers.

    2. Also, remove the empty protocolSettings and cors properties on the Microsoft.Storage/storageAccounts/fileServices resource.

    Final template.json, which deploys fine for me, looks like this:

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "storageAccounts_name": {
          "defaultValue": "NameOfStorageAccount",
          "type": "String"
        }
      },
      "variables": {},
      "resources": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2021-04-01",
          "name": "[parameters('storageAccounts_name')]",
          "location": "eastus",
          "tags": {
            "Application": "CA",
            "Environment": "Test"
          },
          "sku": {
            "name": "Standard_RAGRS",
            "tier": "Standard"
          },
          "kind": "StorageV2",
          "properties": {
            "isHnsEnabled": true,
            "networkAcls": {
              "bypass": "AzureServices",
              "virtualNetworkRules": [],
              "ipRules": [],
              "defaultAction": "Allow"
            },
            "supportsHttpsTrafficOnly": true,
            "encryption": {
              "services": {
                "file": {
                  "keyType": "Account",
                  "enabled": true
                },
                "blob": {
                  "keyType": "Account",
                  "enabled": true
                }
              },
              "keySource": "Microsoft.Storage"
            },
            "accessTier": "Hot"
          }
        },
        {
          "type": "Microsoft.Storage/storageAccounts/blobServices",
          "apiVersion": "2021-04-01",
          "name": "[concat(parameters('storageAccounts_name'), '/default')]",
          "dependsOn": [ "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]" ],
          "sku": {
            "name": "Standard_RAGRS",
            "tier": "Standard"
          },
          "properties": {
            "cors": { "corsRules": [] },
            "deleteRetentionPolicy": { "enabled": false }
          }
        },
        {
          "type": "Microsoft.Storage/storageAccounts/fileServices",
          "apiVersion": "2021-04-01",
          "name": "[concat(parameters('storageAccounts_name'), '/default')]",
          "dependsOn": [ "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]" ],
          "sku": {
            "name": "Standard_RAGRS",
            "tier": "Standard"
          },
          "properties": {
          }
        },
        {
          "type": "Microsoft.Storage/storageAccounts/queueServices",
          "apiVersion": "2021-04-01",
          "name": "[concat(parameters('storageAccounts_name'), '/default')]",
          "dependsOn": [ "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]" ],
          "properties": { "cors": { "corsRules": [] } }
        },
        {
          "type": "Microsoft.Storage/storageAccounts/tableServices",
          "apiVersion": "2021-04-01",
          "name": "[concat(parameters('storageAccounts_name'), '/default')]",
          "dependsOn": [ "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]" ],
          "properties": { "cors": { "corsRules": [] } }
        },
        {
          "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
          "apiVersion": "2021-04-01",
          "name": "[concat(parameters('storageAccounts_name'), '/default/archive')]",
          "dependsOn": [ "[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_name'), 'default')]", "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]" ],
          "properties": {
            "publicAccess": "None"
          }
        },
        {
          "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
          "apiVersion": "2021-04-01",
          "name": "[concat(parameters('storageAccounts_name'), '/default/intermediate')]",
          "dependsOn": [ "[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_name'), 'default')]", "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]" ],
          "properties": {
            "publicAccess": "None"
          }
        },
        {
          "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
          "apiVersion": "2021-04-01",
          "name": "[concat(parameters('storageAccounts_name'), '/default/processed')]",
          "dependsOn": [ "[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_name'), 'default')]", "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]" ],
          "properties": {
            "publicAccess": "None"
          }
        },
        {
          "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
          "apiVersion": "2021-04-01",
          "name": "[concat(parameters('storageAccounts_name'), '/default/propectstest')]",
          "dependsOn": [ "[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_name'), 'default')]", "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]" ],
          "properties": {
            "publicAccess": "None"
          }
        },
        {
          "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
          "apiVersion": "2021-04-01",
          "name": "[concat(parameters('storageAccounts_name'), '/default/staging')]",
          "dependsOn": [ "[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_name'), 'default')]", "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]" ],
          "properties": {
            "publicAccess": "None"
          }
        },
        {
          "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
          "apiVersion": "2021-04-01",
          "name": "[concat(parameters('storageAccounts_name'), '/default/test-sandbox')]",
          "dependsOn": [ "[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_name'), 'default')]", "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_name'))]" ],
          "properties": {
            "publicAccess": "None"
          }
        }
      ]
    }