

# Configurar os recursos do Amazon EC2 Auto Scaling com o CloudFormation
<a name="quickref-ec2-auto-scaling"></a>

Os exemplos a seguir mostram snippets diferentes a serem incluídos em modelos para uso com o Amazon EC2 Auto Scaling.

**Topics**
+ [Criar um grupo do Auto Scaling com uma única instância](#scenario-single-instance-as-group)
+ [Criar um grupo do Auto Scaling com balanceador de carga anexado](#scenario-as-group)
+ [Criar um grupo do Auto Scaling com notificações](#scenario-as-notification)
+ [Criar um grupo do Auto Scaling que usa um `CreationPolicy` e um `UpdatePolicy`](#scenario-as-updatepolicy)
+ [Criar uma política de escalabilidade em etapas](#scenario-step-scaling-policy)
+ [Exemplos de grupos de instâncias mistas](#scenario-mixed-instances-group-template-examples)
+ [Exemplos de configuração de ativação](#scenario-launch-config-template-examples)

## Criar um grupo do Auto Scaling com uma única instância
<a name="scenario-single-instance-as-group"></a>

Este exemplo mostra um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html) com uma única instância para ajudar você a começar. A propriedade `VPCZoneIdentifier` do grupo do Auto Scaling especifica uma lista de sub-redes existentes em três diferentes zonas de disponibilidade. É necessário especificar os IDs de sub-rede aplicáveis da conta antes de criar a pilha. A propriedade `LaunchTemplate` faz referência a um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-launchtemplate.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-launchtemplate.html) com o nome lógico `myLaunchTemplate` definido em outra parte do modelo.

**nota**  
Para obter exemplos de modelos inicialização, consulte [Criar modelos de execução com o CloudFormation](quickref-ec2-launch-templates.md) na seção de snippets do Amazon EC2 e a seção [Exemplos](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-launchtemplate.html#aws-resource-ec2-launchtemplate--examples) no recurso `AWS::EC2::LaunchTemplate`.

### JSON
<a name="quickref-autoscaling-example-1.json"></a>

```
 1. "myASG" : {
 2.    "Type" : "AWS::AutoScaling::AutoScalingGroup",
 3.    "Properties" : {
 4.       "VPCZoneIdentifier" : [ "{{subnetIdAz1}}", "{{subnetIdAz2}}", "{{subnetIdAz3}}" ],
 5.       "LaunchTemplate" : {
 6.         "LaunchTemplateId" : {
 7.           "Ref" : "{{myLaunchTemplate}}"
 8.         },
 9.         "Version" : {
10.           "Fn::GetAtt" : [
11.             "{{myLaunchTemplate}}",
12.             "LatestVersionNumber"
13.           ]
14.         }
15.       },
16.       "MaxSize" : "1",
17.       "MinSize" : "1"
18.    }
19. }
```

### YAML
<a name="quickref-autoscaling-example-1.yaml"></a>

```
 1. myASG:
 2.   Type: AWS::AutoScaling::AutoScalingGroup
 3.   Properties:
 4.     VPCZoneIdentifier:
 5.       - {{subnetIdAz1}}
 6.       - {{subnetIdAz2}}
 7.       - {{subnetIdAz3}}
 8.     LaunchTemplate:
 9.       LaunchTemplateId: !Ref {{myLaunchTemplate}}
10.       Version: !GetAtt {{myLaunchTemplate}}.LatestVersionNumber
11.     MaxSize: '1'
12.     MinSize: '1'
```

## Criar um grupo do Auto Scaling com balanceador de carga anexado
<a name="scenario-as-group"></a>

Este exemplo mostra um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html) para balanceamento de carga em diversos servidores. Ele especifica os nomes lógicos dos recursos da AWS declarados em outro lugar no mesmo modelo.

1. A propriedade `VPCZoneIdentifier` especifica os nomes lógicos de dois recursos [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-subnet.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-subnet.html) em que as instâncias do EC2 do grupo do Auto Scaling serão criadas: `myPublicSubnet1` e `myPublicSubnet2`.

1. A propriedade `LaunchTemplate` especifica um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-launchtemplate.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-launchtemplate.html) com o nome lógico `myLaunchTemplate`.

1. A propriedade `TargetGroupARNs` lista os grupos de destino de um Application Load Balancer ou um Network Load Balancer usado para rotear o tráfego para o grupo de Auto Scaling. Neste exemplo, um grupo de destino é especificado, um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html) com o nome lógico `myTargetGroup`.

### JSON
<a name="quickref-autoscaling-example-2.json"></a>

```
 1. "myServerGroup" : {
 2.    "Type" : "AWS::AutoScaling::AutoScalingGroup",
 3.    "Properties" : {
 4.       "VPCZoneIdentifier" : [ { "Ref" : "{{myPublicSubnet1}}" }, { "Ref" : "{{myPublicSubnet2}}" } ],
 5.       "LaunchTemplate" : {
 6.         "LaunchTemplateId" : {
 7.           "Ref" : "{{myLaunchTemplate}}"
 8.         },
 9.         "Version" : {
10.           "Fn::GetAtt" : [
11.             "{{myLaunchTemplate}}",
12.             "LatestVersionNumber"
13.           ]
14.         }
15.       },
16.       "MaxSize" : "5",
17.       "MinSize" : "1",
18.       "TargetGroupARNs" : [ { "Ref" : "{{myTargetGroup}}" } ]
19.    }
20. }
```

### YAML
<a name="quickref-autoscaling-example-2.yaml"></a>

```
 1. myServerGroup:
 2.   Type: AWS::AutoScaling::AutoScalingGroup
 3.   Properties:
 4.     VPCZoneIdentifier:
 5.       - !Ref {{myPublicSubnet1}}
 6.       - !Ref {{myPublicSubnet2}}
 7.     LaunchTemplate:
 8.       LaunchTemplateId: !Ref {{myLaunchTemplate}}
 9.       Version: !GetAtt {{myLaunchTemplate}}.LatestVersionNumber
10.     MaxSize: '5'
11.     MinSize: '1'
12.     TargetGroupARNs:
13.       - !Ref {{myTargetGroup}}
```

### Consulte também
<a name="scenario-as-group-see-also"></a>

Para obter um exemplo detalhado que cria um grupo de Auto Scaling com uma política de escalabilidade de rastreamento de destino baseada na métrica `ALBRequestCountPerTarget` predefinida para o Application Load Balancer, consulte a seção [Exemplos](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-scalingpolicy.html#aws-resource-autoscaling-scalingpolicy--examples) no recurso `AWS::AutoScaling::ScalingPolicy`.

## Criar um grupo do Auto Scaling com notificações
<a name="scenario-as-notification"></a>

Este exemplo mostra um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html) que envia notificações do Amazon SNS quando eventos especificados ocorrem. A propriedade `NotificationConfigurations` especifica o tópico do SNS em que o CloudFormation envia uma notificação e os eventos farão com que o CloudFormation envie notificações. Quando os eventos especificados por `NotificationTypes` ocorrem, o CloudFormation enviará uma notificação para o tópico do SNS especificado pelo `TopicARN`. Quando você inicializa a pilha, o CloudFormation cria um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-sns-subscription.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-sns-subscription.html) (`snsTopicForAutoScalingGroup`) que é declarado no mesmo modelo.

A propriedade `VPCZoneIdentifier` do grupo do Auto Scaling especifica uma lista de sub-redes existentes em três diferentes zonas de disponibilidade. É necessário especificar os IDs de sub-rede aplicáveis da conta antes de criar a pilha. A propriedade `LaunchTemplate` faz referência ao nome lógico de um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-launchtemplate.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-launchtemplate.html) declarado em outro lugar no mesmo modelo.

### JSON
<a name="quickref-autoscaling-example-3.json"></a>

```
 1. "myASG" : {
 2.   "Type" : "AWS::AutoScaling::AutoScalingGroup",
 3.   "DependsOn": [
 4.     "snsTopicForAutoScalingGroup"
 5.   ],
 6.   "Properties" : {
 7.     "VPCZoneIdentifier" : [ "{{subnetIdAz1}}", "{{subnetIdAz2}}", "{{subnetIdAz3}}" ],
 8.     "LaunchTemplate" : {
 9.       "LaunchTemplateId" : {
10.         "Ref" : "{{logicalName}}"
11.       },
12.       "Version" : {
13.         "Fn::GetAtt" : [
14.           "{{logicalName}}",
15.           "LatestVersionNumber"
16.         ]
17.       }
18.     },
19.     "MaxSize" : "5",
20.     "MinSize" : "1",
21.     "NotificationConfigurations" : [
22.       {
23.         "TopicARN" : { "Ref" : "snsTopicForAutoScalingGroup" },
24.         "NotificationTypes" : [
25.           "autoscaling:EC2_INSTANCE_LAUNCH",
26.           "autoscaling:EC2_INSTANCE_LAUNCH_ERROR",
27.           "autoscaling:EC2_INSTANCE_TERMINATE",
28.           "autoscaling:EC2_INSTANCE_TERMINATE_ERROR",
29.           "autoscaling:TEST_NOTIFICATION"
30.         ]
31.       }
32.     ]
33.   }
34. }
```

### YAML
<a name="quickref-autoscaling-example-3.yaml"></a>

```
 1. myASG:
 2.   Type: AWS::AutoScaling::AutoScalingGroup
 3.   DependsOn:
 4.     - snsTopicForAutoScalingGroup
 5.   Properties:
 6.     VPCZoneIdentifier:
 7.       - {{subnetIdAz1}}
 8.       - {{subnetIdAz2}}
 9.       - {{subnetIdAz3}}
10.     LaunchTemplate:
11.       LaunchTemplateId: !Ref {{logicalName}}
12.       Version: !GetAtt {{logicalName}}.LatestVersionNumber
13.     MaxSize: '5'
14.     MinSize: '1'
15.     NotificationConfigurations:
16.       - TopicARN: !Ref snsTopicForAutoScalingGroup
17.         NotificationTypes:
18.           - autoscaling:EC2_INSTANCE_LAUNCH
19.           - autoscaling:EC2_INSTANCE_LAUNCH_ERROR
20.           - autoscaling:EC2_INSTANCE_TERMINATE
21.           - autoscaling:EC2_INSTANCE_TERMINATE_ERROR
22.           - autoscaling:TEST_NOTIFICATION
```

## Criar um grupo do Auto Scaling que usa um `CreationPolicy` e um `UpdatePolicy`
<a name="scenario-as-updatepolicy"></a>

O exemplo a seguir mostra como adicionar os atributos `CreationPolicy` e `UpdatePolicy` a um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html).

A política de criação de exemplos impede que o grupo do Auto Scaling atinja o status `CREATE_COMPLETE` até que CloudFormation receba o número `Count` de sinais de êxito quando o grupo estiver pronto. Para sinalizar que o grupo do Auto Scaling está pronto, um script auxiliar `cfn-signal` adicionado aos dados do usuário do modelo de inicialização (não mostrado) é executado nas instâncias. Se as instâncias não enviarem um sinal dentro do `Timeout` especificado, o CloudFormation assumirá que as instâncias não foram criadas, a criação do recurso falhará e o CloudFormation reverterá a pilha.

A política de atualização de exemplo instrui o CloudFormation a executar uma atualização contínua usando a propriedade `AutoScalingRollingUpdate`. A atualização contínua faz alterações no grupo de Auto Scaling em pequenos lotes (neste exemplo, instância por instância) com base no `MaxBatchSize` e em um tempo de pausa entre lotes de atualizações com base no `PauseTime`. O atributo `MinInstancesInService` especifica o número mínimo de instâncias que devem estar em serviço no grupo do Auto Scaling e o CloudFormation atualiza instâncias antigas.

O atributo `WaitOnResourceSignals` é definido como `true`. O CloudFormation deve receber um sinal de cada instância nova dentro do `PauseTime` especificado para continuar a atualização. Embora a atualização da pilha esteja em andamento, os seguintes processos de Auto Scaling do EC2 são suspensos: `HealthCheck`, `ReplaceUnhealthy`, `AZRebalance`, `AlarmNotification` e `ScheduledActions`. Observação: não suspenda os tipos de processo `Launch`, `Terminate` ou `AddToLoadBalancer` (se o grupo de Auto Scaling estiver sendo usado com o Elastic Load Balancing), pois isso pode impedir que a atualização contínua funcione corretamente.

A propriedade `VPCZoneIdentifier` do grupo do Auto Scaling especifica uma lista de sub-redes existentes em três diferentes zonas de disponibilidade. É necessário especificar os IDs de sub-rede aplicáveis da conta antes de criar a pilha. A propriedade `LaunchTemplate` faz referência ao nome lógico de um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-launchtemplate.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-launchtemplate.html) declarado em outro lugar no mesmo modelo.

Para obter mais informações sobre os atributos `CreationPolicy` e `UpdatePolicy`, consulte a [Referência de atributos de recursos](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-product-attribute-reference.html).

### JSON
<a name="quickref-autoscaling-example-4.json"></a>

```
{
  "Resources":{
    "myASG":{
      "CreationPolicy":{
        "ResourceSignal":{
          "Count":"3",
          "Timeout":"PT15M"
        }
      },
      "UpdatePolicy":{
        "AutoScalingRollingUpdate":{
          "MinInstancesInService":"3",
          "MaxBatchSize":"1",
          "PauseTime":"PT12M5S",
          "WaitOnResourceSignals":"true",
          "SuspendProcesses":[
            "HealthCheck",
            "ReplaceUnhealthy",
            "AZRebalance",
            "AlarmNotification",
            "ScheduledActions",
            "InstanceRefresh"
          ]
        }
      },
      "Type":"AWS::AutoScaling::AutoScalingGroup",
      "Properties":{
        "VPCZoneIdentifier":[ "{{subnetIdAz1}}", "{{subnetIdAz2}}", "{{subnetIdAz3}}" ],
        "LaunchTemplate":{
          "LaunchTemplateId":{
            "Ref":"{{logicalName}}"
          },
          "Version":{
            "Fn::GetAtt":[
              "{{logicalName}}",
              "LatestVersionNumber"
            ]
          }
        },
        "MaxSize":"5",
        "MinSize":"3"
      }
    }
  }
}
```

### YAML
<a name="quickref-autoscaling-example-4.yaml"></a>

```
---
Resources:
  myASG:
    CreationPolicy:
      ResourceSignal:
        Count: '3'
        Timeout: PT15M
    UpdatePolicy:
      AutoScalingRollingUpdate:
        MinInstancesInService: '3'
        MaxBatchSize: '1'
        PauseTime: PT12M5S
        WaitOnResourceSignals: true
        SuspendProcesses:
          - HealthCheck
          - ReplaceUnhealthy
          - AZRebalance
          - AlarmNotification
          - ScheduledActions
          - InstanceRefresh
    Type: AWS::AutoScaling::AutoScalingGroup
    Properties:
      VPCZoneIdentifier:
        - {{subnetIdAz1}}
        - {{subnetIdAz2}}
        - {{subnetIdAz3}}
      LaunchTemplate:
        LaunchTemplateId: !Ref {{logicalName}}
        Version: !GetAtt {{logicalName}}.LatestVersionNumber
      MaxSize: '5'
      MinSize: '3'
```

## Criar uma política de escalabilidade em etapas
<a name="scenario-step-scaling-policy"></a>

Este exemplo mostra um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-scalingpolicy.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-scalingpolicy.html) que aumenta a escala horizontalmente do grupo do Auto Scaling usando uma política de escalabilidade em etapas. A propriedade `AdjustmentType` especifica `ChangeInCapacity`, o que significa que `ScalingAdjustment` representa o número de instâncias para adicionar (se `ScalingAdjustment` for positivo) ou excluir (se for negativo). Neste exemplo, `ScalingAdjustment` é 1; por isso, a política incrementa o número de instâncias do EC2 no grupo em 1 quando o limite do alarme é atingido.

O recurso `CPUAlarmHigh` de [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudwatch-alarm.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudwatch-alarm.html) especifica a política de escalabilidade `ASGScalingPolicyHigh` como a ação a ser executada quando o alarme está em um estado ALARM (`AlarmActions`). A propriedade `Dimensions` faz referência ao nome lógico de um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html) declarado em outro lugar no mesmo modelo.

### JSON
<a name="quickref-autoscaling-example-5.json"></a>

```
 1. {
 2.   "Resources":{
 3.     "ASGScalingPolicyHigh":{
 4.       "Type":"AWS::AutoScaling::ScalingPolicy",
 5.       "Properties":{
 6.         "AutoScalingGroupName":{ "Ref":"{{logicalName}}" },
 7.         "PolicyType":"StepScaling",
 8.         "AdjustmentType":"ChangeInCapacity",
 9.         "StepAdjustments":[
10.           {
11.             "MetricIntervalLowerBound":0,
12.             "ScalingAdjustment":1
13.           }
14.         ]
15.       }
16.     },
17.     "CPUAlarmHigh":{
18.       "Type":"AWS::CloudWatch::Alarm",
19.       "Properties":{
20.         "EvaluationPeriods":"2",
21.         "Statistic":"Average",
22.         "Threshold":"90",
23.         "AlarmDescription":"Scale out if CPU > 90% for 2 minutes",
24.         "Period":"60",
25.         "AlarmActions":[ { "Ref":"ASGScalingPolicyHigh" } ],
26.         "Namespace":"AWS/EC2",
27.         "Dimensions":[
28.           {
29.             "Name":"AutoScalingGroupName",
30.             "Value":{ "Ref":"{{logicalName}}" }
31.           }
32.         ],
33.         "ComparisonOperator":"GreaterThanThreshold",
34.         "MetricName":"CPUUtilization"
35.       }
36.     }
37.   }
38. }
```

### YAML
<a name="quickref-autoscaling-example-5.yaml"></a>

```
 1. ---
 2. Resources:
 3.   ASGScalingPolicyHigh:
 4.     Type: AWS::AutoScaling::ScalingPolicy
 5.     Properties:
 6.       AutoScalingGroupName: !Ref {{logicalName}}
 7.       PolicyType: StepScaling
 8.       AdjustmentType: ChangeInCapacity
 9.       StepAdjustments: 
10.         - MetricIntervalLowerBound: 0
11.           ScalingAdjustment: 1
12.   CPUAlarmHigh:
13.     Type: AWS::CloudWatch::Alarm
14.     Properties:
15.       EvaluationPeriods: 2
16.       Statistic: Average
17.       Threshold: 90
18.       AlarmDescription: 'Scale out if CPU > 90% for 2 minutes'
19.       Period: 60
20.       AlarmActions:
21.         - !Ref ASGScalingPolicyHigh
22.       Namespace: AWS/EC2
23.       Dimensions:
24.         - Name: AutoScalingGroupName
25.           Value:
26.             !Ref {{logicalName}}
27.       ComparisonOperator: GreaterThanThreshold
28.       MetricName: CPUUtilization
```

### Consulte também
<a name="scenario-as-policy-see-also"></a>

Para obter mais exemplos de modelos para políticas de escalabilidade, consulte a seção [Exemplos](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-scalingpolicy.html#aws-resource-autoscaling-scalingpolicy--examples) no recurso `AWS::AutoScaling::ScalingPolicy`.

## Exemplos de grupos de instâncias mistas
<a name="scenario-mixed-instances-group-template-examples"></a>

### Criar um grupo do Auto Scaling usando seleção de tipo de instância baseada em atributos
<a name="scenario-mixed-instances-group-instance-requirements"></a>

Este exemplo mostra um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html) que contém informações para executar um grupo de instâncias mistas utilizando a seleção de tipos de instâncias baseadas em atributos. Você especifica os valores mínimo e máximo para a propriedade `VCpuCount` e o valor mínimo para a propriedade `MemoryMiB`. Todos os tipos de instância usados pelo grupo do Auto Scaling devem corresponder aos atributos de instância exigidos. 

A propriedade `VPCZoneIdentifier` do grupo do Auto Scaling especifica uma lista de sub-redes existentes em três diferentes zonas de disponibilidade. É necessário especificar os IDs de sub-rede aplicáveis da conta antes de criar a pilha. A propriedade `LaunchTemplate` faz referência ao nome lógico de um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-launchtemplate.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-launchtemplate.html) declarado em outro lugar no mesmo modelo.

#### JSON
<a name="quickref-mixed-instances-group-example-2.json"></a>

```
 1. {
 2.   "Resources":{
 3.     "myASG":{
 4.       "Type":"AWS::AutoScaling::AutoScalingGroup",
 5.       "Properties":{
 6.         "VPCZoneIdentifier":[
 7.           "{{subnetIdAz1}}",
 8.           "{{subnetIdAz2}}",
 9.           "{{subnetIdAz3}}"
10.         ],
11.         "MixedInstancesPolicy":{
12.           "LaunchTemplate":{
13.             "LaunchTemplateSpecification":{
14.               "LaunchTemplateId":{
15.                 "Ref":"{{logicalName}}"
16.               },
17.               "Version":{
18.                 "Fn::GetAtt":[
19.                   "{{logicalName}}",
20.                   "LatestVersionNumber"
21.                 ]
22.               }
23.             },
24.             "Overrides":[
25.               {
26.                 "InstanceRequirements":{
27.                   "VCpuCount":{
28.                     "Min":{{2}},
29.                     "Max":{{4}}
30.                   },
31.                   "MemoryMiB":{
32.                     "Min":{{2048}}
33.                   }
34.                 }
35.               }
36.             ]
37.           }
38.         },
39.         "MaxSize":"5",
40.         "MinSize":"1"
41.       }
42.     }
43.   }
44. }
```

#### YAML
<a name="quickref-mixed-instances-group-example-1.yaml"></a>

```
 1. ---
 2. Resources:
 3.   myASG:
 4.     Type: AWS::AutoScaling::AutoScalingGroup
 5.     Properties:
 6.       VPCZoneIdentifier:
 7.         - {{subnetIdAz1}}
 8.         - {{subnetIdAz2}}
 9.         - {{subnetIdAz3}}
10.       MixedInstancesPolicy:
11.         LaunchTemplate:
12.           LaunchTemplateSpecification:
13.             LaunchTemplateId: !Ref {{logicalName}}
14.             Version: !GetAtt {{logicalName}}.LatestVersionNumber
15.           Overrides:
16.             - InstanceRequirements:
17.                 VCpuCount:
18.                   Min: {{2}}
19.                   Max: {{4}}
20.                 MemoryMiB:
21.                   Min: {{2048}}
22.       MaxSize: '5'
23.       MinSize: '1'
```

## Exemplos de configuração de ativação
<a name="scenario-launch-config-template-examples"></a>

### Criar uma configuração de execução
<a name="scenario-as-launch-config"></a>

Este exemplo mostra um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-launchconfiguration.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-launchconfiguration.html) para um grupo do AutoScaling em que você especifica valores para as propriedades `ImageId`, `InstanceType` e `SecurityGroups`. A propriedade `SecurityGroups` especifica o nome lógico de um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-securitygroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-securitygroup.html) especificado em outro local no modelo e um grupo de segurança existente do EC2 chamado `myExistingEC2SecurityGroup`.

#### JSON
<a name="quickref-launch-config-example-1.json"></a>

```
1. "mySimpleConfig" : {
2.    "Type" : "AWS::AutoScaling::LaunchConfiguration",
3.    "Properties" : {
4.       "ImageId" : "{{ami-02354e95b3example}}",
5.       "InstanceType" : "{{t3.micro}}",
6.       "SecurityGroups" : [ { "Ref" : "{{logicalName}}" }, "{{myExistingEC2SecurityGroup}}" ]
7.    }
8. }
```

#### YAML
<a name="quickref-launch-config-example-1.yaml"></a>

```
1. mySimpleConfig:
2.   Type: AWS::AutoScaling::LaunchConfiguration
3.   Properties:
4.     ImageId: {{ami-02354e95b3example}}
5.     InstanceType: {{t3.micro}}
6.     SecurityGroups:
7.       - !Ref {{logicalName}}
8.       - {{myExistingEC2SecurityGroup}}
```

### Criar um grupo do Auto Scaling que usa uma configuração de execução
<a name="scenario-single-instance-as-group-launch-configuration"></a>

Este exemplo mostra um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html) com uma única instância. A propriedade `VPCZoneIdentifier` do grupo do Auto Scaling especifica uma lista de sub-redes existentes em três diferentes zonas de disponibilidade. É necessário especificar os IDs de sub-rede aplicáveis da conta antes de criar a pilha. A propriedade `LaunchConfigurationName` faz referência a um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-launchconfiguration.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-launchconfiguration.html) com o nome lógico `mySimpleConfig` definido em seu modelo.

#### JSON
<a name="quickref-launch-config-example-2.json"></a>

```
1. "myASG" : {
2.    "Type" : "AWS::AutoScaling::AutoScalingGroup",
3.    "Properties" : {
4.       "VPCZoneIdentifier" : [ "{{subnetIdAz1}}", "{{subnetIdAz2}}", "{{subnetIdAz3}}" ],
5.       "LaunchConfigurationName" : { "Ref" : "{{mySimpleConfig}}" },
6.       "MaxSize" : "1",
7.       "MinSize" : "1"
8.    }
9. }
```

#### YAML
<a name="quickref-launch-config-example-2.yaml"></a>

```
 1. myASG:
 2.   Type: AWS::AutoScaling::AutoScalingGroup
 3.   Properties:
 4.     VPCZoneIdentifier:
 5.       - {{subnetIdAz1}}
 6.       - {{subnetIdAz2}}
 7.       - {{subnetIdAz3}}
 8.     LaunchConfigurationName: !Ref {{mySimpleConfig}}
 9.     MaxSize: '1'
10.     MinSize: '1'
```