Typy danych w szablonach ARM

W tym artykule opisano typy danych obsługiwane w szablonach usługi Azure Resource Manager (szablony usługi ARM).

Obsługiwane typy

W szablonie usługi ARM można użyć następujących typów danych:

  • macierz
  • bool
  • int (integer)
  • obiekt
  • secureObject
  • securestring
  • ciąg

Tablice

Tablice zaczynają się od lewego nawiasu kwadratowego ([) i kończą się prawym nawiasem kwadratowym (]). Tablicę można zadeklarować w jednym wierszu lub wielu wierszach. Każdy element jest oddzielony przecinkiem.

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

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

Elementy tablicy mogą być tego samego typu lub różne typy.

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

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

Wartości logiczne

Podczas określania wartości logicznych użyj polecenia true lub false. Nie otaczaj wartości znakami cudzysłowu.

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

Liczby całkowite

Podczas określania wartości całkowitych nie używaj cudzysłowów.

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

W przypadku liczb całkowitych przekazywanych jako parametry śródwierszowe zakres wartości może być ograniczony przez zestaw SDK lub narzędzie wiersza polecenia używane do wdrożenia. Na przykład w przypadku wdrażania szablonu przy użyciu programu PowerShell typy całkowite mogą wahać się od -2147483648 do 2147483647. Aby uniknąć tego ograniczenia, określ duże wartości całkowite w pliku parametrów. Typy zasobów stosują własne limity dla właściwości typu integer.

Obiekty

Obiekty zaczynają się od lewego nawiasu klamrowego ({) i kończą się prawym nawiasem klamrowym (}). Każda właściwość w obiekcie składa się z key i value. Znaki key i value są ujęte w cudzysłowy podwójne i oddzielone dwukropkiem (:). Każda właściwość jest oddzielona przecinkiem.

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

Właściwość można pobrać z obiektu z notacją kropkową.

{
    "$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]"
        }
    }
}

W formacie JSON obiekt jest nieuporządkowanym zbiorem zero lub większej liczby par klucz/wartość. Kolejność może być różna w zależności od implementacji. Na przykład funkcja Bicep items() sortuje obiekty w kolejności alfabetycznej. W innych miejscach można zachować oryginalną kolejność. Ze względu na ten niedeterminizm należy unikać wprowadzania wszelkich założeń dotyczących porządkowania kluczy obiektów podczas pisania kodu, który wchodzi w interakcje z parametrami i danymi wyjściowymi wdrożeń.

Ciągi

Ciągi są oznaczone podwójnymi cudzysłowami.

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

Zabezpieczanie ciągów i obiektów

Bezpieczny ciąg używa tego samego formatu co ciąg, a bezpieczny obiekt używa tego samego formatu co obiekt. Gdy ustawisz parametr na bezpieczny ciąg lub bezpieczny obiekt, wdrożenie nie zapisuje wartości parametru do historii wdrożeń i nie rejestruje jej. Maskowanie danych nie jest gwarantowane dla przekształconych lub wyprowadzonych wariantów tej wartości. Pełne wytyczne dotyczące ukrywania danych znajdziesz w Secure parameters. Jeśli ustawisz wartość bezpieczną dla właściwości, która nie oczekuje wartości bezpiecznej, wartość ta nie jest chroniona. Jeśli na przykład ustawisz bezpieczny ciąg znaków na tagu, ta wartość jest przechowywana jako zwykły tekst. Używaj bezpiecznych ciągów dla haseł i sekretów.

W poniższym przykładzie przedstawiono dwa bezpieczne parametry.

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

Uwaga / Notatka

Nie używaj bezpiecznych ciągów ani obiektów jako wartości wyjściowych. W przypadku uwzględnienia bezpiecznej wartości jako wartości wyjściowej wartość nie jest wyświetlana w historii wdrożenia i nie można jej pobrać z innego szablonu. Zamiast tego zapisz bezpieczną wartość w magazynie kluczy i przekaż jako parametr z magazynu kluczy.

Dalsze kroki

Aby dowiedzieć się więcej o składni szablonu, zobacz Zrozum strukturę i składnię szablonów ARM.