Linter kuralı - parametre varsayılan değerlerinin dışında konum ifadesi yok

Bu kural, parametre varsayılan değerini bulur resourceGroup().location veya deployment().location bu değerin dışında kullanılır.

Linter kural kodu

Kural ayarlarını özelleştirmek için Bicep yapılandırma dosyasında aşağıdaki değeri kullanın:

no-loc-expr-outside-params

Çözüm

resourceGroup().location ve deployment().location yalnızca parametrenin varsayılan değeri olarak kullanılmalıdır.

Şablon kullanıcıları, kaynak oluşturabilecekleri bölgelere sınırlı erişime sahip olabilir. Kaynak grubu veya dağıtım kullanıcının erişemediği bir bölgede oluşturulduysa, ifadeler resourceGroup().location veya deployment().location kullanıcıları engelleyebilir ve bu da şablonu kullanmalarını engeller.

En iyi yöntem, kaynaklarınızın konumlarını ayarlamak için şablonunuzun adlı locationbir dize parametresine sahip olmasını önerir. Parametresini resourceGroup().location deployment().location varsayılan olarak veya şablonun location başka bir yerinde kullanmak yerine kullanırsanız, şablonun kullanıcıları uygun olduğunda varsayılan değeri kullanabilir ancak gerektiğinde farklı bir konum da belirtebilir.

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

Varsayılan olarak resourceGroup().location şu yeni parametreyi kullanan bir location özellik oluşturarak hatayı düzeltebilirsiniz:

param location string = resourceGroup().location

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

Aşağıdaki örnek, parametresini kullandığından resourceGroup().location ancak parametre olmadığından bu testte location başarısız oluyor:

  var location = resourceGroup().location

Değişkeni bir parametreye dönüştürerek hatayı düzeltebilirsiniz:

  param location string  = resourceGroup().location

Bir aboneliğe, yönetim grubuna veya kiracıya dağıtmak için Azure PowerShell kullanıyorsanız, dışında locationbir parametre adı kullanmalısınız. New-AzDeployment, New-AzManagementGroupDeployment ve New-AzTenantDeployment komutlarının adlı locationbir parametresi vardır. Bu komut parametresi, Bicep dosyanızdaki parametreyle çakişer. gibi rgLocationbir ad kullanarak bu çakışmayı önleyebilirsiniz.

New-AzResourceGroupDeployment adlı bir parametre olmadığından, kaynak grubuna dağıtırken parametre locationadı için kullanabilirsinizlocation.

Sonraki adımlar

Lint hakkında daha fazla bilgi için bkz . Bicep linter'i kullanma.