Operatory akcesorów Bicep
Operatory dostępu służą do uzyskiwania dostępu do zasobów podrzędnych, właściwości obiektów i elementów w tablicy. Możesz również użyć metody dostępu do właściwości, aby użyć niektórych funkcji.
Operator | Nazwisko |
---|---|
[] |
Akcesorium indeksu |
. |
Akcesorium funkcji |
:: |
Akcesorium zagnieżdżonego zasobu |
. |
Akcesorium do właściwości |
Akcesorium indeksu
array[integerIndex]
object['stringIndex']
Użyj metody dostępu indeksu, aby uzyskać element z tablicy lub właściwości z obiektu.
W przypadku tablicy podaj indeks jako liczbę całkowitą. Liczba całkowita odpowiada pozycji zerowej elementu do pobrania.
W przypadku obiektu podaj indeks jako ciąg. Ciąg pasuje do nazwy obiektu do pobrania.
Poniższy przykład pobiera element w tablicy.
var arrayVar = [
'Coho'
'Contoso'
'Fabrikam'
]
output accessorResult string = arrayVar[1]
Dane wyjściowe z przykładu:
Nazwisko | Typ | Wartość |
---|---|---|
accessorResult | string | "Contoso" |
Następny przykład pobiera właściwość na obiekcie.
var environmentSettings = {
dev: {
name: 'Development'
}
prod: {
name: 'Production'
}
}
output accessorResult string = environmentSettings['dev'].name
Dane wyjściowe z przykładu:
Nazwisko | Typ | Wartość |
---|---|---|
accessorResult | string | "Programowanie" |
Akcesorium funkcji
resourceName.functionName()
Dwie funkcje — getSecret i list* — obsługują operator dostępu do wywoływania funkcji. Te dwie funkcje są jedynymi funkcjami obsługującymi operator dostępu.
Przykład
Poniższy przykład odwołuje się do istniejącego magazynu kluczy, a następnie używa getSecret
go do przekazania wpisu tajnego do modułu.
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')
}
}
Akcesorium zagnieżdżonego zasobu
parentResource::nestedResource
Zagnieżdżony zasób to zasób zadeklarowany w ramach innego zasobu. Użyj metody dostępu ::
do zagnieżdżonego zasobu, aby uzyskać dostęp do tych zagnieżdżonych zasobów spoza zasobu nadrzędnego.
W ramach zasobu nadrzędnego odwołujesz się do zagnieżdżonego zasobu z tylko nazwą symboliczną. Przy odwoływania się do zagnieżdżonego zasobu należy używać tylko wtedy, gdy odwołujesz się do zagnieżdżonego zasobu spoza zasobu nadrzędnego.
Przykład
W poniższym przykładzie pokazano, jak odwoływać się do zagnieżdżonego zasobu z zasobu nadrzędnego i spoza zasobu nadrzędnego.
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
Akcesorium do właściwości
objectName.propertyName
Użyj metod dostępu właściwości, aby uzyskać dostęp do właściwości obiektu. Metody dostępu do właściwości mogą być używane z dowolnym obiektem, w tym parametrami i zmiennymi, które są obiektami. Podczas korzystania z dostępu do właściwości w wyrażeniu, które nie jest obiektem, występuje błąd.
Przykład
W poniższym przykładzie przedstawiono zmienną obiektu i sposób uzyskiwania dostępu do właściwości.
var x = {
y: {
z: 'Hello'
a: true
}
q: 42
}
output outputZ string = x.y.z
output outputQ int = x.q
Dane wyjściowe z przykładu:
Nazwisko | Typ | Wartość |
---|---|---|
outputZ |
string | "Hello" |
outputQ |
integer | 42 |
Zazwyczaj używasz metody dostępu właściwości z zasobem wdrożonym w pliku Bicep. Poniższy przykład tworzy publiczny adres IP i używa metod dostępu do właściwości w celu zwrócenia wartości z wdrożonego zasobu.
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
Następne kroki
- Aby uruchomić przykłady, użyj interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell, aby wdrożyć plik Bicep.
- Aby utworzyć plik Bicep, zobacz Szybki start: tworzenie plików Bicep za pomocą programu Visual Studio Code.
- Aby uzyskać informacje na temat sposobu rozwiązywania błędów typu Bicep, zobacz Any function for Bicep (Dowolna funkcja dla Bicep).