Share via


Inicio rápido: Solución de problemas de implementaciones de archivos Bicep

En este inicio rápido se describe cómo solucionar errores de implementación de archivos Bicep. Creará un archivo con errores y aprenderá a corregirlos.

Hay tres tipos de errores relacionados con una implementación:

  • Errores de validación, que se producen antes de que comience una implementación y son debidos a errores de sintaxis en el archivo. Un editor de código como Visual Studio Code puede identificar estos errores.
  • Los errores de validación previa se producen cuando se ejecuta un comando de implementación, pero los recursos no están implementados. Estos errores se encuentran sin iniciar la implementación. Por ejemplo, si un valor de parámetro es incorrecto, el error se encuentra en la validación previa.
  • Durante el proceso de implementación se producen errores de implementación, que solo se pueden encontrar evaluando el progreso de implementación en su entorno Azure.

Todos los tipos de errores devuelven un código de error que se usa para solucionar problemas de implementación. Los errores de validación y de comprobación previa se muestran en el registro de actividad, pero no aparecen en el historial de implementación. Un archivo Bicep con errores de sintaxis no se compila en JSON y no se muestra en el registro de actividad.

Prerrequisitos

Para completar este inicio rápido, necesita los siguientes elementos:

Creación de un archivo Bicep con errores

Copie el siguiente archivo Bicep y guárdelo localmente. Lo usará para solucionar problemas de validación, previos y de implementación. En este inicio rápido se da por supuesto que el archivo tiene el nombre troubleshoot.bicep, pero puede darle cualquier otro.

@description('SKU for the storage account')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
parameter storageAccountType string = 'Standard_LRS'

@description('Prefix for storage name.')
param prefixName string

var storageAccountName = '${prefixName}${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: storageAccountName
  location: resourceGroup().location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

resource existingVNet 'Microsoft.Network/virtualNetworks@2021-03-01' existing = {
  name: 'doesnotexist'
}

output storageAccountName string = storageAccountName
output vnetResult object = existingVNet

Corrección del error de validación

Abra el archivo en Visual Studio Code. Observará que Visual Studio Code identifica un error de sintaxis. La primera declaración de parámetro se marca con ondulados rojos para indicar un error.

Captura de pantalla de Visual Studio Code con subrayado rojo que resalta un error de sintaxis en un archivo Bicep.

Las líneas marcadas con un error son:

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
parameter storageAccountType string = 'Standard_LRS'

Al mantener el puntero sobre parameter, verá un mensaje de error.

Captura de pantalla de un mensaje de error detallado que se muestra en Visual Studio Code al mantener el mouse sobre un error de sintaxis en un archivo Bicep.

El mensaje indica: No se reconoce este tipo de declaración.Especifique un parámetro, una variable, un recurso o una declaración de salida". Si intenta implementar este archivo, el comando de implementación le enviará el mismo mensaje de error.

Si examina la documentación de una declaración de parámetro, verá que la palabra clave es realmente param. Al cambiar esa sintaxis, el error de validación desaparece. El decorador @allowed también se marcó como un error, pero ese error también se resuelve cambiando la declaración del parámetro. El decorador se marcó como error porque se espera una declaración de parámetro después de este. Esta condición no era verdadera cuando la declaración era incorrecta.

La línea corregida es:

param storageAccountType string = 'Standard_LRS'

Corrección del error previo

Ahora que ha corregido el error de validación, es el momento de implementar el archivo. Sin embargo, proporcionará un valor de parámetro no válido para ver un error previo.

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.bicep \
  --parameters prefixName=longNamewith!!Charactersthatarenotallowed

Azure Resource Manager determina que el nombre de la cuenta de almacenamiento contiene caracteres que no se permiten. No intenta realizar la implementación.

Verá un mensaje de error que indica que se produjo un error en la validación previa. También recibirá un mensaje que indica que el nombre de la cuenta de almacenamiento debe tener entre 3 y 24 caracteres y usar solo números y letras minúsculas. El prefijo que proporcionó no cumplía ese requisito. Para más información sobre esto código de error, consulte Resolución de errores de nombres de cuenta de almacenamiento.

Dado que el error se ha capturado en la fase de preparación, no existe ninguna implementación en el historial.

Captura de pantalla de una sección del historial de implementación de Azure Portal que muestra que no existen implementaciones de un archivo Bicep.

Sin embargo, la implementación con errores sí aparece en el registro de actividad.

Captura de pantalla del registro de actividad de Azure Portal que muestra un error de validación de comprobaciones previas en la implementación de un archivo Bicep.

Puede abrir los detalles de la entrada del registro para ver el mensaje de error.

Corrección del error de implementación

Implementará el archivo de nuevo y proporcionará un valor permitido para el parámetro de prefijo de nombre.

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.bicep \
  --parameters prefixName=stg

La implementación se inicia, pero se produce un error y aparece un mensaje que indica que no se encontró la red virtual. Normalmente, este error se corregiría cambiando la referencia al recurso. En este inicio rápido, eliminará la referencia. Para más información sobre este código de error, consulte Resolución de errores de recursos no encontrados.

Observe en el portal que la implementación aparece en el historial.

Captura de pantalla de una sección del historial de implementación de Azure Portal que muestra que una implementación errónea de un archivo Bicep.

Puede abrir la entrada en el historial de implementación para obtener detalles sobre el error. El error también aparece en el registro de actividad.

El archivo Bicep intenta hacer referencia a una red virtual que no existe en el grupo de recursos. Para corregir el error, elimine la referencia a la red virtual existente.

@description('SKU for the storage account')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
param storageAccountType string = 'Standard_LRS'

@description('Prefix for storage name.')
param prefixName string

var storageAccountName = '${prefixName}${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: storageAccountName
  location: resourceGroup().location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

output storageAccountName string = storageAccountName

Puede implementar ese archivo Bicep sin errores.

Limpieza de recursos

Cuando los recursos de Azure ya no sean necesarios, elimine el grupo de recursos. Puede eliminar el grupo de recursos desde Cloud Shell o el portal.

az group delete --name troubleshootRG

Para eliminar el grupo de recursos del portal, siga estos pasos:

  1. En Azure Portal, escriba Grupo de recursos en el cuadro de búsqueda.
  2. Escriba el nombre del grupo de recursos en el campo Filtrar por nombre.
  3. Seleccione el nombre del grupo de recursos.
  4. Seleccione Eliminar grupo de recursos.
  5. Para confirmar la eliminación, escriba el nombre del grupo de recursos y seleccione Eliminar.

Pasos siguientes

En este inicio rápido, ha aprendido a solucionar errores de implementación de archivos Bicep.