Typy danych w szablonach usługi 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:

  • tablica
  • bool
  • int
  • obiekt
  • secureObject
  • securestring
  • string

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 za pomocą 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 całkowitych.

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 elementów 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 nieurządkowaną kolekcją par klucz/wartość zero lub więcej. 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łowymi.

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

Zabezpieczanie ciągów i obiektów

Ciąg bezpieczny używa tego samego formatu co ciąg, a bezpieczny obiekt używa tego samego formatu co obiekt. Po ustawieniu parametru na bezpieczny ciąg lub bezpieczny obiekt wartość parametru nie jest zapisywana w historii wdrożenia i nie jest rejestrowana. Jeśli jednak ustawisz tę bezpieczną wartość na właściwość, która nie oczekuje bezpiecznej wartości, wartość nie jest chroniona. Jeśli na przykład ustawisz bezpieczny ciąg na tag, ta wartość jest przechowywana jako zwykły tekst. Używaj bezpiecznych ciągów dla haseł i wpisów tajnych.

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

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

Uwaga

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.

Następne kroki

Aby dowiedzieć się więcej o składni szablonu, zobacz Omówienie struktury i składni szablonów usługi ARM.