ARM テンプレートのデータ型

この記事では、Azure Resource Manager テンプレート (ARM テンプレート) でサポートされるデータ型について説明します。

サポートされている型

ARM テンプレート内では、次のデータ型を使用できます。

  • array
  • [bool]
  • INT
  • object
  • secureObject
  • securestring
  • string

配列

配列は左大かっこ ([) で始めて、右大かっこ (]) で終わります。 配列は単一行または複数行で宣言できます。 各要素はコンマで区切られます。

"parameters": {
  "exampleArray": {
    "type": "array",
    "defaultValue": [
      1,
      2,
      3
    ]
  }
},

"outputs": {
  "arrayOutput": {
    "type": "array",
    "value": "[variables('exampleArray')]"
  },
  "firstExampleArrayElement": {
    "type": "int",
    "value": "[parameters('exampleArray')[0]]"
  }
}

配列の要素は同じ型にすることも、異なる型にすることもできます。

"variables": {
  "mixedArray": [
    "[resourceGroup().name]",
    1,
    true,
    "example string"
  ]
}

"outputs": {
  "arrayOutput": {
    "type": "array",
    "value": "[variables('mixedArray')]"
  },
  "firstMixedArrayElement": {
    "type": "string",
    "value": "[variables('mixedArray')[0]]"
  }
}

ブール値

ブール値を指定するとき、true または false を使用します。 値を引用符で囲まないでください。

"parameters": {
  "exampleBool": {
    "type": "bool",
    "defaultValue": true
  }
},

整数

整数値を指定するとき、引用符を使用しないでください。

"parameters": {
  "exampleInt": {
    "type": "int",
    "defaultValue": 1
  }
}

インライン パラメーターとして渡される整数の場合、値の範囲はデプロイに使用する SDK またはコマンドライン ツールによって制限されることがあります。 たとえば、PowerShell を使用してテンプレートをデプロイする場合、整数型は -2147483648 から 2147483647 の範囲で指定できます。 この制限を回避するには、パラメーター ファイルで大きな整数値を指定します。 リソースの種類によって、整数プロパティに独自の制限が適用されます。

オブジェクト

オブジェクトは左中かっこ ({) で始めて、右中かっこ (}) で終わります。 オブジェクト内の各プロパティは keyvalue で構成されます。 keyvalue は二重引用符で囲まれ、コロン (:) で区切られています。 各プロパティはコンマで区切られます。

"parameters": {
  "exampleObject": {
    "type": "object",
    "defaultValue": {
      "name": "test name",
      "id": "123-abc",
      "isCurrent": true,
      "tier": 1
    }
  }
}

ドット表記を使用してオブジェクトからプロパティを取得できます。

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "exampleObject": {
            "type": "object",
            "defaultValue": {
                "name": "test name",
                "id": "123-abc",
                "isCurrent": true,
                "tier": 1
            }
        }
    },
    "resources": [
    ],
    "outputs": {
        "nameFromObject": {
            "type": "string",
            "value": "[parameters('exampleObject').name]"
        }
    }
}

JSON では、オブジェクトは 0 個以上のキーと値のペアの順序付けられていないコレクションです。 順序付けは実装によって異なる可能性があります。 たとえば、Bicep items() 関数では、アルファベット順でオブジェクトを並べ替えます。 他の場所では、元の順序を保持できます。 この非決定性のため、デプロイのパラメーターと出力と対話するコードを記述するときは、オブジェクト キーの順序について想定することは避けてください。

文字列

文字列は二重引用符でマークされます。

"parameters": {
  "exampleString": {
    "type": "string",
    "defaultValue": "test value"
  }
},

セキュリティで保護された文字列とオブジェクト

セキュリティで保護された文字列では文字列と同じ形式が使用され、セキュリティで保護されたオブジェクトではオブジェクトと同じ形式が使用されます。 パラメーターをセキュリティで保護された文字列またはセキュリティで保護されたオブジェクトに設定した場合、パラメーターの値はデプロイ履歴に保存されず、ログにも記録されません。 ただし、セキュリティで保護された値を、セキュリティで保護された値を想定していないプロパティに設定した場合、その値は保護されません。 たとえば、セキュリティで保護された文字列をタグに設定すると、その値はプレーンテキストとして格納されます。 パスワードとシークレットにはセキュリティで保護された文字列を使用します。

次の例は、セキュリティで保護された 2 つのパラメーターを示しています。

"parameters": {
  "password": {
    "type": "securestring"
  },
  "configValues": {
    "type": "secureObject"
  }
}

注意

セキュリティで保護された文字列やオブジェクトは出力値として使用しないでください。 セキュリティで保護された値を出力値として含めた場合、その値はデプロイ履歴に表示されず、別のテンプレートから取得できません。 代わりに、セキュリティで保護された値をキー コンテナーに保存し、そのキー コンテナーからパラメーターとして渡します

次のステップ

テンプレート構文の詳細については、「ARM テンプレートの構造と構文の詳細」を参照してください。