Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Para implementar un recurso a través de una plantilla de Azure Resource Manager (plantilla de ARM), agregue una declaración de recursos. Utilice la resources matriz en una plantilla JSON.
languageVersion 2.0 hace una lista de mejoras en las plantillas JSON de ARM, como cambiar la declaración de recursos de una matriz a un objeto. La mayoría de los ejemplos que se muestran en este artículo todavía usan resources array. Para obtener información específica de languageVersion 2.0, consulte Usar nombre simbólico.
Sugerencia
Se recomienda Bicep porque ofrece las mismas funcionalidades que las plantillas de ARM y la sintaxis es más fácil de usar. Para obtener más información, consulte Declaración de recursos.
Está limitado a 800 recursos en una plantilla. Para obtener más información, consulte Límites de plantilla.
Establecer el tipo y la versión del recurso
Al agregar un recurso a la plantilla, comience por establecer el tipo de recurso y la versión de la API. Estos valores determinan las demás propiedades que están disponibles para el recurso.
En el ejemplo siguiente se muestra cómo establecer el tipo de recurso y la versión de API para una cuenta de almacenamiento. En el ejemplo no se muestra la declaración de recursos completa.
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
...
}
]
Establecer el nombre del recurso
Cada recurso tiene un nombre. Al establecer el nombre del recurso, preste atención a las reglas y restricciones de los nombres de los recursos.
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]",
...
}
]
Establecer ubicación
Muchos recursos requieren una ubicación. Puede determinar si el recurso necesita una ubicación a través de IntelliSense o de la referencia de plantillas. En el ejemplo siguiente se agrega un parámetro de ubicación que se usa para la cuenta de almacenamiento.
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
...
}
]
Para obtener más información, consulte Establecimiento de la ubicación del recurso en la plantilla de Resource Manager.
Definición de etiquetas
Puede aplicar etiquetas a un recurso durante la implementación. Las etiquetas le ayudan a organizar de forma lógica los recursos implementados. Para ver ejemplos de las diferentes maneras de especificar las etiquetas, consulte Etiquetas de plantillas de ARM.
Establecimiento de propiedades específicas del recurso
Las propiedades anteriores son genéricas para la mayoría de los tipos de recursos. Después de establecer esos valores, tiene que establecer las propiedades que son específicas del tipo de recurso que va a implementar.
Use IntelliSense o la referencia de plantilla para determinar qué propiedades están disponibles y cuáles son necesarias. En el ejemplo siguiente se establecen las propiedades restantes para una cuenta de almacenamiento.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"functions": [],
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
]
}
Usar nombre simbólico
En Bicep, cada definición de recurso tiene un nombre simbólico. El nombre simbólico se utiliza para hacer referencia al recurso desde las otras partes del archivo de Bicep. Para admitir el nombre simbólico en las plantillas JSON de ARM, agregue languageVersion con la versión 2.0y cambie la definición de recurso de una matriz a un objeto. Cuando languageVersion se especifica para una plantilla, se debe especificar el nombre simbólico para los recursos de nivel raíz. Por ejemplo:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.ContainerService/managedClusters",
...
}
]
}
El JSON anterior se puede escribir en el siguiente JSON:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"resources": {
"aks": {
"type": "Microsoft.ContainerService/managedClusters",
...
}
}
}
Los nombres simbólicos distinguen mayúsculas de minúsculas. Los caracteres permitidos para los nombres simbólicos son letras, números y _. Los nombres simbólicos deben ser únicos en una plantilla, pero pueden superponerse con los nombres de variables, los nombres de parámetros y los nombres de salida de una plantilla. En el ejemplo siguiente, el nombre simbólico del recurso de la cuenta de almacenamiento tiene el mismo nombre que la salida.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": {
"myStorage": {
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
}
},
"outputs": {
"myStorage":{
"type": "object",
"value": "[reference('myStorage')]"
}
}
}
La función de referencia puede usar el nombre simbólico de un recurso, como se muestra en el ejemplo anterior. La función de referencia ya no puede usar el nombre de un recurso, por ejemplo, reference(parameters('storageAccountName')) no está permitida.
Si el recurso Deployments se utiliza en una implementación de nombre simbólico, utilice apiVersion 2020-09-01 o posterior.
Declarar los recursos existentes
Con languageVersion 2.0 y usando un nombre simbólico para la declaración de recursos, puede declarar los recursos existentes. Una propiedad de recurso de nivel superior hace "existing": true que ARM lea en lugar de implementar un recurso, como se muestra en el ejemplo siguiente:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"languageVersion": "2.0",
"resources": {
"storageAccount": {
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "storageacct",
"existing": true
}
},
"outputs": {
"saBlocksPlaintext": {
"type": "bool",
"value": "[ reference('storageAccount').supportsHttpsTrafficOnly]"
}
}
}
No es necesario que los recursos existentes definan ninguna propiedad distinta typede , apiVersion, y name.
Pasos siguientes
- Para implementar condicionalmente un recurso, consulte Implementación condicional en plantillas de ARM.
- Para establecer dependencias de recursos, consulte Definir el orden de implementación de recursos en plantillas de ARM.