ARM テンプレート用の論理関数

Resource Manager には、Azure Resource Manager テンプレート (ARM テンプレート) で比較を行うための関数がいくつか用意されています。

ヒント

ARM テンプレートと同じ機能を備え、構文も使いやすいため、Bicep をお勧めします。 詳細については、 bool 論理関数と論理演算子に関するページを参照してください。

および

and(arg1, arg2, ...)

すべてのパラメーター値が true かどうかを確認します。

and 関数は、Bicep ではサポートされていません。 代わりに、&& 演算子を使用してください。

パラメーター

パラメーター 必須 タイプ 説明
arg1 はい boolean true かどうかを確認する最初の値。
arg2 はい boolean true かどうかを確認する 2 番目の値。
その他の引数 いいえ boolean true かどうかを確認するその他の引数。

戻り値

すべての値が true の場合は True を、それ以外の場合は False を返します。

次の例では、論理関数を使用する方法を示します。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "andExampleOutput": {
      "type": "bool",
      "value": "[and(bool('true'), bool('false'))]"
    },
    "orExampleOutput": {
      "type": "bool",
      "value": "[or(bool('true'), bool('false'))]"
    },
    "notExampleOutput": {
      "type": "bool",
      "value": "[not(bool('true'))]"
    }
  }
}

前の例からの出力は次のようになります。

名前 Type [値]
andExampleOutput Bool False
orExampleOutput Bool True
notExampleOutput Bool False

[bool]

bool(arg1)

パラメーターをブール値に変換します。

Bicep では、bool 論理関数を使用します。

パラメーター

パラメーター 必須 タイプ 説明
arg1 はい 文字列または整数 ブール値に変換する値。

戻り値

変換後の値のブール値。

解説

true ()false () を使用してブール値を取得することもできます。

次の例では、ブール値を文字列または整数と共に使用する方法を示します。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "trueString": {
      "type": "bool",
      "value": "[bool('true')]"
    },
    "falseString": {
      "type": "bool",
      "value": "[bool('false')]"
    },
    "trueInt": {
      "type": "bool",
      "value": "[bool(1)]"
    },
    "falseInt": {
      "type": "bool",
      "value": "[bool(0)]"
    }
  }
}

既定値を使用した場合の前の例の出力は次のようになります。

名前 Type [値]
trueString Bool True
falseString Bool False
trueInt Bool True
falseInt Bool False

false

false()

false を返します。

false 関数は、Bicep では使用できません。 代わりに、false キーワードを使用します。

パラメーター

false 関数では、パラメーターは受け入れられません。

戻り値

常に false のブール値です。

次の例では、false の出力値が返されます。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "falseOutput": {
      "type": "bool",
      "value": "[false()]"
    }
  }
}

前の例からの出力は次のようになります。

名前 Type [値]
falseOutput Bool False

if

if(condition, trueValue, falseValue)

条件が true か false かに基づいて値を返します。

if 関数は、Bicep ではサポートされていません。 代わりに、?: 演算子を使用してください。

パラメーター

パラメーター 必須 タイプ 説明
condition はい boolean true か false かどうかを確認する値。
trueValue はい string、int、object、または array 条件が true の場合に返される値。
falseValue はい string、int、object、または array 条件が false の場合に返される値。

戻り値

最初のパラメーターが True の場合、2 番目のパラメーターを返します。そうでない場合、3 番目のパラメーターを返します。

解説

条件が True の場合、true の値のみが評価されます。 条件が False の場合、false の値のみが評価されます。 if 関数の場合、条件付きで有効な式のみを含めることができます。 たとえば、1 つの条件の下で存在し、他の条件下では存在しないリソースを参照できます。 条件付きでの式の評価の例については、次のセクションを参照してください。

次の例は、if 関数の使用法を示しています。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
  ],
  "outputs": {
    "yesOutput": {
      "type": "string",
      "value": "[if(equals('a', 'a'), 'yes', 'no')]"
    },
    "noOutput": {
      "type": "string",
      "value": "[if(equals('a', 'b'), 'yes', 'no')]"
    },
    "objectOutput": {
      "type": "object",
      "value": "[if(equals('a', 'a'), json('{\"test\": \"value1\"}'), json('null'))]"
    }
  }
}

前の例からの出力は次のようになります。

名前 Type [値]
yesOutput String はい
noOutput String no
objectOutput Object { "test": "value1" }

次のテンプレート例では、条件付きで有効な式限定で、この関数を使用する方法を示しています。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vmName": {
      "type": "string"
    },
    "location": {
      "type": "string"
    },
    "logAnalytics": {
      "type": "string",
      "defaultValue": ""
    }
  },
  "resources": [
   {
      "condition": "[not(empty(parameters('logAnalytics')))]",
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "apiVersion": "2022-11-01",
      "name": "[format('{0}/omsOnboarding', parameters('vmName'))]",
      "location": "[parameters('location')]",
      "properties": {
        "publisher": "Microsoft.EnterpriseCloud.Monitoring",
        "type": "MicrosoftMonitoringAgent",
        "typeHandlerVersion": "1.0",
        "autoUpgradeMinorVersion": true,
        "settings": {
          "workspaceId": "[if(not(empty(parameters('logAnalytics'))), reference(parameters('logAnalytics'), '2015-11-01-preview').customerId, null())]"
        },
        "protectedSettings": {
          "workspaceKey": "[if(not(empty(parameters('logAnalytics'))), listKeys(parameters('logAnalytics'), '2015-11-01-preview').primarySharedKey, null())]"
        }
      }
    }
  ],
  "outputs": {
    "mgmtStatus": {
      "type": "string",
      "value": "[if(not(empty(parameters('logAnalytics'))), 'Enabled monitoring for VM!', 'Nothing to enable')]"
    }
  }
}

not

not(arg1)

ブール値をその反対の値に変換します。

not 関数は、Bicep ではサポートされていません。 代わりに、! 演算子を使用してください。

パラメーター

パラメーター 必須 タイプ 説明
arg1 はい boolean 変換する値。

戻り値

パラメーターが False の場合、True を返します。 パラメーターが True の場合、False を返します。

次の例では、論理関数を使用する方法を示します。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "andExampleOutput": {
      "type": "bool",
      "value": "[and(bool('true'), bool('false'))]"
    },
    "orExampleOutput": {
      "type": "bool",
      "value": "[or(bool('true'), bool('false'))]"
    },
    "notExampleOutput": {
      "type": "bool",
      "value": "[not(bool('true'))]"
    }
  }
}

前の例からの出力は次のようになります。

名前 Type [値]
andExampleOutput Bool False
orExampleOutput Bool True
notExampleOutput Bool False

notequals と共に使用する例を次に示します。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
  ],
  "outputs": {
    "checkNotEquals": {
      "type": "bool",
      "value": "[not(equals(1, 2))]"
    }
  }
}

前の例からの出力は次のようになります。

名前 Type [値]
checkNotEquals Bool True

または

or(arg1, arg2, ...)

いずれかのパラメーター値が true かどうかを確認します。

or 関数は、Bicep ではサポートされていません。 代わりに、|| 演算子を使用してください。

パラメーター

パラメーター 必須 タイプ 説明
arg1 はい boolean true かどうかを確認する最初の値。
arg2 はい boolean true かどうかを確認する 2 番目の値。
その他の引数 いいえ boolean true かどうかを確認するその他の引数。

戻り値

いずれかの値が true の場合は True を返し、そうでない場合は False を返します。

次の例では、論理関数を使用する方法を示します。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "andExampleOutput": {
      "type": "bool",
      "value": "[and(bool('true'), bool('false'))]"
    },
    "orExampleOutput": {
      "type": "bool",
      "value": "[or(bool('true'), bool('false'))]"
    },
    "notExampleOutput": {
      "type": "bool",
      "value": "[not(bool('true'))]"
    }
  }
}

前の例からの出力は次のようになります。

名前 Type [値]
andExampleOutput Bool False
orExampleOutput Bool True
notExampleOutput Bool False

true

true()

true を返します。

true 関数は、Bicep では使用できません。 代わりに、true キーワードを使用します。

パラメーター

true 関数では、パラメーターは受け入れられません。

戻り値

常に true のブール値です。

次の例では、true の出力値が返されます。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "trueOutput": {
      "type": "bool",
      "value": "[true()]"
    }
  }
}

前の例からの出力は次のようになります。

名前 Type [値]
trueOutput Bool True

次のステップ