

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à.

# Specificare le risorse esistenti in fase di esecuzione con i CloudFormation tipi di parametri forniti da
<a name="cloudformation-supplied-parameter-types"></a>

Durante la creazione del modello, è possibile creare parametri che richiedono agli utenti di inserire identificatori di AWS risorse esistenti o parametri di Systems Manager utilizzando i tipi di parametri specializzati forniti da CloudFormation. 

**Topics**
+ [Panoramica di](#cloudformation-supplied-parameter-types-overview)
+ [Esempio](#cloudformation-supplied-parameter-types-example)
+ [Considerazioni](#cloudformation-supplied-parameter-types-considerations)
+ [Tipi AWS di parametri specifici supportati](#aws-specific-parameter-types-supported)
+ [Tipi di parametri supportati da Systems Manager](#systems-manager-parameter-types-supported)
+ [Tipi di parametri Systems Manager non supportati](#systems-manager-parameter-types-unsupported)

## Panoramica di
<a name="cloudformation-supplied-parameter-types-overview"></a>

In CloudFormation, è possibile utilizzare i parametri per personalizzare gli stack fornendo valori di input durante la creazione o l'aggiornamento degli stack. Questa funzionalità rende i modelli riutilizzabili e flessibili in diversi scenari. 

I parametri sono definiti nella `Parameters` sezione di un CloudFormation modello. Ogni parametro ha un nome e un tipo e può avere impostazioni aggiuntive come un valore predefinito e valori consentiti. Per ulteriori informazioni, consulta [CloudFormation Parameterssintassi del modello](parameters-section-structure.md). 

Il tipo di parametro determina il tipo di valore di input che il parametro può accettare. Ad esempio, `Number` accetta solo valori numerici, mentre `String` accetta l’immissione di testo. 

CloudFormation fornisce diversi tipi di parametri aggiuntivi che è possibile utilizzare nei modelli per fare riferimento alle AWS risorse esistenti e ai parametri di Systems Manager. 

Questi tipi di parametri si dividono in due categorie:
+ **AWS-tipi di parametri specifici**: CloudFormation fornisce una serie di tipi di parametri che aiutano a catturare valori non validi durante la creazione o l'aggiornamento di uno stack. Quando utilizzi questi tipi di parametri, chiunque utilizzi il tuo modello deve specificare valori validi dalla regione Account AWS e dalla regione in cui sta creando lo stack.

  Se utilizzano Console di gestione AWS, CloudFormation fornisce un elenco precompilato di valori esistenti dal proprio account e dalla propria regione. In questo modo l’utente non dovrà ricordare alcuna informazione e immetterà correttamente un nome o un ID specifico. Al contrario, deve solo selezionare i valori da un elenco a discesa. In alcuni casi è anche possibile cercare i valori per ID, nome o valore del tag `Name`.
+ **Tipi di parametri di Systems Manager**: fornisce CloudFormation anche tipi di parametri che corrispondono ai parametri esistenti in Systems Manager Parameter Store. Quando si utilizzano questi tipi di parametri, chiunque utilizzi il modello deve specificare una chiave Parameter Store come valore del tipo di parametro Systems Manager, CloudFormation quindi recuperare il valore più recente da Parameter Store da utilizzare nel proprio stack. Ciò può essere utile quando è necessario aggiornare frequentemente le applicazioni con nuovi valori di proprietà, come la nuova Amazon Machine Image (AMI) IDs. Per ulteriori informazioni sul Parameter Store, consultare [Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html).

Una volta definiti i parametri nella `Parameters` sezione, puoi fare riferimento ai valori dei parametri in tutto il CloudFormation modello utilizzando la `Ref` funzione.

## Esempio
<a name="cloudformation-supplied-parameter-types-example"></a>

Nel seguente esempio viene mostrato un modello che utilizza i seguenti tipi di parametro. 
+ `AWS::EC2::VPC::Id`
+ `AWS::EC2::Subnet::Id`
+ `AWS::EC2::KeyPair::KeyName`
+ `AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>`

Per creare uno stack da questo modello devi specificare un ID del VPC, un ID di sottorete e un nome della coppia di chiavi esistenti dal tuo account. Puoi anche specificare una chiave Parameter Store esistente che faccia riferimento all’ID AMI desiderato o mantenga il valore predefinito di `/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2`. Questo parametro pubblico è un alias per l’ID AMI regionale per l’AMI Amazon Linux 2 più recente. Per ulteriori informazioni sui parametri pubblici, consulta [Discovering public parameters in Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-finding-public-parameters.html) nella *Guida per l’utente di AWS Systems Manager *.

### JSON
<a name="cloudformation-supplied-parameter-types-example.json"></a>

```
{
    "Parameters": {
        "VpcId": {
            "Description": "ID of an existing Virtual Private Cloud (VPC).",
            "Type": "AWS::EC2::VPC::Id"
        },
        "PublicSubnetId": {
            "Description": "ID of an existing public subnet within the specified VPC.",
            "Type": "AWS::EC2::Subnet::Id"
        },
        "KeyName": {
            "Description": "Name of an existing EC2 key pair to enable SSH access to the instance.",
            "Type": "AWS::EC2::KeyPair::KeyName"
        },
        "AMIId": {
            "Description": "Name of a Parameter Store parameter that stores the ID of the Amazon Machine Image (AMI).",
            "Type": "AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>",
            "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2"
        }
    },
    "Resources": {
        "InstanceSecurityGroup": {
            "Type": "AWS::EC2::SecurityGroup",
            "Properties": {
                "GroupDescription": "Enable SSH access via port 22",
                "VpcId": { "Ref": "VpcId" },
                "SecurityGroupIngress": [
                    {
                        "IpProtocol": "tcp",
                        "FromPort": 22,
                        "ToPort": 22,
                        "CidrIp": "0.0.0.0/0"
                    }
                ]
            }
        },
        "Ec2Instance": {
            "Type": "AWS::EC2::Instance",
            "Properties": {
                "KeyName": { "Ref": "KeyName" },
                "ImageId": { "Ref": "AMIId" },
                "NetworkInterfaces": [
                    {
                        "AssociatePublicIpAddress": "true",
                        "DeviceIndex": "0",
                        "SubnetId": { "Ref": "PublicSubnetId" },
                        "GroupSet": [{ "Ref": "InstanceSecurityGroup" }]
                    }
                ]
            }
        }
    },
    "Outputs": {
        "InstanceId": {
            "Value": { "Ref": "Ec2Instance" }
        }
    }
}
```

### YAML
<a name="cloudformation-supplied-parameter-types-example.yaml"></a>

```
Parameters:
  VpcId:
    Description: ID of an existing Virtual Private Cloud (VPC).
    Type: AWS::EC2::VPC::Id
  PublicSubnetId:
    Description: ID of an existing public subnet within the specified VPC.
    Type: AWS::EC2::Subnet::Id
  KeyName:
    Description: Name of an existing EC2 KeyPair to enable SSH access to the instance.
    Type: AWS::EC2::KeyPair::KeyName
  AMIId:
    Description: Name of a Parameter Store parameter that stores the ID of the Amazon Machine Image (AMI).
    Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
    Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
Resources:
  InstanceSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Enable SSH access via port 22
      VpcId: !Ref VpcId
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 22
          ToPort: 22
          CidrIp: 0.0.0.0/0
  Ec2Instance:
    Type: AWS::EC2::Instance
    Properties:
      KeyName: !Ref KeyName
      ImageId: !Ref AMIId
      NetworkInterfaces:
        - AssociatePublicIpAddress: "true"
          DeviceIndex: "0"
          SubnetId: !Ref PublicSubnetId
          GroupSet:
            - !Ref InstanceSecurityGroup
Outputs:
  InstanceId:
    Value: !Ref Ec2Instance
```

### AWS CLI comando per creare lo stack
<a name="cloudformation-supplied-parameter-types-cli-command"></a>

Il seguente comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html) crea uno stack in base al modello di esempio. 

```
aws cloudformation create-stack --stack-name MyStack \
  --template-body file://sampletemplate.json \
  --parameters \
ParameterKey="VpcId",ParameterValue="vpc-a123baa3" \
ParameterKey="PublicSubnetId",ParameterValue="subnet-123a351e" \
ParameterKey="KeyName",ParameterValue="MyKeyName" \
ParameterKey="AMIId",ParameterValue="MyParameterKey"
```

Per utilizzare un tipo di parametro che accetta un elenco di stringhe, ad esempio `List<AWS::EC2::Subnet::Id>`, devi evitare le virgole all’interno del `ParameterValue` con una doppia barra rovesciata, come illustrato nell’esempio seguente.

```
--parameters ParameterKey="SubnetIDs",ParameterValue="subnet-5ea0c127\\,subnet-6194ea3b\\,subnet-c87f2be0"
```

## Considerazioni
<a name="cloudformation-supplied-parameter-types-considerations"></a>

Si consiglia vivamente di utilizzare riferimenti dinamici per limitare l’accesso a definizioni di configurazione riservate, come le credenziali di terze parti. Per ulteriori informazioni, consulta [Ottenimento di valori archiviati in altri servizi utilizzando riferimenti dinamici](dynamic-references.md).

Se desideri consentire agli utenti del modello di specificare valori tra diversi Account AWS, non utilizzare tipi di parametri AWS specifici. Definisci, invece, parametri di tipo `String` o `CommaDelimitedList`. 

Ci sono alcune cose da tenere a mente con i tipi di parametri di Systems Manager:
+ Puoi visualizzare i valori risolti per i parametri nella scheda **Parametri** dello stack nella console oppure eseguendo [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stacks.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stacks.html) o [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-change-set.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-change-set.html). Ricorda che questi valori vengono impostati quando lo stack viene creato o aggiornato, pertanto potrebbero essere diversi dai valori più recenti presenti nel Parameter Store.
+ Per gli aggiornamenti dello stack, quando si **utilizza l'opzione Use existing value** (o impostata su `UsePreviousValue` true), significa che si desidera continuare a utilizzare la stessa chiave Parameter Store, non il relativo valore. CloudFormation recupera sempre il valore più recente.
+ Se specificate valori consentiti o altri vincoli, li CloudFormation convalida in base alle chiavi dei parametri specificate, ma non ai relativi valori. Devi convalidare i valori nel Parameter Store stesso.
+ Quando crei o aggiorni pile e crei set di modifiche, CloudFormation utilizza qualsiasi valore esistente in Parameter Store in quel momento. Se un parametro specificato non esiste in Parameter Store sotto quello del chiamante Account AWS, CloudFormation restituisce un errore di convalida.
+ Quando si esegue un set di modifiche, CloudFormation utilizza i valori specificati nel set di modifiche. Esamina questi valori prima di eseguire il set di modifiche perché potrebbero variare in Archivio parametri tra il momento in cui crei il set di modifiche e l’esecuzione dello stesso.
+ Per i parametri Parameter Store memorizzati nello stesso Account AWS, è necessario fornire il nome del parametro. Per i parametri Parameter Store condivisi da un altro Account AWS, devi fornire il parametro ARN completo.

## Tipi AWS di parametri specifici supportati
<a name="aws-specific-parameter-types-supported"></a>

CloudFormation supporta i seguenti tipi AWS specifici:

`AWS::EC2::AvailabilityZone::Name`  
Zona di disponibilità, ad esempio `us-west-2a`.

`AWS::EC2::Image::Id`  
ID dell’immagine Amazon EC2, ad esempio `ami-0ff8a91507f77f867`. Tieni presente che la CloudFormation console non mostra un elenco a discesa di valori per questo tipo di parametro.

`AWS::EC2::Instance::Id`  
ID dell’istanza Amazon EC2, ad esempio `i-1e731a32`.

`AWS::EC2::KeyPair::KeyName`  
Nome della coppia di chiavi Amazon EC2.

`AWS::EC2::SecurityGroup::GroupName`  
Nome di un gruppo di sicurezza VPC predefinito, ad esempio `my-sg-abc`.

`AWS::EC2::SecurityGroup::Id`  
ID del gruppo di sicurezza, ad esempio `sg-a123fd85`.

`AWS::EC2::Subnet::Id`  
ID della sottorete, ad esempio `subnet-123a351e`.

`AWS::EC2::Volume::Id`  
ID del volume Amazon EBS, ad esempio `vol-3cdd3f56`.

`AWS::EC2::VPC::Id`  
ID VPC, ad esempio `vpc-a123baa3`.

`AWS::Route53::HostedZone::Id`  
ID della zona ospitata Amazon Route 53, ad esempio `Z23YXV4OVPL04A`.

`List<AWS::EC2::AvailabilityZone::Name>`  
Matrice di zone di disponibilità per una Regione, ad esempio `us-west-2a, us-west-2b`.

`List<AWS::EC2::Image::Id>`  
Una serie di immagini Amazon EC2 IDs, ad esempio. `ami-0ff8a91507f77f867, ami-0a584ac55a7631c0c` Tieni presente che la CloudFormation console non mostra un elenco a discesa di valori per questo tipo di parametro.

`List<AWS::EC2::Instance::Id>`  
Un array di istanze Amazon EC2 IDs, ad esempio. `i-1e731a32, i-1e731a34`

`List<AWS::EC2::SecurityGroup::GroupName>`  
Matrice dei nomi dei gruppi di sicurezza VPC predefiniti, ad esempio `my-sg-abc, my-sg-def`.

`List<AWS::EC2::SecurityGroup::Id>`  
Una serie di gruppi di sicurezza IDs, ad esempio`sg-a123fd85, sg-b456fd85`.

`List<AWS::EC2::Subnet::Id>`  
Un array di sottoreti IDs, ad esempio`subnet-123a351e, subnet-456b351e`.

`List<AWS::EC2::Volume::Id>`  
Una matrice di volumi Amazon EBS IDs, ad esempio`vol-3cdd3f56, vol-4cdd3f56`.

`List<AWS::EC2::VPC::Id>`  
Una serie di VPC IDs, ad esempio. `vpc-a123baa3, vpc-b456baa3`

`List<AWS::Route53::HostedZone::Id>`  
Una serie di zone ospitate su Amazon Route 53 IDs, ad esempio`Z23YXV4OVPL04A, Z23YXV4OVPL04B`.

## Tipi di parametri supportati da Systems Manager
<a name="systems-manager-parameter-types-supported"></a>

CloudFormation supporta i seguenti tipi di parametri Systems Manager:

`AWS::SSM::Parameter::Name`  
Nome di una chiave di parametro Systems Manager. Utilizzate questo tipo di parametro solo per verificare che esista un parametro richiesto. CloudFormation non recupererà il valore effettivo associato al parametro. 

`AWS::SSM::Parameter::Value<String>`  
Parametro Systems Manager il cui valore è una stringa. Corrisponde al tipo di parametro `String` in Archivio parametri.

`AWS::SSM::Parameter::Value<List<String>>` o `AWS::SSM::Parameter::Value<CommaDelimitedList>`  
Parametro Systems Manager il cui valore è un elenco di stringhe. Corrisponde al tipo di parametro `StringList` in Archivio parametri.

`AWS::SSM::Parameter::Value<AWS-specific parameter type>`  
Un parametro Systems Manager il cui valore è un tipo AWS di parametro specifico.   
L’esempio seguente specifica il tipo `AWS::EC2::KeyPair::KeyName`:  
+ `AWS::SSM::Parameter::Value<AWS::EC2::KeyPair::KeyName>`

`AWS::SSM::Parameter::Value<List<AWS-specific parameter type>>`  
Un parametro Systems Manager il cui valore è un elenco di tipi AWS di parametri specifici.   
L’esempio seguente specifica un elenco di tipi `AWS::EC2::KeyPair::KeyName`:  
+ `AWS::SSM::Parameter::Value<List<AWS::EC2::KeyPair::KeyName>>`

## Tipi di parametri Systems Manager non supportati
<a name="systems-manager-parameter-types-unsupported"></a>

CloudFormation non supporta il seguente tipo di parametro Systems Manager:
+ Elenchi dei tipi di parametri Systems Manager, ad esempio: `List<AWS::SSM::Parameter::Value<String>>`

Inoltre, CloudFormation non supporta la definizione dei parametri del modello come tipi di parametri `SecureString` Systems Manager. Tuttavia, puoi specificare stringhe sicure come *valori* dei parametri per alcune risorse. Per ulteriori informazioni, consulta [Ottenimento di valori archiviati in altri servizi utilizzando riferimenti dinamici](dynamic-references.md).