Azure Resource Manager テンプレートのデプロイ関数Deployment functions for Azure Resource Manager templates

リソース マネージャーには、テンプレートのセクションから値を取得し、デプロイに関連する値を取得する次の関数が用意されています。Resource Manager provides the following functions for getting values from sections of the template and values related to the deployment:

リソース、リソース グループ、サブスクリプションから値を取得する方法については、「 リソース関数」を参照してください。To get values from resources, resource groups, or subscriptions, see Resource functions.

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

deploymentdeployment

deployment()

現在のデプロイ操作に関する情報を返します。Returns information about the current deployment operation.

戻り値Return value

この関数は、デプロイ中に渡されたオブジェクトを返します。This function returns the object that is passed during deployment. 返されるオブジェクトのプロパティは、デプロイ オブジェクトがリンクとして渡されたか、インライン オブジェクトとして渡されたかによって異なります。The properties in the returned object differ based on whether the deployment object is passed as a link or as an in-line object. デプロイ オブジェクトがインラインで渡された場合 (Azure PowerShell の TemplateFile パラメーターを使用してローカル ファイルを参照する場合など)、返されるオブジェクトは次の形式になります。When the deployment object is passed in-line, such as when using the -TemplateFile parameter in Azure PowerShell to point to a local file, the returned object has the following format:

{
    "name": "",
    "properties": {
        "template": {
            "$schema": "",
            "contentVersion": "",
            "parameters": {},
            "variables": {},
            "resources": [
            ],
            "outputs": {}
        },
        "parameters": {},
        "mode": "",
        "provisioningState": ""
    }
}

オブジェクトがリンクとして渡された場合 ( -TemplateUri パラメーターを使用してリモート オブジェクトを参照する場合など)、オブジェクトは次の形式で返されます。When the object is passed as a link, such as when using the -TemplateUri parameter to point to a remote object, the object is returned in the following format:

{
    "name": "",
    "properties": {
        "templateLink": {
            "uri": ""
        },
        "template": {
            "$schema": "",
            "contentVersion": "",
            "parameters": {},
            "variables": {},
            "resources": [],
            "outputs": {}
        },
        "parameters": {},
        "mode": "",
        "provisioningState": ""
    }
}

Azure のサブスクリプションにデプロイする場合は、リソース グループの代わりに、返されるオブジェクトに location プロパティが含まれています。When you deploy to an Azure subscription, instead of a resource group, the return object includes a location property. ローカル テンプレートまたは外部テンプレートのいずれかをデプロイする場合は、場所プロパティが含まれています。The location property is included when deploying either a local template or an external template.

解説Remarks

deployment() を使い、親テンプレートの URI に基づいて、別のテンプレートにリンクできます。You can use deployment() to link to another template based on the URI of the parent template.

"variables": {  
    "sharedTemplateUrl": "[uri(deployment().properties.templateLink.uri, 'shared-resources.json')]"  
}

ポータル内のデプロイ履歴からテンプレートを再デプロイすると、テンプレートがローカル ファイルとしてデプロイされます。If you redeploy a template from the deployment history in the portal, the template is deployed as a local file. デプロイ関数の中では、templateLink プロパティは返されません。The templateLink property isn't returned in the deployment function. お使いのテンプレートが templateLink に依存して別のテンプレートへのリンクを構成している場合は、ポータルを使用して再デプロイしないでください。If your template relies on templateLink to construct a link to another template, don't use the portal to redeploy. 代わりに、最初にテンプレートのデプロイに利用したコマンドを使用してください。Instead, use the commands you used to originally deploy the template.

Example

次のテンプレート例では、デプロイ オブジェクトが返されます。The following example template returns the deployment object:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [],
    "outputs": {
        "subscriptionOutput": {
            "value": "[deployment()]",
            "type" : "object"
        }
    }
}

前の例では、次のオブジェクトが返されます。The preceding example returns the following object:

{
  "name": "deployment",
  "properties": {
    "template": {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "resources": [],
      "outputs": {
        "subscriptionOutput": {
          "type": "Object",
          "value": "[deployment()]"
        }
      }
    },
    "parameters": {},
    "mode": "Incremental",
    "provisioningState": "Accepted"
  }
}

Azure CLI を使用してこのテンプレート例をデプロイするには、以下を使用します。To deploy this example template with Azure CLI, use:

az group deployment create -g functionexamplegroup --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/functions/deployment.json

PowerShell を使用してこのテンプレート例をデプロイするには、以下を使用します。To deploy this example template with PowerShell, use:

New-AzResourceGroupDeployment -ResourceGroupName functionexamplegroup -TemplateUri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/functions/deployment.json

デプロイ関数を使用するサブスクリプションレベルのテンプレートについては、サブスクリプション デプロイ関数に関するページを参照してください。For a subscription-level template that uses the deployment function, see subscription deployment function. これは az deployment create コマンドまたは New-AzDeployment コマンドのいずれかでデプロイされます。It's deployed with either az deployment create or New-AzDeployment commands.

parametersparameters

parameters(parameterName)

パラメーター値を返します。Returns a parameter value. 指定したパラメーター名は、テンプレートのパラメーター セクションで定義されている必要があります。The specified parameter name must be defined in the parameters section of the template.

parametersParameters

パラメーターParameter 必須Required TypeType 説明Description
parameterNameparameterName はいYes stringstring 返されるパラメーターの名前。The name of the parameter to return.

戻り値Return value

指定したパラメーターの値。The value of the specified parameter.

解説Remarks

通常、パラメーターを使ってリソースの値を設定します。Typically, you use parameters to set resource values. 次の例では、Web サイトの名前を、デプロイ時に渡されるパラメーターの値に設定します。The following example sets the name of web site to the parameter value passed in during deployment.

"parameters": { 
  "siteName": {
      "type": "string"
  }
},
"resources": [
   {
      "apiVersion": "2016-08-01",
      "name": "[parameters('siteName')]",
      "type": "Microsoft.Web/Sites",
      ...
   }
]

Example

次のテンプレート例では、parameters 関数の簡単な使用方法を示しています。The following example template shows a simplified use of the parameters function.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "stringParameter": {
            "type" : "string",
            "defaultValue": "option 1"
        },
        "intParameter": {
            "type": "int",
            "defaultValue": 1
        },
        "objectParameter": {
            "type": "object",
            "defaultValue": {"one": "a", "two": "b"}
        },
        "arrayParameter": {
            "type": "array",
            "defaultValue": [1, 2, 3]
        },
        "crossParameter": {
            "type": "string",
            "defaultValue": "[parameters('stringParameter')]"
        }
    },
    "variables": {},
    "resources": [],
    "outputs": {
        "stringOutput": {
            "value": "[parameters('stringParameter')]",
            "type" : "string"
        },
        "intOutput": {
            "value": "[parameters('intParameter')]",
            "type" : "int"
        },
        "objectOutput": {
            "value": "[parameters('objectParameter')]",
            "type" : "object"
        },
        "arrayOutput": {
            "value": "[parameters('arrayParameter')]",
            "type" : "array"
        },
        "crossOutput": {
            "value": "[parameters('crossParameter')]",
            "type" : "string"
        }
    }
}

既定値を使用した場合の前の例の出力は次のようになります。The output from the preceding example with the default values is:

NameName TypeType Value
stringOutputstringOutput stringString option 1option 1
intOutputintOutput intInt 11
objectOutputobjectOutput ObjectObject {"one": "a", "two": "b"}{"one": "a", "two": "b"}
arrayOutputarrayOutput ArrayArray [1, 2, 3][1, 2, 3]
crossOutputcrossOutput stringString option 1option 1

Azure CLI を使用してこのテンプレート例をデプロイするには、以下を使用します。To deploy this example template with Azure CLI, use:

az group deployment create -g functionexamplegroup --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/functions/parameters.json

PowerShell を使用してこのテンプレート例をデプロイするには、以下を使用します。To deploy this example template with PowerShell, use:

New-AzResourceGroupDeployment -ResourceGroupName functionexamplegroup -TemplateUri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/functions/parameters.json

variablesvariables

variables(variableName)

変数の値を返します。Returns the value of variable. 指定した変数名は、テンプレートの変数セクションで定義されている必要があります。The specified variable name must be defined in the variables section of the template.

parametersParameters

パラメーターParameter 必須Required TypeType 説明Description
variableNamevariableName はいYes stringString 返す変数の名前。The name of the variable to return.

戻り値Return value

指定した変数の値。The value of the specified variable.

解説Remarks

通常、変数を使って、複雑な値を 1 回だけ作成することによりテンプレートを簡略化します。Typically, you use variables to simplify your template by constructing complex values only once. 次の例では、ストレージ アカウントの一意の名前を作成します。The following example constructs a unique name for a storage account.

"variables": {
    "storageName": "[concat('storage', uniqueString(resourceGroup().id))]"
},
"resources": [
    {
        "type": "Microsoft.Storage/storageAccounts",
        "name": "[variables('storageName')]",
        ...
    },
    {
        "type": "Microsoft.Compute/virtualMachines",
        "dependsOn": [
            "[variables('storageName')]"
        ],
        ...
    }
],

Example

次のテンプレート例は異なる変数値を返します。The following example template returns different variable values.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {},
    "variables": {
        "var1": "myVariable",
        "var2": [ 1,2,3,4 ],
        "var3": "[ variables('var1') ]",
        "var4": {
            "property1": "value1",
            "property2": "value2"
        }
    },
    "resources": [],
    "outputs": {
        "exampleOutput1": {
            "value": "[variables('var1')]",
            "type" : "string"
        },
        "exampleOutput2": {
            "value": "[variables('var2')]",
            "type" : "array"
        },
        "exampleOutput3": {
            "value": "[variables('var3')]",
            "type" : "string"
        },
        "exampleOutput4": {
            "value": "[variables('var4')]",
            "type" : "object"
        }
    }
}

既定値を使用した場合の前の例の出力は次のようになります。The output from the preceding example with the default values is:

NameName TypeType Value
exampleOutput1exampleOutput1 stringString myVariablemyVariable
exampleOutput2exampleOutput2 ArrayArray [1, 2, 3, 4][1, 2, 3, 4]
exampleOutput3exampleOutput3 stringString myVariablemyVariable
exampleOutput4exampleOutput4 ObjectObject {"property1": "value1", "property2": "value2"}{"property1": "value1", "property2": "value2"}

Azure CLI を使用してこのテンプレート例をデプロイするには、以下を使用します。To deploy this example template with Azure CLI, use:

az group deployment create -g functionexamplegroup --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/functions/variables.json

PowerShell を使用してこのテンプレート例をデプロイするには、以下を使用します。To deploy this example template with PowerShell, use:

New-AzResourceGroupDeployment -ResourceGroupName functionexamplegroup -TemplateUri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/functions/variables.json

次の手順Next steps