Condividi tramite


Tipi di dati nei modelli di ARM

Questo articolo descrive i tipi di dati supportati nei modelli di Azure Resource Manager (modelli di ARM).

Tipi supportati

All'interno di un modello di ARM è possibile usare questi tipi di dati:

  • array
  • bool
  • int
  • oggetto
  • secureObject
  • securestring
  • string

Matrici

Le matrici iniziano con una parentesi quadra sinistra ([) e terminano con una parentesi quadra destra (]). Una matrice può essere dichiarata in una singola riga o in più righe. Ogni elemento è separato da una virgola.

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

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

Gli elementi di una matrice possono essere dello stesso tipo o di tipi diversi.

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

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

Valori booleani

Quando si specificano valori booleani, usare true o false. Non racchiudere il valore tra virgolette.

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

Integer

Quando si specificano valori interi, non usare le virgolette.

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

Per i numeri interi passati come parametri inline, l'intervallo di valori può essere limitato dall'SDK o dallo strumento da riga di comando usato per la distribuzione. Ad esempio, quando si usa PowerShell per distribuire un modello, i tipi integer possono variare da -2147483648 a 2147483647. Per evitare questa limitazione, specificare valori integer di grandi dimensioni in un file di parametri. I tipi di risorse applicano i propri limiti per le proprietà integer.

Oggetti

Gli oggetti iniziano con una parentesi graffa sinistra ({) e terminano con una parentesi graffa destra (}). Ogni proprietà in un oggetto è costituita da key e value. key e value sono racchiusi tra virgolette doppie e separati dai due punti (:). Ogni proprietà è separata da una virgola.

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

È possibile ottenere una proprietà da un oggetto con notazione col punto.

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

In JSON un oggetto è una raccolta non ordinata di zero o più coppie chiave/valore. L'ordinamento può essere diverso a seconda delle implementazioni. Ad esempio, la funzione items()Bicep dispone gli oggetti in ordine alfabetico. In altre posizioni, l'ordinamento originale può essere mantenuto. A causa di questo non determinismo, evitare di fare ipotesi sull'ordinamento delle chiavi oggetto durante la scrittura del codice, che interagisce con i parametri e gli output delle distribuzioni.

Stringhe

Le stringhe sono contrassegnate da virgolette doppie.

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

Stringhe e oggetti sicuri

La stringa sicura usa lo stesso formato delle stringhe e l'oggetto sicuro usa lo stesso formato degli oggetti. Quando si imposta un parametro su una stringa sicura o su un oggetto sicuro, il valore del parametro non viene salvato nella cronologia di distribuzione e non viene registrato. Tuttavia, se si imposta tale valore sicuro su una proprietà che non prevede un valore sicuro, il valore non è protetto. Ad esempio, se si imposta una stringa sicura su un tag, tale valore viene archiviato come testo normale. Usare stringhe sicure per password e segreti.

L'esempio seguente illustra due parametri sicuri.

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

Nota

Non usare stringhe o oggetti sicuri come valori di output. Se si include un valore sicuro come valore di output, il valore non viene visualizzato nella cronologia di distribuzione e non può essere recuperato da un altro modello. Salvare invece il valore sicuro in un insieme di credenziali delle chiavi e passare come parametro dall'insieme di credenziali delle chiavi.

Passaggi successivi

Per informazioni sulla sintassi del modello, vedere Comprendere la struttura e la sintassi dei modelli di ARM.