アクセサー演算子は、子リソース、オブジェクトのプロパティ、および配列内の要素にアクセスするために使用されます。 プロパティ アクセサーを使用して、いくつかの関数を使用することもできます。
オペレーター | 名前 |
---|---|
[] |
Index アクセサー |
[^index] |
逆引きインデックス アクセサー |
. |
関数アクセサー |
:: |
入れ子になったリソース アクセサー |
. |
プロパティ アクセサー |
Index アクセサー
array[integerIndex]
object['stringIndex']
インデックス アクセサーを使用して、配列から要素を取得するか、オブジェクトからプロパティを取得します。
配列の場合は、インデックスを整数として指定します。 整数は、取得する要素の 0 から始まる位置と一致します。
オブジェクトの場合は、インデックスを文字列として指定します。 この文字列は、取得するオブジェクトの名前と一致します。
次の例では、配列内の要素を取得します。
var arrayVar = [
'Coho'
'Contoso'
'Fabrikam'
]
output accessorResult string = arrayVar[1]
例からの出力を次に示します。
名前 | タイプ | 価値 |
---|---|---|
accessorResult | ひも | 'Contoso' |
次の例では、オブジェクトのプロパティを取得します。
var environmentSettings = {
dev: {
name: 'Development'
}
prod: {
name: 'Production'
}
}
output accessorResult string = environmentSettings['dev'].name
例からの出力を次に示します。
名前 | タイプ | 価値 |
---|---|---|
accessorResult | ひも | 'Development' |
逆引きインデックス アクセサー
Bicep CLI バージョン 0.34.x 以降では、逆インデックス アクセサー演算子 (^
) を使用すると、末尾からカウントすることで配列から要素を取得できます。 この 1 から始まるインデックスは、 ^1
が最後の項目を返し、2 番目から最後 ^2
などを返します。 インデックスは 0 より大きい正の整数である必要があり、リテラルまたは整数に評価される式として指定できます。
array[^index]
インデックスが配列の長さを超えると、静的インデックスのコンパイル エラーが発生するか、動的インデックスの実行時エラーが発生します。
定数配列の場合、演算子はコンパイル時に評価されます。 パラメーターなどの動的入力の場合、評価はデプロイ時に行われます。
例
var items = [
'apple'
'banana'
'orange'
'grape'
]
output secondToLast string = items[^2]
例からの出力を次に示します。
名前 | タイプ | 価値 |
---|---|---|
secondToLast | ひも | 'orange' |
関数アクセサー
resourceName.functionName()
getSecret と list* の 2 つの関数は、関数を呼び出すためのアクセサー演算子をサポートします。 これら 2 つの関数は、アクセサー演算子をサポートする唯一の関数です。
例
次の例では、既存のキー コンテナーを参照し、 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')
}
}
入れ子になったリソース アクセサー
parentResource::nestedResource
入れ子になったリソースは、別のリソース内で宣言されているリソースです。 入れ子になったリソース アクセサー ::
を使用して、親リソースの外部から入れ子になったリソースにアクセスします。
親リソース内では、シンボル名のみを使用して入れ子になったリソースを参照します。 入れ子になったリソース アクセサーは、親リソースの外部から入れ子になったリソースを参照する場合にのみ必要です。
例
次の例は、親リソース内と親リソースの外部から入れ子になったリソースを参照する方法を示しています。
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
プロパティ アクセサー
objectName.propertyName
プロパティ アクセサーを使用して、オブジェクトのプロパティにアクセスします。 プロパティ アクセサーは、オブジェクトであるパラメーターや変数など、任意のオブジェクトと共に使用できます。 オブジェクトではない式でプロパティ アクセスを使用すると、エラーが発生します。
例
次の例は、オブジェクト変数とプロパティにアクセスする方法を示しています。
var x = {
y: {
z: 'Hello'
a: true
}
q: 42
}
output outputZ string = x.y.z
output outputQ int = x.q
例からの出力を次に示します。
名前 | タイプ | 価値 |
---|---|---|
outputZ |
ひも | 'Hello' |
outputQ |
整数 (integer) | 42 |
通常は、Bicep ファイルにデプロイされたリソースでプロパティ アクセサーを使用します。 次の例では、パブリック IP アドレスを作成し、プロパティ アクセサーを使用して、デプロイされたリソースから値を返します。
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
次のステップ
- この例を実行するには、Azure CLI または Azure PowerShell を使用して、Bicep ファイルをデプロイします。
- Bicep ファイルの作成方法については、「クイックスタート: Visual Studio Code を使用して Bicep ファイルを作成する」を参照してください。
- Bicep の型のエラーを解決する方法については、「Bicep の any 関数」を参照してください。