Linter kuralı - sabit kodlanmış konum yok
Bu kural parametrelenmemiş Azure konum değerlerinin kullanımlarını bulur.
Linter kural kodu
Kural ayarlarını özelleştirmek için Bicep yapılandırma dosyasında aşağıdaki değeri kullanın:
no-hardcoded-location
Çözüm
Şablon kullanıcıları, kaynak oluşturabilecekleri bölgelere sınırlı erişime sahip olabilir. Sabit kodlanmış bir kaynak konumu, kullanıcıların kaynak oluşturmasını engelleyerek şablonu kullanmalarını engelleyebilir. Kullanıcılar, kaynak grubu konumunu varsayılan olarak belirten bir konum parametresi sağlayarak, uygun olduğunda varsayılan değeri kullanabilir, ancak farklı bir konum da belirtebilir.
Sabit kodlanmış dize veya değişken değeri kullanmak yerine parametre, 'global' dizesi veya ifade kullanın (ancak veya değilresourceGroup().location
, bkz. no-loc-expr-outside-params).deployment().location
En iyi yöntem, kaynaklarınızın konumlarını ayarlamak için şablonunuzun adlı location
bir dize parametresine sahip olmasını önerir. Bu parametre varsayılan olarak kaynak grubuna veya dağıtım konumuna (resourceGroup().location
veya deployment().location
) sahip olabilir.
Kaynağın özelliği bir dize değişmez değeri kullandığından location
aşağıdaki örnek bu testte başarısız oluyor:
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
location: 'westus'
}
Yeni location
bir dize parametresi oluşturarak düzeltebilirsiniz (isteğe bağlı olarak varsayılan bir değere sahip olabilir - resourceGroup().location genellikle varsayılan olarak kullanılır):
param location string = resourceGroup().location
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
location: location
}
Bir konum parametresi oluşturmak ve dize değişmez değerini parametre adıyla değiştirmek için Hızlı Düzeltme'yi kullanın. Aşağıdaki ekran görüntüsüne bakın:
Kaynağın özelliği dize değişmez değeri olan bir değişken kullandığından location
aşağıdaki örnek bu testte başarısız olur.
var location = 'westus'
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
location: location
}
Değişkeni bir parametreye dönüştürerek düzeltebilirsiniz:
param location string = 'westus'
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
location: location
}
Aşağıdaki örnek, bir kaynağın location
özelliği için kullanılan bir modül parametresine dize değişmez değeri geçirildiğinden bu testte başarısız oluyor:
module m1 'module1.bicep' = {
name: 'module1'
params: {
location: 'westus'
}
}
burada module1.bicep şöyledir:
param location string
resource storageaccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'storageaccount'
location: location
kind: 'StorageV2'
sku: {
name: 'Premium_LRS'
}
}
Değer için yeni bir parametre oluşturarak hatayı düzeltebilirsiniz:
param location string // optionally with a default value
module m1 'module1.bicep' = {
name: 'module1'
params: {
location: location
}
}
Sonraki adımlar
Lint hakkında daha fazla bilgi için bkz . Bicep linter'i kullanma.