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@2023-04-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@2023-04-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.