次の方法で共有


ARM テンプレートでの条件付きデプロイ

必要に応じて、Azure Resource Manager テンプレート (ARM テンプレート) にリソースをデプロイする必要がある場合があります。 condition要素を使用して、リソースをデプロイするかどうかを指定します。 条件の値は true または false に解決されます。 値が true の場合、リソースが作成されます。 値が false の場合、リソースは作成されません。 この値は、リソース全体にのみ適用できます。

条件付きのデプロイは子リソースにはカスケードされません。 リソースとその子リソースを条件付きでデプロイする場合は、リソースの種類ごとに同じ条件を適用する必要があります。

ヒント

ARM テンプレートと同じ機能を備え、構文も使いやすいため、Bicep をお勧めします。 詳細については、 条件付きデプロイに関するページを参照してください。

デプロイ条件

リソースがデプロイされているかどうかを示すパラメーター値を渡すことができます。 次の例では、DNS ゾーンを条件付きでデプロイします。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "deployZone": {
      "type": "bool",
      "defaultValue": true
    }
  },
  "functions": [],
  "resources": [
    {
      "condition": "[parameters('deployZone')]",
      "type": "Microsoft.Network/dnsZones",
      "apiVersion": "2023-07-01-preview",
      "name": "myZone",
      "location": "global",
      "properties": {
        "zoneType": "Public"
      }
    }
  ]
}

より複雑な例については、 Azure SQL 論理サーバーに関するページを参照してください。

新規または既存のリソース

条件付きデプロイを使用して、新しいリソースを作成したり、既存のリソースを使用したりすることができます。 次の例は、新しいストレージ アカウントをデプロイするか、既存のストレージ アカウントを使用する方法を示しています。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountName": {
      "type": "string"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "newOrExisting": {
      "type": "string",
      "defaultValue": "new",
      "allowedValues": [
        "new",
        "existing"
      ]
    }
  },
  "resources": [
    {
      "condition": "[equals(parameters('newOrExisting'), 'new')]",
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2"
    },
    {
      "condition": "[equals(parameters('newOrExisting'), 'existing')]",
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "[parameters('storageAccountName')]"
    }
  ],
  "outputs": {
    "storageAccountId": {
      "type": "string",
      "value": "[if(equals(parameters('newOrExisting'), 'new'), resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')))]"
    }
  }
}

パラメーター newOrExistingnew に設定されると、その条件は true に評価されます。 ストレージ アカウントはデプロイされます。 それ以外の場合は、既存のストレージ アカウントが使用されます。

condition要素を使用する完全なサンプル テンプレートについては、新規または既存の仮想ネットワーク、ストレージ、パブリック IP を持つ VM を参照してください。

ランタイム関数

条件付きでデプロイされたリソースで 参照 関数または リスト 関数を使用する場合、リソースがデプロイされていない場合でも、関数が評価されます。 関数が存在しないリソースを参照している場合は、エラーが発生します。

if 関数を使用して、リソースのデプロイ時にのみ関数が条件に対して評価されるようにします。 条件付きでデプロイされたリソースでifを使用するサンプル テンプレートの referenceを参照してください。

リソースは、他のリソースとまったく同じように条件付きリソースに 依存 するように設定します。 条件付きリソースがデプロイされていない場合、Azure Resource Manager によって必要な依存関係から自動的に削除されます。

完全モード

完全モードでテンプレートをデプロイし、conditionが false に評価されるためにリソースがデプロイされない場合、結果はテンプレートのデプロイに使用する REST API のバージョンによって異なります。 2019-05-10 より前のバージョンを使用している場合、リソース は削除されません。 2019-05-10 以降では、リソース が削除されます。 条件が false の場合、最新バージョンの Azure PowerShell と Azure CLI によってリソースが削除されます。

次のステップ