

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# CloudFormation Parameterssintassi del modello
<a name="parameters-section-structure"></a>

Utilizza la sezione `Parameters` opzionale per personalizzare i modelli. Con i parametri, puoi immettere valori personalizzati nel modello ogni volta che crei o aggiorni uno stack. Utilizzando i parametri nei modelli puoi creare modelli riutilizzabili e flessibili che possono essere adattati a scenari specifici. 

Definendo i parametri del tipo appropriato, puoi scegliere da un elenco di identificatori di risorse esistenti quando utilizzi la console per creare il tuo stack. Per ulteriori informazioni, consulta [Specificare le risorse esistenti in fase di esecuzione con i CloudFormation tipi di parametri forniti da](cloudformation-supplied-parameter-types.md).

I parametri sono un metodo comune per specificare i valori delle proprietà delle risorse dello stack. Tuttavia, potrebbero esservi impostazioni dipendenti dalla regione o che gli utenti trovano complessi da individuare a causa di altre condizioni o dipendenze. In questi casi, potresti aggiungere la logica nel modello stesso, in modo che gli utenti possano specificare valori più semplici (o nessuno) per ottenere i risultati desiderati. Per ulteriori informazioni, consulta [CloudFormation Mappingssintassi del modello](mappings-section-structure.md).

## Sintassi
<a name="parameters-section-structure-syntax"></a>

Puoi dichiarare i parametri nella sezione `Parameters` di un modello, che utilizza la seguente sintassi generale:

### JSON
<a name="parameters-section-structure-syntax.json"></a>

```
"Parameters" : {
  "ParameterLogicalID" : {
    "Description": "Information about the parameter",
    "Type" : "DataType",
    "Default" : "value",
    "AllowedValues" : ["value1", "value2"]
  }
}
```

### YAML
<a name="parameters-section-structure-syntax.yaml"></a>

```
Parameters:
  ParameterLogicalID:
    Description: Information about the parameter
    Type: DataType
    Default: value
    AllowedValues:
      - value1
      - value2
```

Un parametro contiene un elenco di attributi che definiscono il valore e i vincoli rispetto al valore. L'unico attributo richiesto è`Type`, che può essere `String``Number`, o un tipo CloudFormation di parametro fornito. Puoi anche aggiungere un attributo `Description` che descrive il tipo di valore che devi specificare. Il nome e la descrizione del parametro appaiono nella pagina **Specifica parametri** quando utilizzi il modello nella procedura guidata **Creazione di stack**.

**Nota**  
Per impostazione predefinita, la CloudFormation console elenca i parametri di input in ordine alfabetico in base al relativo ID logico. Per ignorare questo ordinamento predefinito e raggruppare i parametri correlati, puoi utilizzare la chiave `AWS::CloudFormation::Interface` dei metadati nel tuo modello. Per ulteriori informazioni, consulta [Organizzazione CloudFormation dei parametri con `AWS::CloudFormation::Interface` metadati](aws-cloudformation-interface.md).

Per i parametri con valori predefiniti, CloudFormation utilizza i valori predefiniti a meno che gli utenti non specifichino un altro valore. Se ometti l’attributo predefinito, gli utenti devono specificare un valore per il parametro. Tuttavia, richiedere all’utente di immettere un valore non garantisce che il valore sia valido. Per convalidare il valore di un parametro, potete dichiarare vincoli o specificare un AWS tipo di parametro specifico.

Per i parametri senza valori predefiniti, gli utenti devono specificare un valore del nome della chiave al momento della creazione dello stack. In caso contrario, non CloudFormation riesce a creare lo stack e genera un'eccezione:

```
Parameters: [KeyName] must have values
```

## Properties
<a name="parameters-section-structure-properties"></a>

`AllowedPattern`  
Una espressione regolare che rappresenta i modelli da consentire per i tipi `String` o `CommaDelimitedList`. Se applicato su un parametro di tipo `String`, lo schema deve corrispondere all’intero valore del parametro fornito. Quando viene applicato a un parametro di tipo `CommaDelimitedList`, il modello deve corrispondere a ciascun valore nell’elenco.  
*Obbligatorio:* no

`AllowedValues`  
Matrice contenente l’elenco dei valori consentiti per il parametro. Quando viene applicato a un parametro di tipo `String`, il valore del parametro deve essere uno dei valori consentiti. Quando viene applicato a un parametro di tipo `CommaDelimitedList`, ogni valore nell’elenco deve essere uno dei valori consentiti.  
*Obbligatorio:* no  
Se utilizzi YAML e desideri utilizzare le stringhe `Yes` e `No` per `AllowedValues`, utilizza le virgolette singole per evitare che il parser YAML consideri questi valori booleani.

`ConstraintDescription`  
Stringa che illustra un vincolo in caso di violazione del vincolo. Ad esempio, senza una descrizione del vincolo, un parametro associato al modello consentito `[A-Za-z0-9]+` restituisce il seguente messaggio di errore quando l’utente specifica un valore non valido:  
`Malformed input-Parameter MyParameter must match pattern [A-Za-z0-9]+`  
Se aggiungi una descrizione del vincolo, ad esempio *must only contain letters (uppercase and lowercase) and number (solo lettere (maiuscole e minuscole) e numeri)*, puoi visualizzare il seguente messaggio di errore personalizzato:  
`Malformed input-Parameter MyParameter must only contain uppercase and lowercase letters and numbers`  
*Obbligatorio:* no

`Default`  
Valore del tipo appropriato per il modello da utilizzare se non viene specificato alcun valore al momento della creazione di uno stack. Se per il parametro definisci vincoli, devi specificare un valore conforme a tali vincoli.  
*Obbligatorio:* no

`Description`  
Stringa contenente un massimo di 4.000 caratteri che descrive il parametro.  
*Obbligatorio:* no

`MaxLength`  
Valore intero che determina il numero massimo di caratteri consentiti per i tipi `String`.  
*Obbligatorio:* no

`MaxValue`  
Valore numerico che determina il valore numerico massimo consentito per i tipi `Number`.  
*Obbligatorio:* no

`MinLength`  
Valore intero che determina il numero minimo di caratteri consentiti per i tipi `String`.  
*Obbligatorio:* no

`MinValue`  
Valore numerico che determina il valore numerico minimo consentito per i tipi `Number`.  
*Obbligatorio:* no

`NoEcho`  
Indica se mascherare il valore del parametro per impedirne la visualizzazione nella console, negli strumenti a riga di comando o nell’API. Se impostate l'`NoEcho`attributo su`true`, CloudFormation restituisce il valore del parametro mascherato da asterischi (\$1\$1\$1\$1\$1) per tutte le chiamate che descrivono lo stack o gli eventi dello stack, ad eccezione delle informazioni memorizzate nelle posizioni specificate di seguito.  
*Obbligatorio:* no  
L’utilizzo dell’attributo `NoEcho` non maschera le informazioni memorizzate nei seguenti elementi:  
+ La sezione dei modelli. `Metadata` CloudFormation non trasforma, modifica o oscura le informazioni incluse nella `Metadata` sezione. Per ulteriori informazioni, vedere [Metadati](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html).
+ Sezione dei modelli `Outputs`. Per ulteriori informazioni, consulta [Output](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html).
+ Attributo `Metadata` di una definizione di risorsa. Per ulteriori informazioni, consulta [Attributo `Metadata`](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-metadata.html).
Si consiglia vivamente di non utilizzare questi meccanismi per includere informazioni sensibili, come password o segreti.
Anziché incorporare informazioni riservate direttamente nei CloudFormation modelli, consigliamo di utilizzare parametri dinamici nel modello di pila per fare riferimento a informazioni sensibili archiviate e gestite all'esterno CloudFormation, ad esempio nel AWS Systems Manager Parameter Store o. Gestione dei segreti AWS  
Per ulteriori informazioni, consulta la best practice [Non incorporare le credenziali nei modelli](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/security-best-practices.html#creds).
Consigliamo vivamente di non includere parametri `NoEcho` o dati sensibili, nelle proprietà delle risorse che fanno parte dell’identificatore principale di una risorsa.  
Quando un `NoEcho` parametro è incluso in una proprietà che costituisce un identificatore di risorsa principale, CloudFormation può utilizzare il *valore effettivo in chiaro nell'identificatore* della risorsa principale. Questo ID risorsa può apparire in qualsiasi output o destinazione derivata.  
Per determinare quali proprietà delle risorse comprendono l’identificatore principale di un tipo di risorsa, consulta la documentazione di riferimento delle risorse per la risorsa in questione in [AWS resource and property types reference](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-template-resource-type-ref.html). Nella sezione **Return values** (Valori restituiti), il valore restituito della funzione `Ref` rappresenta le proprietà delle risorse che comprendono l’identificatore principale del tipo di risorsa.

`Type`  <a name="parameters-section-structure-properties-type"></a>
Tipo di dati per il parametro (`DataType`).  
*Obbligatorio:* sì  
CloudFormation supporta i seguenti tipi di parametri:    
`String`  
Stringa letterale. Puoi utilizzare i seguenti attributi per dichiarare i vincoli: `MinLength`, `MaxLength`, `Default`, `AllowedValues` e `AllowedPattern`.   
Ad esempio, gli utenti possono specificare `"MyUserName"`.  
`Number`  
Un numero intero o float. CloudFormation convalida il valore del parametro come numero; tuttavia, quando si utilizza il parametro altrove nel modello (ad esempio, utilizzando la funzione `Ref` intrinseca), il valore del parametro diventa una stringa.  
Puoi utilizzare i seguenti attributi per dichiarare i vincoli: `MinValue`, `MaxValue`, `Default` e `AllowedValues`.  
Ad esempio, gli utenti possono specificare `"8888"`.  
`List<Number>`  
Matrice di numeri interi o float separati da virgole. CloudFormation convalida il valore del parametro come numeri. Tuttavia, quando utilizzi il parametro in una posizione diversa nel modello (ad esempio, utilizzando la funzione intrinseca `Ref`), il valore del parametro diventa un elenco di stringhe.  
Ad esempio, gli utenti possono specificare `"80,20"` e `Ref` restituisce `["80","20"]`.  
`CommaDelimitedList`  
Matrice di stringhe letterali separate da virgole. Il numero totale di stringhe deve corrispondere al numero totale di virgole più uno. Ogni stringa membro non deve includere spazi.  
Ad esempio, gli utenti possono specificare `"test,dev,prod"` e `Ref` restituisce `["test","dev","prod"]`.  
Tipi di parametri specifici per AWS  
AWS valori come i nomi delle coppie di chiavi Amazon EC2 e il VPC. IDs Per ulteriori informazioni, consulta [Specifica delle risorse esistenti in fase di runtime](cloudformation-supplied-parameter-types.md).  
Tipi di parametro di Systems Manager  
Parametri che corrispondono ai parametri esistenti in Archivio parametri Systems Manager. Si specifica una chiave del parametro Systems Manager come valore del tipo di parametro Systems Manager e si CloudFormation recupera il valore più recente da Parameter Store da utilizzare per lo stack. Per ulteriori informazioni, consulta [Specifica delle risorse esistenti in fase di runtime](cloudformation-supplied-parameter-types.md).

## Requisiti generali per i parametri
<a name="parameters-section-structure-requirements"></a>

Per l’utilizzo dei parametri sono validi i seguenti requisiti:
+ È possibile avere un massimo di 200 parametri in un CloudFormation modello.
+ A ogni parametro deve essere assegnato un nome logico (definito anche ID logico), che deve essere alfanumerico e univoco rispetto a tutti i nomi logici all’interno del modello.
+ A ogni parametro deve essere assegnato un tipo di parametro supportato da CloudFormation. Per ulteriori informazioni, consulta la sezione [Type](#parameters-section-structure-properties-type).
+ A ogni parametro deve essere assegnato un valore in fase di esecuzione per CloudFormation effettuare correttamente il provisioning dello stack. Facoltativamente, è possibile specificare un valore predefinito CloudFormation da utilizzare a meno che non venga fornito un altro valore.
+ I parametri e i relativi riferimenti a essi devono essere dichiarati dall’interno dello stesso modello. Puoi fare riferimento ai parametri dalle sezioni `Resources` e `Outputs` del modello.

## Esempi
<a name="parameters-section-examples"></a>

**Topics**
+ [Parametro stringa semplice](#parameters-section-structure-example-1)
+ [Parametro password](#parameters-section-structure-example-2)
+ [Riferimento dei parametri](#parameters-section-structure-example-3)
+ [Parametro elenco definito da virgole](#parameters-section-structure-example-4)
+ [Restituzione un valore da un parametro CommaDelimitedList](#parameters-section-structure-example-5)

### Parametro stringa semplice
<a name="parameters-section-structure-example-1"></a>

L’esempio seguente dichiara un parametro denominato `InstanceTypeParameter` di tipo `String`. Questo parametro consente di specificare il tipo di istanza Amazon EC2 per lo stack. Se non viene fornito alcun valore durante la creazione o l'aggiornamento dello stack, CloudFormation utilizza il valore predefinito di. `t2.micro`

#### JSON
<a name="parameters-section-structure-example-1.json"></a>

```
"Parameters" : {
  "InstanceTypeParameter" : {
    "Description" : "Enter t2.micro, m1.small, or m1.large. Default is t2.micro.",
    "Type" : "String",
    "Default" : "t2.micro",
    "AllowedValues" : ["t2.micro", "m1.small", "m1.large"]
  }
}
```

#### YAML
<a name="parameters-section-structure-example-1.yaml"></a>

```
Parameters:
  InstanceTypeParameter:
    Description: Enter t2.micro, m1.small, or m1.large. Default is t2.micro.
    Type: String
    Default: t2.micro
    AllowedValues:
      - t2.micro
      - m1.small
      - m1.large
```

### Parametro password
<a name="parameters-section-structure-example-2"></a>

L’esempio seguente dichiara un parametro denominato `DBPwd` di tipo `String` senza valore predefinito. La proprietà `NoEcho` è impostata su `true` per impedire che il valore del parametro venga visualizzato nelle descrizioni degli stack. La lunghezza minima che può essere specificata è `1`e la lunghezza massima che può essere specificata è `41`. Il modello consente l’uso di caratteri alfabetici in maiuscolo e minuscolo e di numeri. Questo esempio illustra anche l’uso di un’espressione regolare per la proprietà `AllowedPattern`.

#### JSON
<a name="parameters-section-structure-example-2.json"></a>

```
"Parameters" : {
  "DBPwd" : {
    "NoEcho" : "true",
    "Description" : "The database admin account password",
    "Type" : "String",
    "MinLength" : "1",
    "MaxLength" : "41",
    "AllowedPattern" : "^[a-zA-Z0-9]*$"
  }
}
```

#### YAML
<a name="parameters-section-structure-example-2.yaml"></a>

```
Parameters: 
  DBPwd: 
    NoEcho: true
    Description: The database admin account password
    Type: String
    MinLength: 1
    MaxLength: 41
    AllowedPattern: ^[a-zA-Z0-9]*$
```

### Riferimento dei parametri
<a name="parameters-section-structure-example-3"></a>

Puoi utilizzare la funzione intrinseca `Ref` per fare riferimento a un parametro. CloudFormation utilizza il valore del parametro per effettuare il provisioning dello stack. Puoi fare riferimento ai parametri dalle sezioni `Resources` e `Outputs` dello stesso modello.

In questo esempio, la proprietà `InstanceType` della risorsa dell’istanza EC2 fa riferimento al valore del parametro `InstanceTypeParameter`:

#### JSON
<a name="parameters-section-structure-example-3.json"></a>

```
"Ec2Instance" : {
  "Type" : "AWS::EC2::Instance",
  "Properties" : {
    "InstanceType" : { "Ref" : "InstanceTypeParameter" },
    "ImageId" : "ami-0ff8a91507f77f867"
  }
}
```

#### YAML
<a name="parameters-section-structure-example-3.yaml"></a>

```
Ec2Instance:
  Type: AWS::EC2::Instance
  Properties:
    InstanceType:
      Ref: InstanceTypeParameter
    ImageId: ami-0ff8a91507f77f867
```

### Parametro elenco definito da virgole
<a name="parameters-section-structure-example-4"></a>

Il parametro di tipo `CommaDelimitedList` può essere utile quando è necessario fornire più valori per una singola proprietà. L’esempio seguente dichiara un parametro denominato `DbSubnetIpBlocks` con un valore predefinito di tre intervalli CIDR separati da virgole.

#### JSON
<a name="parameters-section-structure-example-4.json"></a>

```
"Parameters" : {
  "DbSubnetIpBlocks": {
    "Description": "Comma-delimited list of three CIDR blocks",
    "Type": "CommaDelimitedList",
    "Default": "10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24"
  }
}
```

#### YAML
<a name="parameters-section-structure-example-4.yaml"></a>

```
Parameters: 
  DbSubnetIpBlocks: 
    Description: "Comma-delimited list of three CIDR blocks"
    Type: CommaDelimitedList
    Default: "10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24"
```

### Restituzione un valore da un parametro CommaDelimitedList
<a name="parameters-section-structure-example-5"></a>

Per fare riferimento a un valore specifico in un elenco, utilizza la funzione intrinseca `Fn::Select` nella sezione `Resources` del modello. Puoi trasmettere il valore di indice dell’oggetto desiderato e un elenco di oggetti, come mostrato nell’esempio seguente.

#### JSON
<a name="parameters-section-structure-example-5.json"></a>

```
{
    "Parameters": {
        "VPC": {
            "Type": "String",
            "Default": "vpc-123456"
        },
        "VpcAzs": {
            "Type": "CommaDelimitedList",
            "Default": "us-west-2a, us-west-2b, us-west-2c"
        },
        "DbSubnetIpBlocks": {
            "Type": "CommaDelimitedList",
            "Default": "172.16.0.0/26, 172.16.0.64/26, 172.16.0.128/26"
        }
    },
    "Resources": {
        "DbSubnet1": {
            "Type": "AWS::EC2::Subnet",
            "Properties": {
                "AvailabilityZone": {
                    "Fn::Select": [
                      0,
                      { 
                        "Ref": "VpcAzs" 
                      }
                   ]
                },
                "VpcId": {
                    "Ref": "VPC"
                },
                "CidrBlock": {
                    "Fn::Select": [
                        0,
                        { "Ref": "DbSubnetIpBlocks" }
                    ]
                }
            }
        },
        "DbSubnet2": {
            "Type": "AWS::EC2::Subnet",
            "Properties": {
                "AvailabilityZone": {
                    "Fn::Sub": [
                        "${AWS::Region}${AZ}",
                        {
                            "AZ": {
                                "Fn::Select": [
                                    1,
                                    { "Ref": "VpcAzs" }
                                ]
                            }
                        }
                    ]
                },
                "VpcId": {
                    "Ref": "VPC"
                },
                "CidrBlock": {
                    "Fn::Select": [
                        1,
                        { "Ref": "DbSubnetIpBlocks" }
                    ]
                }
            }
        },
        "DbSubnet3": {
            "Type": "AWS::EC2::Subnet",
            "Properties": {
                "AvailabilityZone": {
                    "Fn::Sub": [
                        "${AWS::Region}${AZ}",
                        {
                            "AZ": {
                                "Fn::Select": [
                                    2,
                                    { "Ref": "VpcAzs" }
                                ]
                            }
                        }
                    ]
                },
                "VpcId": {
                    "Ref": "VPC"
                },
                "CidrBlock": {
                    "Fn::Select": [
                        2,
                        { "Ref": "DbSubnetIpBlocks" }
                    ]
                }
            }
        }
    }
}
```

#### YAML
<a name="parameters-section-structure-example-5.yaml"></a>

```
Parameters:
  VPC:
    Type: String
    Default: vpc-123456
  VpcAzs:
    Type: CommaDelimitedList
    Default: us-west-2a, us-west-2b, us-west-2c
  DbSubnetIpBlocks:
    Type: CommaDelimitedList
    Default: 172.16.0.0/26, 172.16.0.64/26, 172.16.0.128/26
Resources:
  DbSubnet1:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: !Select
        - 0 
        - !Ref VpcAzs
      VpcId: !Ref VPC
      CidrBlock: !Select
        - 0
        - !Ref DbSubnetIpBlocks
  DbSubnet2:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: !Sub
        - ${AWS::Region}${AZ}
        - AZ: !Select
            - 1
            - !Ref VpcAzs
      VpcId: !Ref VPC
      CidrBlock: !Select
        - 1
        - !Ref DbSubnetIpBlocks
  DbSubnet3:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: !Sub
        - ${AWS::Region}${AZ}
        - AZ: !Select
            - 2
            - !Ref VpcAzs
      VpcId: !Ref VPC
      CidrBlock: !Select
        - 2
        - !Ref DbSubnetIpBlocks
```

## Risorse correlate
<a name="parameters-section-structure-related-resources"></a>

CloudFormation supporta anche l'uso di riferimenti dinamici per specificare dinamicamente i valori delle proprietà. Ad esempio, potrebbe essere necessario fare riferimento di stringhe sicure archiviate in Systems Manager Parameter Store. Per ulteriori informazioni, consulta [Ottenimento di valori archiviati in altri servizi utilizzando riferimenti dinamici](dynamic-references.md).

Puoi inoltre utilizzare gli pseudo parametri all’interno di una funzione `Ref` o `Sub` per compilare dinamicamente i valori. Per ulteriori informazioni, consulta [Ottieni AWS valori usando pseudo parametri](pseudo-parameter-reference.md). 