Compartir a través de


Regla de Linter: no hay expresiones de ubicación fuera de los valores predeterminados de parámetro

Esta regla busca resourceGroup().location o deployment().location usado fuera de un valor predeterminado de parámetro.

Código de regla de linter

Use el valor siguiente del archivo de configuración de Bicep para personalizar los valores de regla:

no-loc-expr-outside-params

Soluciones

resourceGroup().location y deployment().location solo se deben usar como valor predeterminado de un parámetro.

Los usuarios de plantilla pueden tener acceso limitado a las regiones donde pueden crear recursos. Las expresiones resourceGroup().location o deployment().location podrían bloquear a los usuarios si el grupo de recursos o la implementación se crearon en una región a la que el usuario no puede acceder, lo que les impide usar la plantilla.

El procedimiento recomendado sugiere que, para establecer las ubicaciones de los recursos, la plantilla debe tener un parámetro de cadena denominado location. Si establece el parámetro location en resourceGroup().location o deployment().location en el valor predeterminado en lugar de usar estas funciones en otra parte de la plantilla, los usuarios de la plantilla pueden usar el valor predeterminado cuando sea conveniente, pero también especificar una ubicación diferente cuando sea necesario.

resource storageaccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
  location: resourceGroup().location
}

Puede corregir el error mediante la creación de una propiedad location que tiene resourceGroup().location como valor predeterminado y use este nuevo parámetro en su lugar:

param location string = resourceGroup().location

resource storageaccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
  location: location
}

En el ejemplo siguiente se produce un error en esta prueba porque location use resourceGroup().location, pero no es un parámetro:

  var location = resourceGroup().location

Para corregir el error, puede convertir la variable en un parámetro:

  param location string  = resourceGroup().location

Si usa Azure PowerShell para realizar la implementación en una suscripción, un grupo de administración o un inquilino, debe usar un nombre de parámetro distinto de location. Los comandos New-AzDeployment, New-AzManagementGroupDeployment y New-AzTenantDeployment tienen un parámetro denominado location. Este parámetro de comando entra en conflicto con el parámetro del archivo de Bicep. Para evitar este conflicto, use un nombre como rgLocation.

Puede usar location para un nombre de parámetro al realizar la implementación en un grupo de recursos, ya que New-AzResourceGroupDeployment no tiene un parámetro llamado location.

Pasos siguientes

Para obtener más información acerca de linter, consulte Uso de linter de Bicep.