この記事では、リソース値を取得するためのBicep関数について説明します。
現在のデプロイから値を取得するには、「Deployment value functions (デプロイ値関数)」を参照してください。
this名前空間
this名前空間は、リソース定義内で実行時のリソース状態発見のための関数を提供します。 これらの機能により、テンプレートは環境に既にリソースが存在するかどうかに応じて設定を適応させることができます。
-
this.exists()リソースが現在存在しているかどうかを示すブール値を返します。 -
this.existingResource(): はリソースのオブジェクト表現が存在する場合は返し、存在しなければnullを返します。
存在する
this.exists()
リソースが現在Azureに存在しているかどうかを示すブール値を返します。 この関数は展開時に評価され、既存のリソース宣言を別々に必要とせずに条件付き論理を扱うためのリソースプロパティ割り当て内での使用を意図しています。
ネームスペース: これ
例
resource stg 'Microsoft.Storage/storageAccounts@2026-04-01' = {
name: 'mystorageaccount'
location: 'eastus'
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties:{
accessTier: this.exists() ? this.existingResource()!.properties.accessTier : 'Cold'
}
}
existingResource
this.existingResource()
リソースが存在する場合はオブジェクト表現を返し、存在しなければ null 返します。 この関数は this.exists()とペアリングされます。
exists()は単純なブール値を返しますが、existingResource()は実際のリソースオブジェクトを返します。 ネストされたプロパティには、 null-forgiving operator(!) や safe navigation operator(?)を使うことで安全にアクセスできます。
ネームスペース: これ
例
resource stg 'Microsoft.Storage/storageAccounts@2026-04-01' = {
name: 'mystorageaccount'
location: 'eastus'
sku: {
name: 'Standard_LRS' }
kind: 'StorageV2'
properties:{
accessTier: this.existingResource().?properties.accessTier ?? 'Cold'
}
}
extensionResourceId
extensionResourceId(resourceId, resourceType, resourceName1, [resourceName2], ...)
拡張リソースのリソース ID を返します。 拡張リソースとは、他のリソースに適用してその機能を追加するリソースタイプです。
名前空間: az。
最初の引数は、拡張リソースが適用されるリソースの完全限定リソースIDでなければなりません。 この要件は、サブスクリプションやリソースグループなど、下位のスコープからテナントレベルのリソースを展開する場合に特に重要です。 テナントスコープで解決された値が、展開が下位スコープから始まると失敗することがあります。
BicepファイルでextensionResourceId機能は使えますが、通常は必要ありません。 代わりに、リソースのシンボリック名を使用して、id プロパティにアクセスします。
idプロパティは完全適格なリソースIDを返します。
この関数から返されるリソース ID の基本形式は次のとおりです。
{scope}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
スコープ セグメントは、拡張されるリソースによって変わります。
拡張リソースをリソースに適用 すると、リソースIDは以下の形式で返されます。
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{baseResourceProviderNamespace}/{baseResourceType}/{baseResourceName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
拡張リソースを リソースグループに適用すると、形式は次のようになります:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
サブスクリプションに拡張機能リソースを適用すると、形式は以下の通りです:
/subscriptions/{subscriptionId}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
拡張リソースを 管理グループに適用すると、形式は以下の通りです。
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
管理グループにデプロイされたカスタム ポリシー定義は、拡張リソースとして実装されます。 ポリシーを作成して割り当てるには、次のBicep ファイルを管理グループに展開します。
targetScope = 'managementGroup'
@description('An array of the allowed locations, all other locations will be denied by the created policy.')
param allowedLocations array = [
'australiaeast'
'australiasoutheast'
'australiacentral'
]
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2025-03-01' = {
name: 'locationRestriction'
properties: {
policyType: 'Custom'
mode: 'All'
parameters: {}
policyRule: {
if: {
not: {
field: 'location'
in: allowedLocations
}
}
then: {
effect: 'deny'
}
}
}
}
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2025-03-01' = {
name: 'locationAssignment'
properties: {
policyDefinitionId: policyDefinition.id
}
}
組み込みのポリシー定義は、テナント レベルのリソースです。 組み込みのポリシー定義をデプロイする例については、「tenantResourceId」を参照してください。
getSecret
keyVaultName.getSecret(secretName)
Azure Key Vaultからシークレットを返します。 この関数を使用して、Bicep モジュールのセキュリティで保護された文字列パラメーターにシークレットを渡します。
注
az.getSecret(subscriptionId, resourceGroupName, keyVaultName, secretName, secretVersion)ファイルの.bicepparam機能を使ってキーボールトの秘密を取得してください。 詳細については、「getSecret」を参照してください。
getSecret 関数は、モジュールの params セクション内からしか使用できません。
Microsoft.KeyVault/vaults リソースでのみ使用できます。
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
adminPassword: keyVault.getSecret('vmAdminPassword')
}
}
Bicep ファイルの他の部分でこの関数を使用しようとすると、エラーが発生します。 また、パラメーター セクションで使用されている場合でも、文字列補間でこの関数を使用するとエラーが発生します。
この関数は、 @secure() デコレーターを持つモジュールパラメータでのみ使用してください。
キー コンテナーでは、enabledForTemplateDeployment を true に設定する必要があります。 Bicep ファイルをデプロイするユーザーは、シークレットにアクセスできる必要があります。 詳細については、「デプロイ時にセキュリティで保護されたパラメーター値を渡すAzure Key Vaultを使用するBicepを参照してください。
この関数はリソースの種類と共に使用されるため、namespace 修飾子は必要ありません。
パラメーター
| パラメーター | 必須 | タイプ | 説明 |
|---|---|---|---|
| シークレット名 | はい | 文字列 | Key Vault に格納されているシークレットの名前。 |
戻り値
シークレット名のシークレット値。
例
次のBicep ファイルはモジュールとして使用されます。 これには、adminPassword パラメーターが @secure() デコレーターで定義されています。
param sqlServerName string
param adminLogin string
@secure()
param adminPassword string
resource sqlServer 'Microsoft.Sql/servers@2024-11-01-preview' = {
...
}
次のBicep ファイルは、上記のBicep ファイルをモジュールとして使用します。 Bicep ファイルは既存のキー コンテナーを参照し、getSecret 関数を呼び出してキー コンテナー シークレットを取得し、値をパラメーターとしてモジュールに渡します。
param sqlServerName string
param adminLogin string
param subscriptionId string
param kvResourceGroup string
param kvName string
resource keyVault 'Microsoft.KeyVault/vaults@2025-05-01' existing = {
name: kvName
scope: resourceGroup(subscriptionId, kvResourceGroup )
}
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
sqlServerName: sqlServerName
adminLogin: adminLogin
adminPassword: keyVault.getSecret('vmAdminPassword')
}
}
リスト*
resourceName.list([apiVersion], [functionValues])
list で始まる操作を使用して、任意のリソースの種類に対して list 関数を呼び出すことができます。 一般的に使用されるものとして、list、listKeys、listKeyValue、listSecrets があります。
この関数の構文は、リスト操作の名前によって異なります。 戻り値も操作によって異なります。 Bicepは現在、list* 関数の入力候補と検証をサポートしていません。
Bicep CLI バージョン 0.4.X 以降 では、accessor 演算子 を使用して list 関数を呼び出します。 たとえば、storageAccount.listKeys() のようにします。
この関数はリソースの種類と共に使用されるため、namespace 修飾子は必要ありません。
パラメーター
| パラメーター | 必須 | タイプ | 説明 |
|---|---|---|---|
| apiVersion (英語) | いいえ | 文字列 | このパラメーターを指定しない場合は、リソースの API バージョンが使用されます。 特定のバージョンで関数を実行する必要がある場合にのみ、カスタム API バージョンを指定します。 yyyy-mm-dd の形式を使用します。 |
| functionValues | いいえ | オブジェクト | 関数の値を持つオブジェクト。 このオブジェクトは、ストレージ アカウントの listAccountSas など、パラメーター値を持つオブジェクトの受信をサポートする関数に対してのみ指定します。 関数値を渡す例をこの記事で紹介します。 |
有効な使用方法
リソース定義のプロパティに使う list 関数を活用してください。 Bicepファイルのlistセクションで機密情報を露出させるoutputs機能は使わないでください。 出力値はデプロイ履歴に保存されており、悪意のあるユーザーがそれを取得する可能性があります。
listを持つ関数を使う場合、その式がリソースプロパティに割り当てられているため、inputに利用できます。
countでは、list関数を解決する前にカウントを決定しなければならないため使えません。
条件付きでデプロイされるリソースで list 関数を使用した場合、この関数は、リソースがデプロイされていなくても評価されます。
list 関数が存在しないリソースを参照している場合、エラーが返されます。
条件式?: 演算子を使用して、リソースがデプロイされているときにのみ関数が評価されるようにします。
use-recognized-resource-typeリンタールールは、認識されていないまたは無効なリソースタイプを使用している参照リソースにフラグを立てます。
戻り値
返されるオブジェクトは、使用する list 関数によって異なります。 例えば、ストレージアカウントの listKeys 関数は以下の形式を返します:
{
"keys": [
{
"keyName": "key1",
"permissions": "Full",
"value": "{value}"
},
{
"keyName": "key2",
"permissions": "Full",
"value": "{value}"
}
]
}
他の list 関数の戻り値の形式はさまざまです。 関数の形式を見るには、例Bicepファイルのoutputsセクションに含めてください。
リストの例
次の例では、ストレージ アカウントをデプロイし、そのストレージ アカウントで listKeys を呼び出します。 このキーは、デプロイ スクリプトの値を設定するときに使用されます。
resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'dscript${uniqueString(resourceGroup().id)}'
location: location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
resource dScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
name: 'scriptWithStorage'
location: location
...
properties: {
azCliVersion: '2.0.80'
storageAccountSettings: {
storageAccountName: storageAccount.name
storageAccountKey: storageAccount.listKeys().keys[0].value
}
...
}
}
次の例は、パラメーターを受け取る list 関数を示しています。 この例では、関数は listAccountSas です。 有効期限のオブジェクトを渡します。 有効期限は将来の日付にする必要があります。
param accountSasProperties object {
default: {
signedServices: 'b'
signedPermission: 'r'
signedExpiry: '2020-08-20T11:00:00Z'
signedResourceTypes: 's'
}
}
...
sasToken: storageAccount.listAccountSas('2021-04-01', accountSasProperties).accountSasToken
実装
以下の表は list* 関数の可能な用途を示しています。
| リソースの種類 | 関数名 |
|---|---|
| Microsoft。Addons/supportProviders | listsupportplaninfo |
| Microsoft。AnalysisServices/servers | listGatewayStatus |
| Microsoft。ApiManagement/service/authorizationServers | listSecrets |
| Microsoft。ApiManagement/service/gateways | listKeys |
| Microsoft。ApiManagement/service/identityProviders | listSecrets |
| Microsoft。ApiManagement/service/namedValues | listValue |
| Microsoft。ApiManagement/service/openidConnectProviders | listSecrets |
| Microsoft。ApiManagement/service/subscriptions | listSecrets |
| Microsoft。AppConfiguration/configurationStores | ListKeys |
| Microsoft。AppPlatform/Spring | listTestKeys |
| Microsoft。Automation/automationAccounts | listKeys |
| Microsoft。Batch/batchAccounts | listkeys |
| Microsoft。BatchAI/workspaces/experiments/jobs | listoutputfiles |
| Microsoft。BotService/botServices/channels | listChannelWithKeys |
| Microsoft。Cache/redis | listKeys |
| Microsoft。CognitiveServices/accounts | listKeys |
| Microsoft。ContainerRegistry/registries | listCredentials |
| Microsoft。ContainerRegistry/registries | listUsages |
| Microsoft。ContainerRegistry/registries/agentpools | listQueueStatus |
| Microsoft。ContainerRegistry/registries/buildTasks | listSourceRepositoryProperties |
| Microsoft。ContainerRegistry/registries/buildTasks/steps | listBuildArguments |
| Microsoft。ContainerRegistry/registries/taskruns | listDetails |
| Microsoft。ContainerRegistry/registries/webhooks | listEvents |
| Microsoft。ContainerRegistry/registries/runs | listLogSasUrl |
| Microsoft。ContainerRegistry/registries/tasks | listDetails |
| Microsoft。ContainerService/managedClusters | listClusterAdminCredential |
| Microsoft。ContainerService/managedClusters | listClusterMonitoringUserCredential |
| Microsoft。ContainerService/managedClusters | listClusterUserCredential |
| Microsoft。ContainerService/managedClusters/accessProfiles | listCredential |
| Microsoft。DataBox/jobs | listCredentials |
| Microsoft。DataFactory/datafactories/gateways | listauthkeys |
| Microsoft。DataFactory/factories/integrationruntimes | listauthkeys |
| Microsoft。DataLakeAnalytics/accounts/storageAccounts/Containers | listSasTokens |
| Microsoft。DataShare/accounts/shares | listSynchronizations |
| Microsoft。DataShare/accounts/shareSubscriptions | listSourceShareSynchronizationSettings |
| Microsoft。DataShare/accounts/shareSubscriptions | listSynchronizationDetails |
| Microsoft。DataShare/accounts/shareSubscriptions | listSynchronizations |
| Microsoft。Devices/iotHubs | listkeys |
| Microsoft。Devices/iotHubs/iotHubKeys | listkeys |
| Microsoft。Devices/provisioningServices/keys | listkeys |
| Microsoft。Devices/provisioningServices | listkeys |
| Microsoft。DevTestLab/labs | ListVhds |
| Microsoft。DevTestLab/labs/schedules | ListApplicable |
| Microsoft。DevTestLab/labs/users/serviceFabrics | ListApplicableSchedules |
| Microsoft。DevTestLab/labs/virtualMachines | ListApplicableSchedules |
| Microsoft。DocumentDB/databaseAccounts | listKeys |
| Microsoft。DocumentDB/databaseAccounts/notebookWorkspaces | listConnectionInfo |
| Microsoft。DomainRegistration | listDomainRecommendations |
| Microsoft。DomainRegistration/topLevelDomains | listAgreements |
| Microsoft。EventGrid/domains | listKeys |
| Microsoft。EventGrid/topics | listKeys |
| Microsoft。EventHub/namespaces/authorizationRules | listkeys |
| Microsoft。EventHub/namespaces/disasterRecoveryConfigs/authorizationRules | listkeys |
| Microsoft。EventHub/namespaces/eventhubs/authorizationRules | listkeys |
| Microsoft。ImportExport/jobs | listBitLockerKeys |
| Microsoft。Kusto/Clusters/Databases | ListPrincipals |
| Microsoft。LabServices/labs/users | 一覧 |
| Microsoft。LabServices/labs/virtualMachines | 一覧 |
| Microsoft。Logic/integrationAccounts/agreements | listContentCallbackUrl |
| Microsoft。Logic/integrationAccounts/assemblies | listContentCallbackUrl |
| Microsoft。Logic/integrationAccounts | listCallbackUrl |
| Microsoft。Logic/integrationAccounts | listKeyVaultKeys |
| Microsoft。Logic/integrationAccounts/maps | listContentCallbackUrl |
| Microsoft。Logic/integrationAccounts/partners | listContentCallbackUrl |
| Microsoft。Logic/integrationAccounts/schemas | listContentCallbackUrl |
| Microsoft。ロジック/ワークフロー | listCallbackUrl |
| Microsoft。ロジック/ワークフロー | listSwagger |
| Microsoft。ロジック/ワークフロー/実行/アクション | listExpressionTraces |
| Microsoft。ロジック/ワークフロー/実行/アクション/繰り返し | listExpressionTraces |
| Microsoft。ロジック/ワークフロー/トリガー | listCallbackUrl |
| Microsoft。Logic/workflows/versions/triggers | listCallbackUrl |
| Microsoft。MachineLearning/webServices | listkeys |
| Microsoft。MachineLearning/Workspaces | listworkspacekeys |
| Microsoft。MachineLearningServices/workspaces/computes | listKeys |
| Microsoft。MachineLearningServices/workspaces/computes | listNodes |
| Microsoft。MachineLearningServices/workspaces | listKeys |
| Microsoft。マップ/アカウント | listKeys |
| Microsoft。Media/mediaservices/assets | listContainerSas |
| Microsoft。Media/mediaservices/assets | listStreamingLocators |
| Microsoft。Media/mediaservices/streamingLocators | listContentKeys |
| Microsoft。Media/mediaservices/streamingLocators | listPaths |
| Microsoft。Network/applicationSecurityGroups | listIpConfigurations |
| Microsoft。NotificationHubs/Namespaces/authorizationRules | listkeys |
| Microsoft。NotificationHubs/Namespaces/NotificationHubs/authorizationRules | listkeys |
| Microsoft。OperationalInsights/workspaces | 一覧 |
| Microsoft。OperationalInsights/workspaces | listKeys |
| Microsoft。PolicyInsights/remediations | listDeployments |
| Microsoft。RedHatOpenShift/openShiftClusters | listCredentials |
| Microsoft。Relay/namespaces/disasterRecoveryConfigs/authorizationRules | listkeys |
| Microsoft。Search/searchServices | listAdminKeys |
| Microsoft。Search/searchServices | listQueryKeys |
| Microsoft。SignalRService/SignalR | listkeys |
| Microsoft。Storage/storageAccounts | listAccountSas |
| Microsoft。Storage/storageAccounts | listkeys |
| Microsoft。Storage/storageAccounts | listServiceSas |
| Microsoft。StorSimple/managers/devices | listFailoverSets |
| Microsoft。StorSimple/managers/devices | listFailoverTargets |
| Microsoft。StorSimple/マネージャー | listActivationKey |
| Microsoft。StorSimple/マネージャー | listPublicEncryptionKey |
| Microsoft。Synapse/workspaces/integrationRuntimes | listAuthKeys |
| Microsoft。Web/connectionGateways | ListStatus |
| microsoft.web/connections | listconsentlinks |
| Microsoft。Web/customApis | listWsdlInterfaces |
| microsoft.web/locations | listwsdlinterfaces |
| microsoft.web/apimanagementaccounts/apis/connections | listconnectionkeys |
| microsoft.web/apimanagementaccounts/apis/connections | listsecrets |
| microsoft.web/sites/backups | 一覧 |
| Microsoft。Web/sites/config | 一覧 |
| microsoft.web/sites/functions | listkeys |
| microsoft.web/sites/functions | listsecrets |
| microsoft.web/sites/hybridconnectionnamespaces/relays | listkeys |
| microsoft.web/sites | listsyncfunctiontriggerstatus |
| microsoft.web/sites/slots/functions | listsecrets |
| microsoft.web/sites/slots/backups | 一覧 |
| Microsoft。Web/sites/slots/config | 一覧 |
| microsoft.web/sites/slots/functions | listsecrets |
リスト操作を持つリソースタイプを判別するには、以下のオプションを使用します。
リソース プロバイダーの REST API の操作に関するページを参照して、リスト操作を検索します。 たとえば、ストレージ アカウントには listKeys 操作があります。
Get-AzProviderOperation PowerShell コマンドレットを使用します。 次の例では、ストレージ アカウントのすべてのリスト操作が取得されます。
Get-AzProviderOperation -OperationSearchString "Microsoft.Storage/*" | where {$_.Operation -like "*list*"} | FT Operationリスト操作のみをフィルター処理するには、次のAzure CLI コマンドを使用します。
az provider operation show --namespace Microsoft.Storage --query "resourceTypes[?name=='storageAccounts'].operations[].name | [?contains(@, 'list')]"
managementGroupResourceId
managementGroupResourceId(resourceType, resourceName1, [resourceName2], ...)
管理グループ レベルでデプロイされたリソースの一意の識別子を返します。
名前空間: az。
managementGroupResourceId機能はBicepファイルで利用可能ですが、通常は必要ありません。 代わりに、リソースのシンボリック名を使用して、id プロパティにアクセスします。
識別子は、次の形式で返されます。
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{resourceType}/{resourceName}
解説
この関数を使って 、リソースグループではなく管理グループにデプロイ されたリソースのリソースIDを取得してください。 返される ID は、サブスクリプション ID とリソース グループ値が含まれていないという点で、resourceId 関数から返される値とは異なります。
managementGroupResourceID の例
次のテンプレートでは、ポリシー定義を作成し、割り当てます。 ここでは、managementGroupResourceId 関数を使用して、ポリシー定義のリソース ID を取得しています。
targetScope = 'managementGroup'
@description('Target Management Group')
param targetMG string
@description('An array of the allowed locations, all other locations will be denied by the created policy.')
param allowedLocations array = [
'australiaeast'
'australiasoutheast'
'australiacentral'
]
var mgScope = tenantResourceId('Microsoft.Management/managementGroups', targetMG)
var policyDefinitionName = 'LocationRestriction'
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2025-03-01' = {
name: policyDefinitionName
properties: {
policyType: 'Custom'
mode: 'All'
parameters: {}
policyRule: {
if: {
not: {
field: 'location'
in: allowedLocations
}
}
then: {
effect: 'deny'
}
}
}
}
resource location_lock 'Microsoft.Authorization/policyAssignments@2025-03-01' = {
name: 'location-lock'
properties: {
scope: mgScope
policyDefinitionId: managementGroupResourceId('Microsoft.Authorization/policyDefinitions', policyDefinitionName)
}
dependsOn: [
policyDefinition
]
}
pickZones
pickZones(providerNamespace, resourceType, location, [numberOfZones], [offset])
リソースの種類がリージョンのゾーンをサポートしているかどうかを判断します。 この関数ではゾーン リソースのみをサポートしています。 ゾーン冗長サービスでは空の配列を返します。 詳細については、可用性ゾーンをサポートする Azure サービスを参照してください。
名前空間: az。
パラメーター
| パラメーター | 必須 | タイプ | 説明 |
|---|---|---|---|
| プロバイダー名前空間 | はい | 文字列 | ゾーンのサポートについて確認するためのリソースの種類のリソース プロバイダーの名前空間。 |
| リソースタイプ | はい | 文字列 | ゾーンのサポートについて確認するためのリソースの種類。 |
| 位置 | はい | 文字列 | ゾーンのサポートについて確認するためのリージョン。 |
| numberOfZones | いいえ | 整数 | 返される論理ゾーンの数。 既定値は 1 です。 この数は、1 から 3 までの正の整数である必要があります。 単一ゾーンのリソースには 1 を使用します。 複数ゾーンのリソースの場合、サポートされているゾーンの数以下の値である必要があります。 |
| オフセット | いいえ | 整数 | 開始論理ゾーンからのオフセット。 オフセットと numberOfZones の合計が、サポートされているゾーンの数を超えた場合、関数はエラーを返します。 |
戻り値
サポートされているゾーンを含む配列。
offsetとnumberOfZonesのデフォルト値を使用すると、ゾーンをサポートするリソースタイプとリージョンは以下の配列を返します。
[
"1"
]
numberOfZonesパラメータを3に設定すると、次のように返されます:
[
"1",
"2",
"3"
]
リソースタイプや領域がゾーンをサポートしていない場合、関数は空の配列を返します。
[
]
解説
Azure Availability Zonesゾーン冗長とゾーン冗長の2つのカテゴリーに分けられます。 ゾーン資源の可用性ゾーンを返すには pickZones 関数を使いましょう。 ゾーン冗長サービス (ZRS) の場合、関数では空の配列を返します。 ゾーン リソースには、通常、リソース定義のトップ レベルに zones プロパティがあります。 可用性ゾーンのサポートのカテゴリを確認するには、可用性ゾーンをサポートする Azure サービスを参照してください。
特定のAzureリージョンまたは場所が可用性ゾーンをサポートしているかどうかを判断するには、pickZones などのゾーン リソースの種類で Microsoft.Network/publicIPAddresses 関数を呼び出します。 応答が空でない場合、リージョンでは可用性ゾーンをサポートします。
pickZones の例
次のBicep ファイルは、pickZones 関数を使用した 3 つの結果を示しています。
output supported array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus2')
output notSupportedRegion array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus')
output notSupportedType array = pickZones('Microsoft.Cdn', 'profiles', 'westus2')
前の例からの出力は、3 つの配列を返します。
| 名前 | タイプ | 値 |
|---|---|---|
| サポート対象 | アレイ | [ "1" ] |
| notSupportedRegion | アレイ | [] |
| notSupportedType | アレイ | [] |
pickZonesの応答をもとにゾーンにヌルを提供するか、仮想マシンを異なるゾーンに割り当てるかを判断してください。
プロバイダー
プロバイダー機能はBicepでは推奨されていません。 そのような情報を使用してはいけません。 この関数を使ってリソースプロバイダーのAPIバージョンを取得した場合は、Bicepファイル内で特定のAPIバージョンを指定してください。 動的に返された API バージョンを使用すると、プロパティがバージョン間で変更された場合にテンプレートが破損する可能性があります。
providers 演算は、REST API から引き続き使用できます。 Bicepファイル以外でもリソースプロバイダーの情報を得るために使うことができます。
名前空間: az。
参照
reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])
リソースのランタイム状態を表すオブジェクトを返します。
reference関数の出力と動作は、各リソースプロバイダー(RP)がPUTおよびGET応答をどのように実装するかに大きく依存します。
名前空間: az。
Bicepファイルは参照機能へのアクセスを提供しますが、通常は必要ありません。 代わりに、リソースの象徴的な名前を使いましょう。 参照関数はリソースの properties オブジェクト内でのみ使えます。
nameやlocationのようなトップレベルのプロパティには使えません。 同じルールは、記号名を使う参照にも一般的に適用されます。 しかし、 nameのようなプロパティについては、参照関数を使わずにテンプレートを生成することができます。 リソース名について十分な知識があるので、直接その名前を発信できます。 これらはコンパイルタイムプロパティです。 Bicep検証では、シンボリック名の不適切な使用法を特定できます。
次の例では、ストレージ アカウントをデプロイします。 最初の 2 つの出力では、同じ結果が得られます。
param storageAccountName string = uniqueString(resourceGroup().id)
param location string = resourceGroup().location
resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: storageAccountName
location: location
kind: 'Storage'
sku: {
name: 'Standard_LRS'
}
}
output storageObjectSymbolic object = storageAccount.properties
output storageObjectReference object = reference('storageAccount')
output storageName string = storageAccount.name
output storageLocation string = storageAccount.location
テンプレートにデプロイしていない既存のリソースからプロパティを取得するには、 existing キーワードを使います:
param storageAccountName string
resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' existing = {
name: storageAccountName
}
// use later in template as often as needed
output blobAddress string = storageAccount.properties.primaryEndpoints.blob
親リソース内にネストされたリソースを参照するには、 ネストされたアクセサ (::)を使用します。 この構文は、親リソースの外部から入れ子になったリソースにアクセスする場合にのみ使用します。
vNet1::subnet1.properties.addressPrefix
存在しないリソースを参照しようとすると、NotFound エラーが発生し、デプロイは失敗します。
use-recognized-resource-typeリンタールールは、認識されていないまたは無効なリソースタイプを使用している参照リソースにフラグを立てます。
リソースID
resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)
リソースの一意の識別子を返します。
名前空間: az。
resourceId機能はBicepファイルで利用可能ですが、通常は必要ありません。 代わりに、リソースのシンボリック名を使用して、id プロパティにアクセスします。
リソース名が曖昧だったり、同じBicepファイル内でプロビジョニングされていない場合にこの関数を使います。 返される ID の形式は、デプロイがリソース グループ、サブスクリプション、管理グループ、またはテナントのスコープで行われるかどうかによって異なります。
次に例を示します。
param storageAccountName string
param location string = resourceGroup().location
resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: storageAccountName
location: location
kind: 'Storage'
sku: {
name: 'Standard_LRS'
}
}
output storageID string = storageAccount.id
Bicep ファイルにデプロイされていないリソースのリソース ID を取得するには、既存のキーワードを使用します。
param storageAccountName string
resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' existing = {
name: storageAccountName
}
output storageID string = storageAccount.id
詳細については、JSON テンプレート resourceId 関数に関する記事を参照してください。
roleDefinitions
roleDefinitions(roleName)
idやroleDefinitionIdなど、指定したロール定義に関する情報を返します。 これは、Azure RBAC ロールの割り当てのための名前ベースのヘルパーです。 カスタムや組み込みの役割定義(Contributor、Readerなど)のGUIDをハードコーディングする代わりに、カスタムまたは組み込みの役割の表示名を指定でき、関数が展開時に対応する役割定義情報を解決します。
名前空間: az。
パラメーター
| パラメーター | 必須 | タイプ | 説明 |
|---|---|---|---|
| roleName | はい | 文字列 | ロール定義の表示名。 |
戻り値
idやroleDefinitionIdなど、ロール定義を表すオブジェクト。
例示
以下のBicepコードは、展開スコープでロール定義を名前で解決することで、指定されたプリンシパルにStorage Blob Data Readerの組み込みロールを与える決定的なAzure RBACロール割り当てを作成します。
@description('Specifies the role definition ID used in the role assignment.')
param roleDefinitionName string = 'Storage Blob Data Reader'
@description('Specifies the principal ID assigned to the role.')
param principalId string
var roleAssignmentName= guid(principalId, roleDefinitionName, resourceGroup().id)
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: roleAssignmentName
properties: {
roleDefinitionId: roleDefinitions(roleDefinitionName).id
principalId: principalId
}
}
詳細については、JSON テンプレート resourceId 関数に関する記事を参照してください。
subscriptionResourceId
subscriptionResourceId([subscriptionId], resourceType, resourceName1, [resourceName2], ...)
サブスクリプション レベルでデプロイされたリソースの一意の識別子を返します。
名前空間: az。
subscriptionResourceId 関数はBicepファイルで使用できますが、通常は必要ありません。 代わりに、リソースのシンボリック名を使用して、id プロパティにアクセスします。
識別子は、次の形式で返されます。
/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
解説
この関数を使って 、リソースグループではなくサブスクリプションにデプロイ されているリソースのリソースIDを取得してください。 返される ID は、リソース グループ値が含まれていないという点で、resourceId 関数から返される値とは異なります。
subscriptionResourceId の例
次のBicep ファイルでは、組み込みのロールが割り当てられます。 リソース グループまたはサブスクリプションにデプロイできます。 ここでは、subscriptionResourceId 関数を使用して、組み込みロールのリソース ID を取得しています。
@description('Principal Id')
param principalId string
@allowed([
'Owner'
'Contributor'
'Reader'
])
@description('Built-in role to assign')
param builtInRoleType string
var roleDefinitionId = {
Owner: {
id: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')
}
Contributor: {
id: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
}
Reader: {
id: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')
}
}
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(resourceGroup().id, principalId, roleDefinitionId[builtInRoleType].id)
properties: {
roleDefinitionId: roleDefinitionId[builtInRoleType].id
principalId: principalId
}
}
tenantResourceId
tenantResourceId(resourceType, resourceName1, [resourceName2], ...)
テナント レベルでデプロイされたリソースの一意の識別子を返します。
名前空間: az。
tenantResourceId 関数はBicepファイルで使用できますが、通常は必要ありません。 代わりに、リソースのシンボリック名を使用して、id プロパティにアクセスします。
識別子は、次の形式で返されます。
/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
組み込みのポリシー定義は、テナント レベルのリソースです。 組み込みのポリシー定義を参照するポリシー割り当てをデプロイするには、tenantResourceId 関数を使用します。
@description('Specifies the ID of the policy definition or policy set definition being assigned.')
param policyDefinitionID string = '0a914e76-4921-4c19-b460-a2d36003525a'
@description('Specifies the name of the policy assignment, can be used defined or an idempotent name as the defaultValue provides.')
param policyAssignmentName string = guid(policyDefinitionID, resourceGroup().name)
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2025-03-01' = {
name: policyAssignmentName
properties: {
scope: subscriptionResourceId('Microsoft.Resources/resourceGroups', resourceGroup().name)
policyDefinitionId: tenantResourceId('Microsoft.Authorization/policyDefinitions', policyDefinitionID)
}
}
toLogicalZone
toLogicalZone(subscriptionId, location, physicalZone)
特定のAzureリージョンにおける特定のサブスクリプションの物理的可用性ゾーンに対応する論理的可用性ゾーン(例:1、2、3)を返します。
名前空間: az
パラメーター
| パラメーター | 必須 | タイプ | 説明 |
|---|---|---|---|
| サブスクリプションID | はい | 文字列 | AzureのサブスクリプションのIDは、12345678-1234-1234-1234-1234567890abのようなものです。 |
| 位置 | はい | 文字列 |
westus2などのアベイビリティゾーンをサポートするAzure地域です。 |
| physicalZone | はい | 文字列 | 物理可用性ゾーン識別子 (たとえば、 westus2-az1などのデータ センター固有の識別子)。 |
戻り値
指定したリージョンとサブスクリプションの指定された物理ゾーンに対応する論理可用性ゾーン ( 1、 2、 3など) を表す文字列。 物理ゾーンが無効またはサポートされていない場合、関数は空文字列('')を返します。
解説
-
toLogicalZone関数は、指定したリージョンのサブスクリプションのゾーン構成に基づいて論理ゾーン マッピングを取得します。 - 論理ゾーンは、リソース構成で使用される標準化された識別子 (
1、2、3など) であり、Azure サービス間で一貫したゾーン割り当てを確保します。 - 物理的なゾーン識別子は地域ごとに異なり、サブスクリプションによって異なる場合があります。 このマッピングを元に戻すには、
toPhysicalZone関数を使用します。 - この関数では、リージョンが可用性ゾーンをサポートしている必要があります。 サポートされているリージョンの一覧については、可用性ゾーンをサポートする Azure サービスを参照してください。
- 物理ゾーンが存在しないか、サブスクリプションにマップされていない場合、関数は空の文字列を返します。
- この関数は、特にサブスクリプション間または複数リージョンのシナリオで、物理ゾーンのデプロイをテンプレートの論理ゾーン構成に合わせて調整する場合に役立ちます。
例示
次の例では、特定のサブスクリプションの米国西部 2 の物理ゾーンの論理ゾーンを取得します。
param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param physicalZone string = 'westus2-az1'
output logicalZone string = toLogicalZone(subscriptionId, 'westus2', physicalZone)
予想される出力:
| 名前 | タイプ | 値 |
|---|---|---|
| logicalZone | 糸 | 1 |
次の例では、 toLogicalZone を使用して、適切な論理ゾーンを使用して仮想マシンを構成します。
param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param physicalZone string = 'westus2-az1'
param location string = 'westus2'
var logicalZone = toLogicalZone(subscriptionId, location, physicalZone)
resource vm 'Microsoft.Compute/virtualMachines@2025-04-01' = {
name: 'myVM'
location: location
zones: logicalZone != '' ? [logicalZone] : []
properties: {
// VM properties
}
}
output logicalZone string = logicalZone
予想される出力:
| 名前 | タイプ | 値 |
|---|---|---|
| logicalZone | 糸 | 1 |
toLogicalZones
toLogicalZones(subscriptionId, location, physicalZones)
特定のAzure リージョン内の指定したサブスクリプションの物理可用性ゾーンに対応する論理可用性ゾーン (1、2、3 など) を返します。 1 つの物理ゾーンを変換するには、 toLogicalZone 関数を使用します。
名前空間: az
パラメーター
| パラメーター | 必須 | タイプ | 説明 |
|---|---|---|---|
| サブスクリプションID | はい | 文字列 | AzureのサブスクリプションのIDは、12345678-1234-1234-1234-1234567890abのようなものです。 |
| 位置 | はい | 文字列 |
westus2などのアベイビリティゾーンをサポートするAzure地域です。 |
| physicalZones | はい | アレイ | 論理ゾーンに変換する物理ゾーン名の配列 (たとえば、 westus2-az1、 westus2-az2、... などのデータ センター固有の識別子)。 |
戻り値
指定された物理ゾーンに対応する論理ゾーン名の配列 ( 1、 2、 3など)。 物理ゾーンが無効またはサポートされていない場合、関数は空文字列('')を返します。
解説
toLogicalZones 関数は、物理ゾーン名を、指定したAzureサブスクリプションとリージョンに対応する論理ゾーンにマップします。 このマッピングは、Azureリージョン内の論理ゾーンに基づいてリソースの設定やクエリを行う際に有用です。 この関数には、有効なサブスクリプション ID、サポートされているAzureの場所、物理ゾーン名の配列が必要です。 物理的なゾーンが無効または指定された場所で利用できない場合、文脈によってはそのゾーンの空文字列を返すかエラーを出すことがあります。
例示
次の例では、特定のサブスクリプションの米国西部 2 の物理ゾーンの一覧の論理ゾーンを取得します。
param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param physicalZones array = ['westus2-az1', 'westus2-az2', 'westus2-az3']
output logicalZones array = toLogicalZones(subscriptionId, 'westus2', physicalZones)
予想される出力:
| 名前 | タイプ | 値 |
|---|---|---|
| logicalZone | アレイ | ["1","2","3"] |
toPhysicalZone
toPhysicalZone(subscriptionId, location, logicalZone)
westus2-az1のようなデータセンター固有の識別子のような物理的可用性ゾーン識別子を返します。これは特定のAzureリージョンにおける特定のサブスクリプションの論理的可用性ゾーンに対応します。
名前空間: az
パラメーター
| パラメーター | 必須 | タイプ | 説明 |
|---|---|---|---|
| サブスクリプションID | はい | 文字列 | AzureのサブスクリプションのIDは、12345678-1234-1234-1234-1234567890abのようなものです。 |
| 位置 | はい | 文字列 |
westus2などのアベイビリティゾーンをサポートするAzure地域です。 |
| logicalZone | はい | 文字列 | 論理的な可用性ゾーン( 1、 2、 3など)。 |
戻り値
westus2-az1のような物理的可用性ゾーン識別子を表す文字列で、指定された地域およびサブスクリプションの論理ゾーンに対応します。 論理ゾーンが無効またはサポートされていない場合、関数は空文字列('')を返します。
解説
-
toPhysicalZone関数は、指定したリージョンのサブスクリプションのゾーン構成に基づいて物理ゾーン マッピングを取得します。 - 物理ゾーンはデータセンター固有の識別子で、サブスクリプションによって異なる場合があります。一方、
1、2、3などの論理ゾーンはリソース構成に合わせて標準化されています。 -
toLogicalZone関数を使ってこのマッピングを逆にし、物理ゾーンを論理的な同等物に変換します。 - この関数では、リージョンが可用性ゾーンをサポートしている必要があります。 サポートされているリージョンの一覧については、可用性ゾーンをサポートする Azure サービスを参照してください。
- 論理ゾーンが存在しないか、サブスクリプションにマップされていない場合、関数は空の文字列を返します。
- この機能は、ログ、監査、またはマルチリージョン展開におけるクロスサブスクリプションゾーンアラインメントなど、物理的なゾーン識別子が必要なシナリオで有用です。
例示
次の例では、特定のサブスクリプションの米国西部 2 の論理ゾーンの物理ゾーンを取得します。
param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param logicalZone string = '1'
output physicalZone string = toPhysicalZone(subscriptionId, 'westus2', logicalZone)
予期される出力 (論理ゾーン 1 が westus2-az1にマップされていると仮定):
| 名前 | タイプ | 値 |
|---|---|---|
| physicalZone | 糸 | westus2-az1 |
次の例では、 toPhysicalZone を使用して、仮想マシンのデプロイの物理ゾーンをログに記録します。
param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param logicalZone string = '1'
param location string = 'westus2'
var physicalZone = toPhysicalZone(subscriptionId, location, logicalZone)
resource vm 'Microsoft.Compute/virtualMachines@2025-04-01' = {
name: 'myVM'
location: location
zones: [logicalZone]
properties: {
// VM properties
}
}
output physicalZone string = physicalZone
予想される出力:
| 名前 | タイプ | 値 |
|---|---|---|
| physicalZone | 糸 | westus2-az1 |
toPhysicalZones
toPhysicalZones(subscriptionId, location, logicalZones)
特定のAzure リージョン内の指定されたサブスクリプションの論理可用性ゾーンに対応する物理可用性ゾーン識別子 (たとえば、westus2-az1 などのデータ センター固有の識別子) を返します。 1 つの論理ゾーンを変換するには、 toPhysicalZone 関数を使用します。
名前空間: az
パラメーター
| パラメーター | 必須 | タイプ | 説明 |
|---|---|---|---|
| サブスクリプションID | はい | 文字列 | AzureのサブスクリプションのIDは、12345678-1234-1234-1234-1234567890abのようなものです。 |
| 位置 | はい | 文字列 |
westus2などのアベイビリティゾーンをサポートするAzure地域です。 |
| logicalZone | はい | 文字列[] | 物理ゾーンに変換する論理可用性ゾーン ( 1、 2、 3など)。 |
戻り値
指定された論理ゾーンに対応する物理ゾーン名 ( westus2-az1、 westus2-az2 など) の配列。 論理ゾーンが無効またはサポートされていない場合、関数は空文字列('')を返します。
解説
toPhysicalZones 関数は、論理ゾーン名を、指定されたAzureサブスクリプションとリージョンに対応する物理ゾーンにマップします。 このマッピングは、Azureリージョン内の特定の物理ゾーンにリソースを展開または設定する際に有用です。 この関数には、有効なサブスクリプション ID、サポートされているAzureの場所、および論理ゾーン名の配列が必要です。 指定された場所で論理ゾーンが無効または利用できない場合、文脈によってはそのゾーンの空文字列を返すかエラーを出すことがあります。
例示
次の例では、特定のサブスクリプションの米国西部 2 の論理ゾーンの一覧の物理ゾーンを取得します。
param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param logicalZones array = ['1', '2', '3']
output physicalZones array = toPhysicalZones(subscriptionId, 'westus2', logicalZones)
予想される出力 (論理ゾーン 1 が westus2-az1にマップされ、論理ゾーン 1 が westus2-az1にマップされ、論理ゾーン 3 が westus2-az3にマップされていると仮定します)。
| 名前 | タイプ | 値 |
|---|---|---|
| physicalZone | アレイ | ["westus2-az1","westus2-az2","westus2-az3"] |
次のステップ
- 現在のデプロイから値を取得するには、「Deployment value functions (デプロイ値関数)」を参照してください。
- リソースの種類を作成するときに指定した回数繰り返し処理するには、BicepIterative ループに関する>を参照してください。