Solución de errores comunes de implementación de Azure con Azure Resource Manager

En este artículo se describen algunos errores comunes de implementación de Azure y se proporciona información sobre cómo resolverlos. Si no encuentra el código del error de implementación, consulte Búsqueda de códigos de error.

Si busca información sobre un código de error y esa información no se proporciona en este artículo, háganoslo saber. En la parte inferior de esta página, puede dejar comentarios. Se realiza un seguimiento de los comentarios con problemas de GitHub.

Códigos de error

Código de error Mitigación Más información
AccountNameInvalid Siga las restricciones de nomenclatura para las cuentas de almacenamiento. Resolución del nombre de la cuenta de almacenamiento
AccountPropertyCannotBeSet Consulte las propiedades disponibles para la cuenta de almacenamiento. storageAccounts
AllocationFailed El clúster o la región no tienen recursos disponibles o no admiten el tamaño de máquina virtual solicitado. Vuelva a realizar la solicitud más adelante o solicite otro tamaño de máquina virtual. Problemas de aprovisionamiento y asignación en Linux, Problemas de aprovisionamiento y asignación en Windows y Solución de problemas de asignación
AnotherOperationInProgress Espere a que la operación simultánea finalice.
AuthorizationFailed La cuenta o entidad de servicio no dispone de acceso suficiente para completar la implementación. Compruebe el rol al que la cuenta pertenece y su acceso para el ámbito de implementación.

Puede recibir este error cuando un proveedor de recursos necesario no está registrado.
Control de acceso basado en roles de Azure (Azure RBAC)

Resolución de registros
BadRequest Envió valores de implementación que no coinciden con los que Resource Manager esperaba. Compruebe el mensaje de estado interno para obtener ayuda para solucionar el problema. Referencia de plantillas y ubicaciones admitidas
Conflicto Se solicita una operación no permitida con el estado actual del recurso. Por ejemplo, solo se permite el cambio de tamaño del disco al crear una VM o al desasignar la VM.
DeploymentActiveAndUneditable Espere a que la implementación simultánea de este grupo de recursos finalice.
DeploymentFailedCleanUp Al implementar en modo completo, se eliminará cualquier recurso que no esté en la plantilla. Obtendrá este error si no tiene los permisos adecuados para eliminar todos los recursos que no están en la plantilla. Para evitar el error, cambie el modo de implementación a incremental. Modos de implementación de Azure Resource Manager
DeploymentNameInvalidCharacters El nombre de la implementación solo puede contener letras, dígitos, "-", "." o "_".
DeploymentNameLengthLimitExceeded Los nombres de implementación se limitan a 64 caracteres.
DeploymentFailed El error DeploymentFailed es un error general que no proporciona la información necesaria para resolverlo. Mire en los detalles del error si hay un código de error que proporcione más información. Búsqueda de códigos de error
DeploymentQuotaExceeded Si se alcanza el límite de 800 implementaciones por grupo de recursos, elimine las implementaciones que ya no necesite del historial. Resolución de error cuando el recuento de implementaciones es superior a 800
DeploymentJobSizeExceeded Simplifique la plantilla para reducir el tamaño. Resolución de errores de tamaño de plantilla
DnsRecordInUse El nombre del registro de DNS debe ser único. Escribe otro nombre.
ImageNotFound Compruebe la configuración de la imagen de máquina virtual.
InUseSubnetCannotBeDeleted Este error puede aparecer al intentar actualizar un recurso y la solicitud se procesa mediante la eliminación y creación del recurso. Asegúrese de especificar todos los valores sin cambios. Actualización de recursos
InvalidAuthenticationTokenTenant Obtenga el token de acceso para el inquilino adecuado. Solo puede obtener el token del inquilino al que pertenece su cuenta.
InvalidContentLink Probablemente ha tratado de agregar un vínculo a una plantilla anidada que no está disponible. Compruebe el URI proporcionado para la plantilla anidada. Si la plantilla se encuentra en una cuenta de almacenamiento, asegúrese de que puede accederse al URI. Debe pasar un token de SAS. Actualmente, no se puede agregar un vínculo a una plantilla que se encuentre en una cuenta de almacenamiento detrás de un firewall de Azure Storage. De todos modos, tiene la posibilidad de mover la plantilla a otro repositorio, como GitHub. Plantillas vinculadas
InvalidDeploymentLocation Al realizar la implementación en el nivel de suscripción, ha proporcionado una ubicación diferente para un nombre de implementación usado previamente. Implementaciones de nivel de suscripción
InvalidParameter Uno de los valores proporcionados para un recurso no coincide con el valor esperado. Este error puede deberse a muchas condiciones diferentes. Por ejemplo, una contraseña puede ser insuficiente o un nombre de blob puede ser incorrecto. El mensaje de error debe indicar qué valor debe corregirse.
InvalidRequestContent Los valores de implementación incluyen valores que no se reconocen o valores requeridos que faltan. Confirme los valores para el tipo de recurso. Referencia de plantilla
InvalidRequestFormat Habilite el registro de depuración cuando se ejecute la implementación y compruebe el contenido de la solicitud. Registro de depuración
InvalidResourceNamespace Compruebe el espacio de nombres del recurso especificado en la propiedad type. Referencia de plantilla
InvalidResourceReference El recurso aún no existe o se hace referencia a él de forma incorrecta. Compruebe si tiene que agregar una dependencia. Compruebe que el uso de la función reference incluye los parámetros necesarios para su escenario. Resolución de dependencias
InvalidResourceType Compruebe el tipo de recurso especificado en la propiedad type. Referencia de plantilla
InvalidSubscriptionRegistrationState Registre la suscripción con el proveedor de recursos. Resolución de registros
InvalidTemplate Compruebe la sintaxis de la plantilla en busca de errores. Resolución de plantilla no válida
InvalidTemplateCircularDependency Quite las dependencias innecesarias. Resolver dependencias circulares
JobSizeExceeded Simplifique la plantilla para reducir el tamaño. Resolución de errores de tamaño de plantilla
LinkedAuthorizationFailed Compruebe si la cuenta pertenece al mismo inquilino que el grupo de recursos en que está realizando la implementación.
LinkedInvalidPropertyId El identificador de un recurso no se resuelve correctamente. Compruebe que ha proporcionado todos los valores necesarios para el identificador del recurso, entre otros, el identificador de la suscripción, el nombre del grupo de recursos, el tipo de recurso, el nombre del recurso principal (si procede) y el nombre del recurso.
LocationRequired Proporcione una ubicación para el recurso. Establecimiento de la ubicación
MismatchingResourceSegments Asegúrese de que el recurso anidado tiene el número correcto de segmentos de nombre y tipo. Resolver los segmentos de recursos
MissingRegistrationForLocation Compruebe el estado de registro del proveedor de recursos y las ubicaciones admitidas. Resolución de registros
MissingSubscriptionRegistration Registre la suscripción con el proveedor de recursos. Resolución de registros
NoRegisteredProviderFound Compruebe el estado de registro del proveedor de recursos. Resolución de registros
NotFound Puede que esté intentando implementar un recurso dependiente en paralelo con un recurso principal. Compruebe si tiene que agregar una dependencia. Resolución de dependencias
OperationNotAllowed La implementación trata de realizar una operación que excede la cuota de la suscripción, del grupo de recursos o de la región. Si es posible, revise la implementación para respetar las cuotas. De lo contrario, considere la posibilidad de solicitar un cambio de las cuotas. Resolución de cuotas
ParentResourceNotFound Asegúrese de que existe un recurso principal antes de crear los recursos secundarios. Resolución del recurso principal
PasswordTooLong Puede que haya seleccionado una contraseña con demasiados caracteres, o que haya convertido el valor de contraseña en una cadena segura antes de pasarlo como parámetro. Si la plantilla incluye un parámetro de cadena segura, no es necesario convertir el valor en una cadena segura. Proporcione el valor de contraseña como texto.
PrivateIPAddressInReservedRange La dirección IP especificada incluye un intervalo de direcciones requerido por Azure. Cambie la dirección IP para evitar el intervalo reservado. Direcciones IP
PrivateIPAddressNotInSubnet La dirección IP especificada está fuera del intervalo de subred. Cambie la dirección IP para que esté dentro del intervalo de subred. Direcciones IP
PropertyChangeNotAllowed Algunas propiedades no se pueden cambiar en un recurso implementado. Al actualizar un recurso, limite los cambios a las propiedades permitidas. Actualización de recursos
RequestDisallowedByPolicy La suscripción incluye una directiva de recursos que impide una acción que está tratando de realizar durante la implementación. Busque la directiva que bloquea la acción. Si es posible, cambie la implementación para cumplir con las limitaciones de la directiva. Resolución de directivas
ReservedResourceName Proporcione un nombre de recurso que no incluya un nombre reservado. Nombres de recurso reservados
ResourceGroupBeingDeleted Espere a que la eliminación finalice.
ResourceGroupNotFound Compruebe el nombre del grupo de recursos de destino para la implementación. El grupo de recursos de destino ya debe existir en la suscripción. Compruebe el contexto de la suscripción. CLI de Azure PowerShell
ResourceNotFound La implementación hace referencia a un recurso que no se puede resolver. Compruebe que el uso de la función reference incluye los parámetros necesarios para su escenario. Resolución de referencias
ResourceQuotaExceeded La implementación trata de crear recursos que exceden la cuota de la suscripción, del grupo de recursos o de la región. Si es posible, revise la infraestructura para respetar las cuotas. De lo contrario, considere la posibilidad de solicitar un cambio de las cuotas. Resolución de cuotas
SkuNotAvailable Seleccione la SKU (como el tamaño de la máquina virtual) que está disponible para la ubicación seleccionada. Resolución de SKU
StorageAccountAlreadyExists Proporcione un nombre único para la cuenta de almacenamiento. Resolución del nombre de la cuenta de almacenamiento
StorageAccountAlreadyTaken Proporcione un nombre único para la cuenta de almacenamiento. Resolución del nombre de la cuenta de almacenamiento
StorageAccountNotFound Compruebe la suscripción, el grupo de recursos y el nombre de la cuenta de almacenamiento que intenta utilizar.
SubnetsNotInSameVnet Una máquina virtual solo puede tener una red virtual. Al implementar varias NIC, asegúrese de que pertenecen a la misma red virtual. Varias NIC
SubscriptionNotFound No se puede acceder a una suscripción especificada para la implementación. Podría deberse a que el identificador de la suscripción sea incorrecto, a que el usuario que implemente la plantilla carezca de los permisos adecuados para implementar en la suscripción o a que el identificador de la suscripción tenga un formato incorrecto. Al usar implementaciones anidadas para implementar entre ámbitos, proporcione el GUID de la suscripción.
SubscriptionNotRegistered Al implementar un recurso, se debe registrar el proveedor de recursos para la suscripción. Cuando se usa una plantilla de Azure Resource Manager para la implementación, el proveedor de recursos se registra automáticamente en la suscripción. A veces, el registro automático no se completa a tiempo. Para evitar este error intermitente, registre el proveedor de recursos antes de la implementación. Resolución de registros
TemplateResourceCircularDependency Quite las dependencias innecesarias. Resolver dependencias circulares
TooManyTargetResourceGroups Reduzca el número de grupos de recursos de una sola implementación. Implementaciones entre ámbitos

Búsqueda de códigos de error

Hay dos tipos de errores que puede recibir:

  • Errores de validación
  • Errores de implementación

Los errores de validación que provienen de escenarios que se pueden determinar antes de la implementación incluyen los errores de sintaxis en la plantilla o tratar de implementar los recursos que superarían las cuotas de suscripción. Errores de implementación que provengan de condiciones que se producen durante el proceso de implementación. Incluyen intentar acceder a un recurso que se está implementando en paralelo.

Los dos tipos de errores devuelven un código de error que utiliza para solucionar problemas de implementación. Ambos aparecen en el registro de actividad. Sin embargo, los errores de validación no aparecen en el historial de implementación porque la implementación nunca se inicia.

Errores de validación

Al implementar a través del portal, verá un error de validación después de enviar sus valores.

vista del error de validación en el portal

Seleccione el mensaje para más detalles. En la siguiente imagen, verá un error InvalidTemplateDeployment y un mensaje que indica que una directiva está bloqueando la implementación.

vista de los detalles de validación

Errores de implementación

Cuando la operación pasa la validación, pero se produce un error durante la implementación, recibirá un error de implementación.

Para ver los mensajes y códigos de error de implementación con PowerShell, use:

(Get-AzResourceGroupDeploymentOperation -DeploymentName exampledeployment -ResourceGroupName examplegroup).Properties.statusMessage

Para ver los mensajes y códigos de error de implementación con la CLI de Azure, use:

az deployment operation group list --name exampledeployment -g examplegroup --query "[*].properties.statusMessage"

En el portal, seleccione la notificación.

notificación de error

Verá más detalles acerca de la implementación. Seleccione la opción para más información sobre el error.

error de implementación

Verá el mensaje de error y los códigos de error. Observe que hay dos códigos de error. El primero (DeploymentFailed) es un error general que no proporciona la información que necesita para resolverlo. El segundo código de error (StorageAccountNotFound) proporciona los detalles que necesita.

detalles del error

Habilitación del registro de depuración

En ocasiones necesitará más información sobre la solicitud y respuesta para descubrir qué ha salido mal. Durante la implementación, puede solicitar que la información adicional se registre durante una implementación.

PowerShell

En PowerShell, establezca el parámetro DeploymentDebugLogLevel en Todos, ResponseContent o RequestContent.

New-AzResourceGroupDeployment `
  -Name exampledeployment `
  -ResourceGroupName examplegroup `
  -TemplateFile c:\Azure\Templates\storage.json `
  -DeploymentDebugLogLevel All

Examine el contenido de la solicitud con el siguiente cmdlet:

(Get-AzResourceGroupDeploymentOperation `
-DeploymentName exampledeployment `
-ResourceGroupName examplegroup).Properties.request `
| ConvertTo-Json

O bien, la respuesta de contenido con:

(Get-AzResourceGroupDeploymentOperation `
-DeploymentName exampledeployment `
-ResourceGroupName examplegroup).Properties.response `
| ConvertTo-Json

Esta información puede ayudarlo a determinar si un valor en la plantilla se está estableciendo de forma incorrecta.

Azure CLI

Actualmente, la CLI de Azure no admite activar el registro de depuración, pero sí puede recuperarlo.

Examine las operaciones de implementación con el siguiente comando:

az deployment operation group list \
  --resource-group examplegroup \
  --name exampledeployment

Examine el contenido de la solicitud con el siguiente comando:

az deployment operation group list \
  --name exampledeployment \
  -g examplegroup \
  --query [].properties.request

Examine el contenido de la respuesta con el siguiente comando:

az deployment operation group list \
  --name exampledeployment \
  -g examplegroup \
  --query [].properties.response

Plantilla anidada

Para registrar la información de depuración de una plantilla anidada, use el elemento debugSetting.

{
  "type": "Microsoft.Resources/deployments",
  "apiVersion": "2020-10-01",
  "name": "nestedTemplate",
  "properties": {
    "mode": "Incremental",
    "templateLink": {
      "uri": "{template-uri}",
      "contentVersion": "1.0.0.0"
    },
    "debugSetting": {
       "detailLevel": "requestContent, responseContent"
    }
  }
}

Creación de una plantilla de solución de problemas

En algunos casos, la manera más fácil de solucionar problemas de plantillas es comprobando sus elementos. Puede crear una plantilla simplificada que le permita centrarse en lo que crea que está provocando el error. Por ejemplo, supongamos que se recibe un error al hacer referencia a un recurso. En lugar de trabajar directamente con una plantilla de toda, cree una plantilla que devuelva la parte que pueda estar causando el problema. Esto puede ayudarlo a determinar si está pasando los parámetros correctos con las funciones de plantilla correctamente y obteniendo el recurso esperado.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
  "storageName": {
    "type": "string"
  },
  "storageResourceGroup": {
    "type": "string"
  }
  },
  "variables": {},
  "resources": [],
  "outputs": {
  "exampleOutput": {
    "value": "[reference(resourceId(parameters('storageResourceGroup'), 'Microsoft.Storage/storageAccounts', parameters('storageName')), '2016-05-01')]",
    "type" : "object"
  }
  }
}

Supongamos que se están produciendo errores de implementación que cree que están relacionados con dependencias establecidas incorrectamente. Pruebe la plantilla dividiéndola en plantillas simplificadas. En primer lugar, cree una plantilla que implemente solo un único recurso (por ejemplo, un servidor SQL Server). Cuando esté seguro de que tiene dicho recurso definido correctamente, agregue un recurso que dependa de él (por ejemplo, SQL Database). Cuando esos dos recursos se definan correctamente, agregue otros recursos dependientes (por ejemplo, las directivas de auditoría). Entre cada implementación de prueba, elimine el grupo de recursos para asegurarse de que se prueban adecuadamente las dependencias.

Pasos siguientes