ARM テンプレート内の出力Outputs in ARM templates

この記事では、Azure Resource Manager テンプレート (ARM テンプレート) で出力値を定義する方法について説明します。This article describes how to define output values in your Azure Resource Manager template (ARM template). デプロイされたリソースから値を返す必要がある場合は outputs を使用します。You use outputs when you need to return values from the deployed resources.

各出力値の形式は、いずれかのデータ型と一致している必要があります。The format of each output value must match one of the data types.

出力値の定義Define output values

次の例は、パブリック IP アドレスのリソース ID を返す方法を示しています。The following example shows how to return the resource ID for a public IP address:

"outputs": {
  "resourceID": {
    "type": "string",
    "value": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_name'))]"
  }
}

条件付き出力Conditional output

outputs セクションでは、値を条件付きで返すことができます。In the outputs section, you can conditionally return a value. 通常、リソースを条件付きでデプロイした場合は outputscondition を使用します。Typically, you use condition in the outputs when you've conditionally deployed a resource. 次の例は、新しくデプロイされたかどうかに基づいて、パブリック IP アドレスのリソース ID を条件付きで返す方法を示しています。The following example shows how to conditionally return the resource ID for a public IP address based on whether a new one was deployed:

"outputs": {
  "resourceID": {
    "condition": "[equals(parameters('publicIpNewOrExisting'), 'new')]",
    "type": "string",
    "value": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_name'))]"
  }
}

条件付き出力の簡単な例については、条件付き出力テンプレートに関する説明をご覧ください。For a simple example of conditional output, see conditional output template.

動的な出力の数Dynamic number of outputs

場合により、テンプレートの作成時に、返す必要がある値のインスタンスの数が不明なシナリオもあります。In some scenarios, you don't know the number of instances of a value you need to return when creating the template. copy 要素を使用することで、可変数の値を返すことができます。You can return a variable number of values by using the copy element.

"outputs": {
  "storageEndpoints": {
    "type": "array",
    "copy": {
      "count": "[parameters('storageCount')]",
      "input": "[reference(concat(copyIndex(), variables('baseName'))).primaryEndpoints.blob]"
    }
  }
}

詳細については、「ARM テンプレートでの出力の反復処理」を参照してください。For more information, see Output iteration in ARM templates.

リンク済みテンプレートLinked templates

リンク済みテンプレートから出力値を取得するには、親テンプレートで reference 関数を使用します。To retrieve the output value from a linked template, use the reference function in the parent template. 親テンプレートの構文は次のとおりです。The syntax in the parent template is:

"[reference('<deploymentName>').outputs.<propertyName>.value]"

リンクされたテンプレートから出力プロパティを取得する場合、プロパティ名にダッシュを含めることはできません。When getting an output property from a linked template, the property name can't include a dash.

次の例では、リンクされているテンプレートから値を取得することによってロード バランサーの IP アドレスを設定する方法を示します。The following example shows how to set the IP address on a load balancer by retrieving a value from a linked template.

"publicIPAddress": {
  "id": "[reference('linkedTemplate').outputs.resourceID.value]"
}

入れ子になったテンプレート の出力セクションでは reference 関数を使用できません。You can't use the reference function in the outputs section of a nested template. 入れ子になったテンプレート内のデプロイされたリソースの値を返すには、入れ子になったテンプレートをリンク済みテンプレートに変換します。To return the values for a deployed resource in a nested template, convert your nested template to a linked template.

出力値の取得Get output values

デプロイが成功すると、出力値はデプロイの結果で自動的に返されます。When the deployment succeeds, the output values are automatically returned in the results of the deployment.

デプロイ履歴から出力値を取得するには、スクリプトを使用できます。To get output values from the deployment history, you can use script.

(Get-AzResourceGroupDeployment `
  -ResourceGroupName <resource-group-name> `
  -Name <deployment-name>).Outputs.resourceID.value

サンプル テンプレートExample templates

次の例は、出力を使用するためのシナリオを示しています。The following examples demonstrate scenarios for using outputs.

テンプレートTemplate 説明Description
Copy variablesCopy variables 複合変数を作成し、それらの値を出力します。Creates complex variables and outputs those values. リソースはデプロイしません。Doesn't deploy any resources.
パブリック IP アドレスPublic IP address パブリック IP アドレスを作成し、リソース ID を出力します。Creates a public IP address and outputs the resource ID.
Load BalancerLoad balancer 前述のテンプレートにリンクします。Links to the preceding template. ロード バランサーの作成時に出力内のリソース ID を使用します。Uses the resource ID in the output when creating the load balancer.

次の手順Next steps