Raw New Markdown
Generating updated version of doc...
Rendered New Markdown
Generating updated version of doc...
---
title: Template resource location
description: Describes how to set resource location in an Azure Resource Manager template (ARM template).
ms.topic: article
ms.custom: devx-track-arm-template
ms.date: 04/28/2025
---
# Set resource location in ARM template
When deploying an Azure Resource Manager template (ARM template), you must provide a location for each resource. The location doesn't need to be the same location as the resource group location.
## Get available locations
Different resource types are supported in different locations. To get the supported locations for a resource type, use Azure PowerShell or Azure CLI.
# [PowerShell](#tab/azure-powershell)
```azurepowershell-interactive
((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes `
| Where-Object ResourceTypeName -eq batchAccounts).Locations
```
# [Azure CLI](#tab/azure-cli)
```azurecli-interactive
az provider show \
--namespace Microsoft.Batch \
--query "resourceTypes[?resourceType=='batchAccounts'].locations | [0]" \
--out table
```
---
## Use location parameter
To allow for flexibility when deploying your template, use a parameter to specify the location for resources. Set the default value of the parameter to `resourceGroup().location`.
The following example shows a storage account that is deployed to a location specified as a parameter:
```json
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
],
"metadata": {
"description": "Storage Account type"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"variables": {
"storageAccountName": "[format('storage{0}', uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[variables('storageAccountName')]"
}
}
}
```
## Next steps
* For the full list of template functions, see [ARM template functions](template-functions.md).
* For more information about template files, see [Understand the structure and syntax of ARM templates](./syntax.md).