Bicep erişimci işleçleri
Erişimci işleçleri alt kaynaklara, nesnelerdeki özelliklere ve bir dizideki öğelere erişmek için kullanılır. Bazı işlevleri kullanmak için özellik erişimcisini de kullanabilirsiniz.
Operatör | Veri Akışı Adı |
---|---|
[] |
Dizin erişimcisi |
. |
İşlev erişimcisi |
:: |
İç içe kaynak erişimcisi |
. |
Özellik erişimcisi |
Dizin erişimcisi
array[integerIndex]
object['stringIndex']
Diziden öğe veya nesneden bir özellik almak için dizin erişimcisini kullanın.
Dizi için dizini tamsayı olarak sağlayın. Tamsayı, alınacak öğenin sıfır tabanlı konumuyla eşleşir.
Bir nesne için dizini dize olarak sağlayın. Dize, alınacak nesnenin adıyla eşleşir.
Aşağıdaki örnek bir dizideki bir öğeyi alır.
var arrayVar = [
'Coho'
'Contoso'
'Fabrikan'
]
output accessorResult string = arrayVar[1]
Örnekten çıktı:
Adı | Tür | Değer |
---|---|---|
accessorResult | Dize | 'Contoso' |
Sonraki örnek bir nesne üzerinde bir özellik alır.
var environmentSettings = {
dev: {
name: 'Development'
}
prod: {
name: 'Production'
}
}
output accessorResult string = environmentSettings['dev'].name
Örnekten çıktı:
Adı | Tür | Değer |
---|---|---|
accessorResult | Dize | 'Geliştirme' |
İşlev erişimcisi
resourceName.functionName()
getSecret ve list* olmak üzere iki işlev, işlevi çağırmak için erişimci işlecini destekler. Bu iki işlev, erişimci işlecini destekleyen tek işlevlerdir.
Örnek
Aşağıdaki örnek mevcut bir anahtar kasasına başvurur ve ardından bir gizli diziyi modüle geçirmek için kullanır getSecret
.
resource kv 'Microsoft.KeyVault/vaults@2023-07-01' existing = {
name: kvName
scope: resourceGroup(subscriptionId, kvResourceGroup )
}
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
sqlServerName: sqlServerName
adminLogin: adminLogin
adminPassword: kv.getSecret('vmAdminPassword')
}
}
İç içe kaynak erişimcisi
parentResource::nestedResource
İç içe yerleştirilmiş kaynak, başka bir kaynak içinde bildirilen bir kaynaktır. İç içe yerleştirilmiş kaynaklara üst kaynağın dışından erişmek için iç içe kaynak erişimcisini ::
kullanın.
Üst kaynak içinde iç içe kaynağa yalnızca sembolik adla başvurursunuz. İç içe kaynak erişimcisini yalnızca üst kaynağın dışından iç içe kaynağa başvururken kullanmanız gerekir.
Örnek
Aşağıdaki örnekte, iç içe bir kaynağa üst kaynağın içinden ve üst kaynağın dışından nasıl başvuracakları gösterilmektedir.
resource demoParent 'demo.Rp/parentType@2024-01-01' = {
name: 'demoParent'
location: 'West US'
// Declare a nested resource within 'demoParent'
resource demoNested 'childType' = {
name: 'demoNested'
properties: {
displayName: 'The nested instance.'
}
}
// Declare another nested resource
resource demoSibling 'childType' = {
name: 'demoSibling'
properties: {
// Use symbolic name to reference because this line is within demoParent
displayName: 'Sibling of ${demoNested.properties.displayName}'
}
}
}
// Use nested accessor to reference because this line is outside of demoParent
output displayName string = demoParent::demoNested.properties.displayName
Özellik erişimcisi
objectName.propertyName
Bir nesnenin özelliklerine erişmek için özellik erişimcilerini kullanın. Özellik erişimcileri, nesneler olan parametreler ve değişkenler de dahil olmak üzere herhangi bir nesneyle kullanılabilir. Nesne olmayan bir ifadede özellik erişimini kullandığınızda hata alırsınız.
Örnek
Aşağıdaki örnek bir nesne değişkenini ve özelliklere nasıl erişeceklerini gösterir.
var x = {
y: {
z: 'Hello'
a: true
}
q: 42
}
output outputZ string = x.y.z
output outputQ int = x.q
Örnekten çıktı:
Adı | Tür | Değer |
---|---|---|
outputZ |
Dize | 'Hello' |
outputQ |
integer | 42 |
Genellikle özellik erişimcisini Bicep dosyasında dağıtılan bir kaynakla kullanırsınız. Aşağıdaki örnek bir genel IP adresi oluşturur ve dağıtılan kaynaktan bir değer döndürmek için özellik erişimcilerini kullanır.
resource publicIp 'Microsoft.Network/publicIPAddresses@2023-11-01' = {
name: publicIpResourceName
location: location
properties: {
publicIPAllocationMethod: dynamicAllocation ? 'Dynamic' : 'Static'
dnsSettings: {
domainNameLabel: publicIpDnsLabel
}
}
}
// Use property accessor to get value
output ipFqdn string = publicIp.properties.dnsSettings.fqdn
Sonraki adımlar
- Örnekleri çalıştırmak için Azure CLI veya Azure PowerShell kullanarak bir Bicep dosyası dağıtın.
- Bicep dosyası oluşturmak için bkz . Hızlı Başlangıç: Visual Studio Code ile Bicep dosyaları oluşturma.
- Bicep türü hatalarını çözme hakkında bilgi için bkz . Bicep için herhangi bir işlev.