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.