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.
En este artículo se describe cómo resolver errores de plantilla no válidos para archivos de Bicep y plantillas de Azure Resource Manager (plantillas de ARM). El error se produce por varios motivos, como un error de sintaxis, un valor de parámetro no válido o una dependencia circular.
Síntoma
Cuando se implementa una plantilla, recibes un error que indica:
Code=InvalidTemplate
Message=<varies>
El mensaje de error depende del tipo de error.
Causa
Este error puede deberse a varios tipos diferentes de errores. Normalmente implican un error estructural o sintaxis en la plantilla.
Solución 1: Error de sintaxis
Si recibe un mensaje de error que indica que se produjo un error en la validación de la plantilla, es posible que tenga un problema de sintaxis en la plantilla.
Code=InvalidTemplate
Message=Deployment template validation failed
Los errores de sintaxis pueden producirse porque las expresiones de plantilla tienen muchos elementos. Por ejemplo, la asignación de nombres en una cuenta de almacenamiento incluye pares de comillas simples o dobles, llaves, corchetes y paréntesis. Las expresiones también contienen funciones y caracteres como signos de dólar, comas y puntos.
Cuando reciba este tipo de error, revise la sintaxis de la expresión. Para identificar errores de plantilla, puede usar Visual Studio Code con la extensión de Bicep más reciente o la extensión de Herramientas de Azure Resource Manager.
Solución 2: Longitudes de segmento incorrectas
Se produce otro error de plantilla no válido cuando el nombre del recurso no tiene el formato correcto. Para resolver ese error, consulte Resolver errores por la falta de coincidencia de nombre y tipo.
Solución 3: El parámetro no es válido
Puede especificar los valores permitidos de un parámetro en una plantilla. Durante la implementación, si proporciona un valor que no es un valor permitido, recibirá un mensaje similar al siguiente error:
Code=InvalidTemplate;
Message=Deployment template validation failed: 'The provided value {parameter value}
for the template parameter {parameter name} is not valid. The parameter value is not
part of the allowed values
Compruebe la plantilla de los valores permitidos del parámetro y use un valor permitido durante la implementación. Para más información, consulte los valores permitidos para Bicep o las plantillas de Resource Manager.
Solución 4: Demasiados grupos de recursos de destino
Es posible que vea este error en implementaciones anteriores porque estaba limitado a cinco grupos de recursos de destino en una sola implementación. En mayo de 2020, ese límite se incrementó a 800 grupos de recursos. Para más información, consulte cómo realizar la implementación en varios grupos de recursos de Bicep o plantillas de Resource Manager.
Solución 5: Dependencia circular detectada
Este error se recibe cuando los recursos dependen entre sí de una manera que impida que se inicie la implementación. Una combinación de interdependencias hace que dos o más recursos esperen otros recursos que también están esperando. Por ejemplo, resource1
depende de resource3
, resource2
depende resource1
de y resource3
depende de resource2
. Normalmente, puede resolver este problema quitando dependencias innecesarias.
Bicep crea una dependencia implícita cuando un recurso usa el nombre simbólico de otro recurso. Normalmente, no es necesaria una dependencia explícita mediante dependsOn
. Para más información, consulte las dependencias de Bicep.
Para resolver una dependencia circular:
- En la plantilla, busque el recurso identificado en la dependencia circular.
- Para ese recurso, examine la
dependsOn
propiedad y cualquier uso de las funcionesreference
oresourceId
para ver de qué recursos depende. - Examina esos recursos para ver de cuáles recursos dependen. Siga las dependencias hasta que observe un recurso que depende del recurso original.
- Para los recursos implicados en la dependencia circular, examine cuidadosamente todos los usos de la
dependsOn
propiedad para identificar las dependencias que no son necesarias. Para solucionar problemas de implementación, quite las dependencias circulares. En lugar de eliminar el código, puede usar comentarios para que el código no se ejecute durante la siguiente implementación. Puede usar comentarios de una sola línea (//
) o comentarios de varias líneas (/* ... */
) en plantillas de ARM o archivosde Bicep. - Vuelva a implementar la plantilla.
Quitar valores de la dependsOn
propiedad puede provocar errores al implementar la plantilla. Si recibe un error, vuelva a agregar la dependencia a la plantilla. Si ha usado comentarios para omitir el código de la plantilla, puede quitar los comentarios para restaurar el código.
Si ese enfoque no resuelve la dependencia circular, considere la posibilidad de mover parte de la lógica de implementación a recursos secundarios (como extensiones o opciones de configuración). Configure esos recursos secundarios para que se implementen después de los recursos que intervienen en la dependencia circular. Por ejemplo, suponga que va a implementar dos máquinas virtuales pero debe establecer propiedades en cada una que hagan referencia a la otra. Puede implementarlas en el orden siguiente:
- VM1
- VM2
- La extensión en vm1 depende de vm1 y vm2. La extensión establece valores en vm1 que obtiene de vm2.
- La extensión en vm2 depende de vm1 y vm2. La extensión establece valores en vm2 que obtiene de vm1.
El mismo enfoque funciona para las aplicaciones de App Service. Considere la posibilidad de mover los valores de configuración a un recurso secundario del recurso de la aplicación. Puede implementar dos aplicaciones web en el orden siguiente:
- webapp1
- WebApp2
- La configuración de webapp1 depende de webapp1 y webapp2. Contiene la configuración de la aplicación con los valores recibidos de webapp2.
- La configuración de webapp2 depende de webapp1 y webapp2. Contiene la configuración de aplicación con valores de webapp1.
Solución 6: Validar la sintaxis de las plantillas exportadas
Después de implementar recursos en Azure, puede exportar el JSON de la plantilla de ARM y modificarlo para otras implementaciones. Debe validar la plantilla exportada para obtener la sintaxis correcta antes de usarla para implementar recursos.
Puede exportar una plantilla desde el portal, la CLI de Azure o Azure PowerShell. Hay recomendaciones si exportó la plantilla desde el recurso o el grupo de recursos, o desde el historial de implementación.
Después de exportar una plantilla de ARM, puede descompilar la plantilla JSON en Bicep. A continuación, use las mejores prácticas y el linter para validar tu código.
Para obtener más información, vaya a los siguientes artículos: