次の方法で共有


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

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

サポートされている型

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

  • 配列
  • ブール (bool)
  • 整数 (int)
  • オブジェクト
  • セキュアオブジェクト
  • セキュア文字列
  • ひも

配列

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

"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 テンプレートの構造と構文について」を参照してください。