ARM テンプレート用のスコープ関数
Resource Manager では、Azure Resource Manager テンプレート (ARM テンプレート) でデプロイ スコープの値を取得するために、次の関数が提供されています。
パラメーター、変数、現在のデプロイから値を取得する方法については、「 デプロイの値関数」を参照してください。
managementGroup
managementGroup()
現在のデプロイの管理グループからプロパティを持つオブジェクトを返します。
Bicep では、managementGroup スコープ関数を用します。
解説
managementGroup()
は、管理グループのデプロイ上でのみ使用できます。 これは、デプロイ操作の現在の管理グループを返します。 現在の管理グループのプロパティを取得するために使用します。
戻り値
現在の管理グループのプロパティを持つオブジェクト。
管理グループの例
次の例では、現在の管理グループのプロパティが返されます。
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"variables": {
"mgInfo": "[managementGroup()]"
},
"resources": [],
"outputs": {
"mgResult": {
"type": "object",
"value": "[variables('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"
}
}
次の例では、新しい管理グループを作成し、この関数を使用して親管理グループを設定します。
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"mgName": {
"type": "string",
"defaultValue": "[format('mg-{0}', uniqueString(newGuid()))]"
}
},
"resources": [
{
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2020-05-01",
"scope": "/",
"name": "[parameters('mgName')]",
"properties": {
"details": {
"parent": {
"id": "[managementGroup().id]"
}
}
}
}
],
"outputs": {
"newManagementGroup": {
"type": "string",
"value": "[parameters('mgName')]"
}
}
}
resourceGroup
resourceGroup()
現在のリソース グループを表すオブジェクトを返します。
Bicep では、resourceGroup スコープ関数を使用します。
戻り値
返されるオブジェクトの形式は次のとおりです。
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
"name": "{resourceGroupName}",
"type":"Microsoft.Resources/resourceGroups",
"location": "{resourceGroupLocation}",
"managedBy": "{identifier-of-managing-resource}",
"tags": {
},
"properties": {
"provisioningState": "{status}"
}
}
managedBy プロパティは、別のサービスによって管理されているリソースを含むリソース グループに対してのみ返されます。 Managed Applications、Databricks、および AKS の場合、プロパティの値は管理しているリソースのリソース ID になります。
解説
resourceGroup()
関数は、サブスクリプション レベルでデプロイされたテンプレートで使用できません。 リソース グループにデプロイされているテンプレートでのみ使用できます。 親テンプレートがサブスクリプションにデプロイされていても、リソース グループをターゲットとするリンク済みまたは入れ子になったテンプレート (内側のスコープを持つ) で resourceGroup()
関数を使用することができます。 そのシナリオでは、リンク済みまたは入れ子になったテンプレートはリソース グループ レベルでデプロイされます。 サブスクリプション レベル デプロイでのリソース グループのターゲット設定の詳細については、「複数のサブスクリプションまたはリソース グループに Azure リソースをデプロイする」を参照してください。
resourceGroup 関数の一般的な用途では、リソース グループと同じ場所にリソースを作成します。 次の例では、既定のパラメーター値にリソース グループの場所を使用します。
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
}
resourceGroup
関数を使用して、リソース グループからリソースにタグを適用することもできます。 詳細については、「リソース グループからタグを適用する」を参照してください。
入れ子になったテンプレートを使用して複数のリソース グループにデプロイするときは、resourceGroup
関数を評価するためのスコープを指定できます。 詳細については、「複数のサブスクリプションまたはリソース グループに Azure リソースをデプロイする」を参照してください。
リソース グループの例
次の例では、リソース グループのプロパティが返されます。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [],
"outputs": {
"resourceGroupOutput": {
"type": "object",
"value": "[resourceGroup()]"
}
}
}
前の例では、次の形式のオブジェクトが返されます。
{
"id": "/subscriptions/{subscription-id}/resourceGroups/examplegroup",
"name": "examplegroup",
"type":"Microsoft.Resources/resourceGroups",
"location": "southcentralus",
"properties": {
"provisioningState": "Succeeded"
}
}
subscription
subscription()
現在のデプロイのサブスクリプションの詳細を返します。
Bicep では、subscription スコープ関数を使用 します。
戻り値
この関数は次の形式を返します。
{
"id": "/subscriptions/{subscription-id}",
"subscriptionId": "{subscription-id}",
"tenantId": "{tenant-id}",
"displayName": "{name-of-subscription}"
}
解説
入れ子になっているテンプレートを使用して複数のサブスクリプションにデプロイするとき、サブスクリプション関数を評価するためのスコープを指定できます。 詳細については、「複数のサブスクリプションまたはリソース グループに Azure リソースをデプロイする」を参照してください。
サブスクリプションの例
次の例は、outputs セクションで呼び出される subscription 関数を示しています。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [],
"outputs": {
"subscriptionOutput": {
"type": "object",
"value": "[subscription()]"
}
}
}
tenant
tenant()
ユーザーのテナントを返します。
Bicep では、tenant スコープ関数を使用します。
解説
tenant()
は、任意のデプロイ スコープに使用できます。 常に、現在のテナントが返されます。 この関数を使用して、現在のテナントのプロパティを取得します。
リンクされたテンプレートまたは拡張リソースのスコープを設定する場合は、構文 "scope": "/"
を使用します。
戻り値
現在のテナントに関するプロパティを持つオブジェクト。
テナントの例
次の例では、テナントのプロパティが返されます。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"variables": {
"tenantInfo": "[tenant()]"
},
"resources": [],
"outputs": {
"tenantResult": {
"type": "object",
"value": "[variables('tenantInfo')]"
}
}
}
戻り値は次のとおりです。
"tenantResult": {
"type": "Object",
"value": {
"countryCode": "US",
"displayName": "Contoso",
"id": "/tenants/00000000-0000-0000-0000-000000000000",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
}
}
次のステップ
- ARM テンプレートのセクションの説明については、「ARM テンプレートの構造と構文について」を参照してください。
- 複数のテンプレートをマージする方法については、「Azure リソース デプロイ時のリンクされたテンプレートおよび入れ子になったテンプレートの使用」を参照してください。
- ある種類のリソースを作成するときに、指定した回数だけ反復する方法については、「ARM テンプレートでのリソースの反復処理」を参照してください。
- 作成したテンプレートをデプロイする方法については、「ARM テンプレートと Azure PowerShell を使用したリソースのデプロイ」を参照してください。