

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

# Migra AWS CloudFormation gli stack ai modelli di lancio
<a name="migrate-launch-configurations-with-cloudformation"></a>

Puoi migrare i tuoi modelli di CloudFormation stack esistenti dalle configurazioni di avvio ai modelli di lancio. A tale scopo, aggiungi un modello di avvio direttamente a un modello di stack esistente, quindi associa il modello di avvio al gruppo con dimensionamento automatico nel modello di stack. Successivamente, sarà necessario utilizzare il tuo modello modificato per aggiornare lo stack. 

Durante la migrazione ai modelli di lancio, questo argomento consente di risparmiare tempo fornendo istruzioni per riscrivere le configurazioni di lancio nei modelli di stack come modelli di lancio. CloudFormation Per ulteriori informazioni sulla migrazione delle configurazioni di avvio per lanciare i modelli, consulta [Migra i tuoi gruppi di Auto Scaling ai modelli di avvio](migrate-to-launch-templates.md).

**Topics**
+ [Trova gruppi con dimensionamento automatico che utilizzano una configurazione di avvio](#find-auto-scaling-groups-to-migrate)
+ [Aggiornare uno stack per utilizzare un modello di avvio](#update-stack-to-use-launch-template)
+ [Comprendi l’aggiornamento dei comportamenti delle risorse stack](#understand-update-behavior)
+ [Monitora la migrazione](#track-the-migration)
+ [Riferimento della mappatura di avvio](#launch-configuration-mapping-reference)

## Trova gruppi con dimensionamento automatico che utilizzano una configurazione di avvio
<a name="find-auto-scaling-groups-to-migrate"></a>

**Trova gruppi con dimensionamento automatico che utilizzano una configurazione di avvio**
+ Utilizzate il seguente [describe-auto-scaling-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html)comando per elencare i nomi dei gruppi di Auto Scaling che utilizzano configurazioni di avvio nella regione specificata. Includi l'`--filters`opzione per restringere i risultati ai gruppi associati a uno CloudFormation stack (filtrando in base alla chiave del `aws:cloudformation:stack-name` tag). 

  ```
  aws autoscaling describe-auto-scaling-groups --region {{REGION}} \
    --filters Name=tag-key,Values=aws:cloudformation:stack-name \
    --query 'AutoScalingGroups[?LaunchConfigurationName!=`null`].AutoScalingGroupName'
  ```

  Di seguito viene mostrato l'output di esempio.

  ```
  [
      "{stack-name}-group-1",
      "{stack-name}-group-2",
      "{stack-name}-group-3"
  ]
  ```

  Sono disponibili altri AWS CLI comandi utili per trovare i gruppi di Auto Scaling in cui migrare e filtrare l'output. [Migra i tuoi gruppi di Auto Scaling ai modelli di avvio](migrate-to-launch-templates.md)

**Importante**  
Se le risorse dello stack hanno un `AWSEB` nome, significa che sono state create tramite. AWS Elastic Beanstalk In questo caso, è necessario aggiornare l'ambiente Beanstalk in modo che Elastic Beanstalk rimuova la configurazione di avvio e la sostituisca con un modello di avvio.

## Aggiornare uno stack per utilizzare un modello di avvio
<a name="update-stack-to-use-launch-template"></a>

Segui i passaggi indicati in questa sezione per effettuare le seguenti operazioni:
+ Riscrivi la configurazione di lancio come modello di avvio utilizzando le proprietà equivalenti del modello di avvio. 
+ Associa il nuovo modello di avvio con il gruppo con dimensionamento automatico. 
+ Distribuisci questi aggiornamenti.

**Per modificare il modello dello stack e aggiornare lo stack**

1. Segui le stesse procedure generali per modificare il modello di stack descritte in [Modificare un modello di stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-get-template.html) nella *AWS CloudFormation Guida per l'utente*.

1. Riscrivi la configurazione di avvio come modello di avvio. Fai riferimento al file di esempio seguente: 

   **Esempio: una semplice configurazione di avvio**

   ```
   ---
   Resources:
     myLaunchConfig: 
       Type: AWS::AutoScaling::LaunchConfiguration
       Properties: 
         ImageId: ami-02354e95b3example
         InstanceType: t3.micro
         SecurityGroups:
           - !Ref EC2SecurityGroup
         KeyName: MyKeyPair
         BlockDeviceMappings: 
           - DeviceName: /dev/xvda
             Ebs: 
               VolumeSize: 150
               DeleteOnTermination: true
         UserData: 
           Fn::Base64: !Sub |
             #!/bin/bash -xe
             yum install -y aws-cfn-bootstrap
             /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource myASG --region ${AWS::Region}
   ```

   **Esempio: l'equivalente del modello di avvio**

   ```
   ---
   Resources:
     myLaunchTemplate:
       Type: AWS::EC2::LaunchTemplate
       Properties:
         LaunchTemplateName: {{!Sub ${AWS::StackName}-launch-template}}
         LaunchTemplateData:
           ImageId: ami-02354e95b3example
           InstanceType: t3.micro
           SecurityGroupIds:
             - Ref! EC2SecurityGroup
           KeyName: MyKeyPair
           BlockDeviceMappings: 
             - DeviceName: /dev/xvda
               Ebs: 
                 VolumeSize: 150
                 DeleteOnTermination: true
           UserData: 
             Fn::Base64: !Sub |
               #!/bin/bash -x
               yum install -y aws-cfn-bootstrap
               /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource myASG --region ${AWS::Region}
   ```

   Per informazioni di riferimento su tutte le proprietà supportate da Amazon EC2, consulta [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html)la Guida per l'*AWS CloudFormation utente*. 

   Nota come il modello di avvio include la proprietà `LaunchTemplateName` con un valore di `!Sub ${AWS::StackName}-launch-template`. Questo è necessario se si desidera che il nome del modello di avvio includa il nome dello stack.

1. Se la proprietà `IamInstanceProfile` è presente nella configurazione di avvio, dovrai convertirla in una struttura e specificare il nome o l'ARN del profilo dell'istanza. Per vedere un esempio, consulta [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html). 

1. Se le proprietà `AssociatePublicIpAddress`, `InstanceMonitoring` o `PlacementTenancy` sono presenti nella configurazione di avvio, è necessario convertirle in una struttura. Per alcuni esempi, consulta [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html). 

   Un'eccezione si verifica quando il valore della proprietà `MapPublicIpOnLaunch` nelle sottoreti utilizzate per il gruppo con dimensionamento automatico corrisponde al valore della proprietà `AssociatePublicIpAddress` nella configurazione di avvio. In questo caso, puoi ignorare la proprietà `AssociatePublicIpAddress`. La `AssociatePublicIpAddress` proprietà viene utilizzata solo per sovrascrivere la `MapPublicIpOnLaunch` proprietà e modificare se le istanze ricevono un IPv4 indirizzo pubblico all'avvio. 

1. È possibile copiare i gruppi di sicurezza dalla proprietà `SecurityGroups` in una delle due posizioni del modello di avvio. Normalmente, si copiano i gruppi di sicurezza nella proprietà `SecurityGroupIds`. Tuttavia, se si crea una struttura `NetworkInterfaces` all'interno del modello di avvio per specificare la proprietà `AssociatePublicIpAddress`, è necessario copiare invece i gruppi di sicurezza nella proprietà `Groups` dell'interfaccia di rete.

1. Se nella configurazione di avvio sono presenti strutture `BlockDeviceMapping` impostate su `NoDevice` o `true` è necessario specificare una stringa vuota per `NoDevice` nel modello di avvio per far sì che Amazon EC2 ometta il dispositivo.

1. Se la proprietà `SpotPrice` è presente nella configurazione di avvio, ti consigliamo di ometterla dal modello di avvio. Le tue istanze spot verranno avviate al prezzo Spot corrente. Questo prezzo non supererà mai il prezzo on demand.

   Per richiedere le istanze spot, hai due opzioni che si escludono a vicenda:
   + La prima consiste nell'utilizzare la struttura `InstanceMarketOptions` del modello di avvio (scelta non consigliata). Per ulteriori informazioni, consulta [AWS::EC2::LaunchTemplate InstanceMarketOptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-instancemarketoptions.html)la Guida per l'*AWS CloudFormation utente*.
   + L'altro è aggiungere una struttura `MixedInstancesPolicy` al gruppo con dimensionamento automatico. In questo modo avrai a disposizione più opzioni su come effettuare la richiesta. Una richiesta di istanza Spot nel modello di avvio non supporta la selezione di più di un tipo di istanza per gruppo con dimensionamento automatico. Tuttavia, una policy di istanze miste supporta più di una selezione del tipo di istanza per gruppo con dimensionamento automatico. Le richieste di istanze spot traggono vantaggio dalla possibilità di scegliere tra più di un tipo di istanza. Per ulteriori informazioni, consulta [AWS::AutoScaling::AutoScalingGroup MixedInstancesPolicy AWS::AutoScaling::AutoScaling](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-mixedinstancespolicy.html) nella *Guida AWS CloudFormation per l'utente*.

1. Rimuovi la `LaunchConfigurationName` proprietà dalla risorsa [AWS::AutoScaling::AutoScalingAWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) . Aggiungi il modello di avvio al suo posto.

   Negli esempi seguenti, la funzione intrinseca [Ref](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html) ottiene l'ID della [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html)risorsa con l'ID logico. `myLaunchTemplate` La [GetAtt](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html)funzione ottiene il numero di versione più recente (ad esempio`1`) del modello di avvio per la `Version` proprietà.

   **Esempio: senza una policy a istanze miste**

   ```
   ---
   Resources:
     myASG:
       Type: AWS::AutoScaling::AutoScalingGroup
       Properties:
         LaunchTemplate:
           LaunchTemplateId: {{!Ref myLaunchTemplate}}
           Version: {{!GetAtt myLaunchTemplate.LatestVersionNumber}}
         ...
   ```

   **Esempio: con una policy a istanze miste**

   ```
   ---
   Resources:
     myASG:
       Type: AWS::AutoScaling::AutoScalingGroup
       Properties:        
         MixedInstancesPolicy:
           LaunchTemplate:
             LaunchTemplateSpecification:
               LaunchTemplateId: {{!Ref myLaunchTemplate}}
               Version: {{!GetAtt myLaunchTemplate.LatestVersionNumber}}
         ...
   ```

   Per informazioni di riferimento per tutte le proprietà supportate da Amazon EC2 Auto Scaling [AWS::AutoScaling::AutoScaling, AWS::AutoScaling::AutoScaling](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) Group *AWS CloudFormation nella* Guida per l'utente.

1. Quando sei pronto per distribuire questi aggiornamenti, segui le CloudFormation procedure per aggiornare lo stack con il modello di stack modificato. Per ulteriori informazioni, consultare [Modifica di un ruolo](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-get-template.html) nella *AWS CloudFormation Guida per l'utente*. 

## Comprendi l’aggiornamento dei comportamenti delle risorse stack
<a name="understand-update-behavior"></a>

CloudFormation aggiorna le risorse dello stack confrontando le modifiche tra il modello aggiornato fornito e le configurazioni delle risorse descritte nella versione precedente del modello di stack. Le configurazioni delle risorse non interessate da modifiche rimangono inalterate durante il processo di aggiornamento.

CloudFormation supporta l'[UpdatePolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html)attributo per i gruppi Auto Scaling. Durante un aggiornamento, se `UpdatePolicy` è impostato su`AutoScalingRollingUpdate`, CloudFormation sostituisce `InService` le istanze dopo aver eseguito i passaggi di questa procedura. Se `UpdatePolicy` è impostato su`AutoScalingReplacingUpdate`, CloudFormation sostituisce il gruppo Auto Scaling e il relativo pool caldo (se esistente).

Se non hai specificato un `UpdatePolicy` attributo per il tuo gruppo Auto Scaling, viene verificata la correttezza del modello di avvio, ma CloudFormation non implementa alcuna modifica tra le istanze del gruppo Auto Scaling. Tutte le nuove istanze riceveranno il tuo modello di avvio, ma le istanze esistenti continuano a essere eseguite con la configurazione di avvio con cui sono state originariamente avviate (nonostante la configurazione di avvio non esista). L'eccezione si verifica quando si modificano le opzioni di acquisto, ad esempio aggiungendo una policy per le istanze miste. In questo caso, il gruppo con dimensionamento automatico sostituisce gradualmente le istanze esistenti con nuove istanze in base alle nuove opzioni di acquisto.

Se devi ripristinare una modifica per passare dalle configurazioni di avvio ai modelli di avvio, assicurati di testare l'operazione di ripristino.

## Monitora la migrazione
<a name="track-the-migration"></a>

**per Monitorare la migrazione**

1. Nella [console CloudFormation](https://console.aws.amazon.com/cloudformation), selezionare lo stack aggiornato, quindi selezionare la scheda **Eventi** per visualizzare gli eventi dello stack.

1. Per aggiornare l'elenco degli eventi con gli eventi più recenti, scegli il pulsante di aggiornamento nella CloudFormation console.

1. Durante l'aggiornamento dello stack, noterai più eventi per ogni aggiornamento delle risorse. Se nella colonna **Motivo dello stato** vedi un'eccezione che indica un problema durante il tentativo di creare il modello di avvio, consulta [Risoluzione dei problemi di Amazon EC2 Auto Scaling: modelli di avvio](ts-as-launch-template.md) per le possibili cause.

1. (Facoltativo) A seconda dell'utilizzo dell'attributo `UpdatePolicy`, puoi monitorare l'avanzamento del tuo gruppo con dimensionamento automatico dalla pagina dei [gruppi con dimensionamento automatico](https://console.aws.amazon.com/ec2/v2/home?#AutoScalingGroups) della console Amazon EC2. Seleziona il gruppo Auto Scaling. Nella scheda **Activity (Attività)**, in **Activity history (Cronologia attività)**, la colonna **Status (Stato)** indica se il gruppo con dimensionamento automatico ha avviato o terminato correttamente le istanze o se l'attività di dimensionamento è ancora in corso. 

1. Quando l'aggiornamento dello stack è completo, CloudFormation genera un evento `UPDATE_COMPLETE` stack. Per ulteriori informazioni, consulta [Monitoraggio dell'avanzamento di un aggiornamento dello stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-monitor-stack.html) nella *AWS CloudFormation Guida per l’utente*. 

1. Una volta completato l'aggiornamento dello stack, apri [la pagina dei modelli di avvio](https://console.aws.amazon.com/ec2/v2/#LaunchTemplates) e [la pagina delle configurazioni di avvio](https://console.aws.amazon.com/ec2/v2/home?#LaunchConfigurations) della console Amazon EC2. Noterai che viene creato un nuovo modello di avvio e la configurazione di avvio viene eliminata. 

## Riferimento della mappatura di avvio
<a name="launch-configuration-mapping-reference"></a>

A scopo di riferimento, la tabella seguente elenca tutte le proprietà di primo livello della [AWS::AutoScaling::LaunchConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html)risorsa con le proprietà corrispondenti nella risorsa. [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html)


| Avvia la proprietà di origine della configurazione | Proprietà target del modello di avvio | 
| --- | --- | 
| AssociatePublicIpAddress | NetworkInterfaces.AssociatePublicIpAddress | 
| BlockDeviceMappings | BlockDeviceMappings | 
| ClassicLinkVPCId | Non disponibile¹ | 
| ClassicLinkVPCSecurityGroups | Non disponibile¹ | 
| EbsOptimized | EbsOptimized | 
| IamInstanceProfile | Specifica IamInstanceProfile.Arn o IamInstanceProfile.Name, ma non entrambi  | 
| ImageId | ImageId | 
| InstanceId | InstanceId | 
| InstanceMonitoring | Monitoring.Enabled | 
| InstanceType | InstanceType | 
| KernelId | KernelId | 
| KeyName | KeyName | 
| LaunchConfigurationName | LaunchTemplateName | 
| MetadataOptions | MetadataOptions | 
| PlacementTenancy | Placement.Tenancy  | 
| RamDiskId | RamDiskId | 
| SecurityGroups | Specifica SecurityGroupIds o NetworkInterfaces.Groups, ma non entrambi | 
| SpotPrice | InstanceMarketOptions.SpotOptions.MaxPrice | 
| UserData | UserData | 

¹ Le `ClassicLinkVPCSecurityGroups` proprietà `ClassicLinkVPCId` and non possono essere utilizzate in un modello di avvio perché EC2-Classic non è più disponibile.