本文介绍用于获取范围值的 Bicep 函数。
managementGroup()
返回一个对象,该对象具有当前部署中管理组的属性。
managementGroup(identifier)
返回一个对象,该对象用于将范围设置为管理组。
命名空间:az。
managementGroup()
只能对管理组部署使用。 它返回部署操作的当前管理组。 获取范围对象或获取当前管理组的属性时使用。
managementGroup(identifier)
可用于任何部署范围,但仅在获取范围对象时使用。 若要检索管理组的属性,不能传入管理组标识符。
参数 | 必选 | 类型 | DESCRIPTION |
---|---|---|---|
标识符 | 否 | 字符串 | 要部署到的管理组的唯一标识符。 不要为管理组使用显示名称。 如果未提供值,则返回当前管理组。 |
用于在模块或扩展资源类型上设置scope
属性的对象。 或者,具有当前管理组的属性的对象。
以下示例将模块的范围设置为管理组。
param managementGroupIdentifier string
module 'mgModule.bicep' = {
name: 'deployToMG'
scope: managementGroup(managementGroupIdentifier)
}
下一个示例返回当前管理组的属性。
targetScope = 'managementGroup'
var mgInfo = managementGroup()
output mgResult object = mgInfo
将返回:
"mgResult": {
"type": "Object",
"value": {
"id": "/providers/Microsoft.Management/managementGroups/examplemg1",
"name": "examplemg1",
"properties": {
"details": {
"parent": {
"displayName": "Tenant Root Group",
"id": "/providers/Microsoft.Management/managementGroups/00000000-0000-0000-0000-000000000000",
"name": "00000000-0000-0000-0000-000000000000"
},
"updatedBy": "00000000-0000-0000-0000-000000000000",
"updatedTime": "2020-07-23T21:05:52.661306Z",
"version": "1"
},
"displayName": "Example MG 1",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
},
"type": "/providers/Microsoft.Management/managementGroups"
}
}
下一个示例将创建新的管理组,并使用此函数设置父管理组。
targetScope = 'managementGroup'
param mgName string = 'mg-${uniqueString(newGuid())}'
resource newMG 'Microsoft.Management/managementGroups@2023-04-01' = {
scope: tenant()
name: mgName
properties: {
details: {
parent: {
id: managementGroup().id
}
}
}
}
output newManagementGroup string = mgName
resourceGroup()
返回表示当前资源组的对象。
resourceGroup(resourceGroupName)
和
resourceGroup(subscriptionId, resourceGroupName)
返回用于将范围设置为资源组的对象。
命名空间:az。
resourceGroup 函数具有两个不同的用途。 一种用法是设置 模块 或 扩展资源类型的范围。 另一种用法是获取有关当前资源组的详细信息。 函数的位置决定了其用法。 用于设置 scope
属性时,它将返回范围对象。
resourceGroup()
可用于设置范围或获取有关资源组的详细信息。
resourceGroup(resourceGroupName)
并且 resourceGroup(subscriptionId, resourceGroupName)
只能用于设置范围。
参数 | 必选 | 类型 | DESCRIPTION |
---|---|---|---|
资源组名称 | 否 | 字符串 | 要部署到的资源组的名称。 如果未提供值,则返回当前资源组。 |
订阅编号 | 否 | 字符串 | 要部署到的订阅的唯一标识符。 如果未提供值,则返回当前订阅。 |
用于设置范围时,该函数返回对 scope
模块或扩展资源类型的属性有效的对象。
用于获取有关资源组的详细信息时,该函数返回以下格式:
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
"name": "{resourceGroupName}",
"type":"Microsoft.Resources/resourceGroups",
"location": "{resourceGroupLocation}",
"managedBy": "{identifier-of-managing-resource}",
"tags": {
},
"properties": {
"provisioningState": "{status}"
}
}
仅对包含由其他服务托管的资源的资源组返回 managedBy 属性。 对于托管应用程序、Databricks 和 AKS,该属性的值为管理资源的资源 ID。
以下示例将模块的范围限定为资源组。
param resourceGroupName string
module exampleModule 'rgModule.bicep' = {
name: 'exampleModule'
scope: resourceGroup(resourceGroupName)
}
下一个示例返回资源组的属性。
output resourceGroupOutput object = resourceGroup()
它以以下格式返回对象:
{
"id": "/subscriptions/{subscription-id}/resourceGroups/examplegroup",
"name": "examplegroup",
"type":"Microsoft.Resources/resourceGroups",
"location": "chinaeast",
"properties": {
"provisioningState": "Succeeded"
}
}
resourceGroup 函数的一个常见用途是在与资源组相同的位置中创建资源。 以下示例使用资源组位置作为默认参数值。
param location string = resourceGroup().location
还可以使用 resourceGroup 函数将资源组中的标记应用于资源。 有关详细信息,请参阅应用资源组中的标记。
subscription()
返回有关当前部署的订阅的详细信息。
subscription(subscriptionId)
返回一个对象,该对象用于将范围设置为订阅。
命名空间:az。
订阅函数具有两个不同的用途。 一种用法是设置 模块 或 扩展资源类型的范围。 另一种用法是获取有关当前订阅的详细信息。 函数的位置决定了其用法。 用于设置 scope
属性时,它将返回范围对象。
subscription(subscriptionId)
只能用于设置范围。
subscription()
可用于设置范围或获取有关订阅的详细信息。
参数 | 必选 | 类型 | DESCRIPTION |
---|---|---|---|
订阅编号 | 否 | 字符串 | 要部署到的订阅的唯一标识符。 如果未提供值,则返回当前订阅。 |
用于设置范围时,该函数返回对 scope
模块或扩展资源类型的属性有效的对象。
用于获取有关订阅的详细信息时,该函数将返回以下格式:
{
"id": "/subscriptions/{subscription-id}",
"subscriptionId": "{subscription-id}",
"tenantId": "{tenant-id}",
"displayName": "{name-of-subscription}"
}
以下示例将模块的范围限定为订阅。
module exampleModule 'subModule.bicep' = {
name: 'deployToSub'
scope: subscription()
}
下一个示例返回订阅的详细信息。
output subscriptionOutput object = subscription()
tenant()
返回一个对象,该对象用于将范围设置为租户。
或
返回用户的租户。
命名空间:az。
tenant()
可与任何部署范围配合使用。 它始终返回当前租户。 可以使用此函数设置资源的范围,或获取当前租户的属性。
用于在模块或扩展资源类型上设置scope
属性的对象。 或者,具有有关当前租户的属性的对象。
以下示例演示部署到租户的模块。
module exampleModule 'tenantModule.bicep' = {
name: 'deployToTenant'
scope: tenant()
}
下一个示例返回租户的属性。
var tenantInfo = tenant()
output tenantResult object = tenantInfo
将返回:
"tenantResult": {
"type": "Object",
"value": {
"countryCode": "US",
"displayName": "Contoso",
"id": "/tenants/00000000-0000-0000-0000-000000000000",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
}
}
某些资源需要设置属性的租户 ID。 可以使用租户函数检索租户 ID,而不是将租户 ID 作为参数传递。
resource kv 'Microsoft.KeyVault/vaults@2023-07-01' = {
name: 'examplekeyvault'
location: 'chinanorth'
properties: {
tenantId: tenant().tenantId
...
}
}
若要详细了解部署范围,请参阅: