

# CloudFormation을 사용한 Amazon EC2 Auto Scaling 리소스 구성
<a name="quickref-ec2-auto-scaling"></a>

다음 예에서는 Amazon EC2 Auto Scaling과 함께 사용할 템플릿에 포함할 수 있는 다양한 스니펫을 보여줍니다.

**Topics**
+ [단일 인스턴스 Auto Scaling 그룹 생성](#scenario-single-instance-as-group)
+ [연결된 로드 밸런서를 사용하여 Auto Scaling 그룹 생성](#scenario-as-group)
+ [알림을 사용하여 Auto Scaling 그룹 생성](#scenario-as-notification)
+ [`CreationPolicy` 및 `UpdatePolicy`를 사용하는 Auto Scaling 그룹 생성](#scenario-as-updatepolicy)
+ [단계 조정 정책 삭제](#scenario-step-scaling-policy)
+ [혼합 인스턴스 그룹 예제](#scenario-mixed-instances-group-template-examples)
+ [시작 구성 예제](#scenario-launch-config-template-examples)

## 단일 인스턴스 Auto Scaling 그룹 생성
<a name="scenario-single-instance-as-group"></a>

이 예에서는 시작하는 데 도움이 되는 단일 인스턴스가 포함된 [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) 리소스를 보여줍니다. auto scaling의 `VPCZoneIdentifier` 속성은 3개의 서로 다른 가용 영역에 있는 기존 서브넷 목록을 지정합니다. 스택을 만들기 전에 계정에서 적용 가능한 서브넷 ID를 지정해야 합니다. `LaunchTemplate` 속성은 템플릿의 다른 곳에 정의된 논리명이 `myLaunchTemplate`인 [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) 리소스를 참조합니다.

**참고**  
시작 템플릿의 예는 Amazon EC2 코드 조각 섹션의 [CloudFormation을 사용하여 시작 템플릿 생성](quickref-ec2-launch-templates.md) 및 `AWS::EC2::LaunchTemplate` 리소스의 [예](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-launchtemplate.html#aws-resource-ec2-launchtemplate--examples) 섹션을 참조하세요.

### 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'
```

## 연결된 로드 밸런서를 사용하여 Auto Scaling 그룹 생성
<a name="scenario-as-group"></a>

이 예에서는 여러 서버에 대한 로드 밸런싱을 위한 [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) 리소스를 보여줍니다. 동일한 템플릿의 다른 곳에서 선언된 AWS 리소스의 논리적 이름을 지정합니다.

1. `VPCZoneIdentifier` 속성은 Auto Scaling 그룹의 EC2 인스턴스가 생성될 두 [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) 리소스의 논리명인 `myPublicSubnet1` 및 `myPublicSubnet2`를 지정합니다.

1. `LaunchTemplate` 속성은 논리명이 `myLaunchTemplate`인 [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) 리소스를 지정합니다.

1. `TargetGroupARNs` 속성은 트래픽을 Auto Scaling 그룹으로 라우팅하는 데 사용되는 Application Load Balancer 또는 Network Load Balancer의 대상 그룹을 나열합니다. 이 예에서는 논리명이 `myTargetGroup`인 [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) 리소스에 하나의 대상 그룹이 지정됩니다.

### 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
```

### 다음 사항도 참조하세요.
<a name="scenario-as-group-see-also"></a>

Application Load Balancer에 대한 `ALBRequestCountPerTarget` 사전 정의 지표에 따라 대상 추적 조정 정책을 사용하여 auto scaling을 생성하는 자세한 예제는 `AWS::AutoScaling::ScalingPolicy` 리소스의 [예제](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-scalingpolicy.html#aws-resource-autoscaling-scalingpolicy--examples) 섹션을 참조하세요.

## 알림을 사용하여 Auto Scaling 그룹 생성
<a name="scenario-as-notification"></a>

이 예에서는 지정된 이벤트가 발생하면 Amazon SNS 알림을 보내는 [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) 리소스를 보여줍니다. `NotificationConfigurations` 속성은 CloudFormation에서 알림을 보내는 SNS 주제와 CloudFormation에서 알림을 보내는 원인 이벤트를 지정합니다. `NotificationTypes`에 지정된 이벤트가 발생하면 CloudFormation에서 `TopicARN`에 지정된 SNS 주제에 알림을 보냅니다. 스택을 시작하면 CloudFormation에서 동일한 템플릿 내에 선언된 [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`)를 생성합니다.

auto scaling의 `VPCZoneIdentifier` 속성은 3개의 서로 다른 가용 영역에 있는 기존 서브넷 목록을 지정합니다. 스택을 만들기 전에 계정에서 적용 가능한 서브넷 ID를 지정해야 합니다. `LaunchTemplate` 속성은 동일한 템플릿의 다른 곳에서 선언된 [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) 리소스의 논리명을 참조합니다.

### 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
```

## `CreationPolicy` 및 `UpdatePolicy`를 사용하는 Auto Scaling 그룹 생성
<a name="scenario-as-updatepolicy"></a>

다음 예는 [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) 리소스에 `CreationPolicy` 및 `UpdatePolicy` 속성을 추가하는 방법을 보여줍니다.

샘플 생성 정책은 auto scaling이 준비가 되면 CloudFormation이 `Count` 개수의 성공 신호를 받을 때까지 `CREATE_COMPLETE` 상태가 되지 않도록 합니다. auto scaling이 준비되었음을 알리기 위해 시작 템플릿의 사용자 데이터(표시되지 않음)에 추가된 `cfn-signal` 헬퍼 스크립트가 인스턴스에서 실행됩니다. 인스턴스가 지정된 `Timeout` 내에 신호를 보내지 않으면 CloudFormation은 인스턴스가 생성되지 않은 것으로 가정하고, 리소스 생성이 실패하고, CloudFormation은 스택을 롤백합니다.

샘플 업데이트 정책은 CloudFormation에 `AutoScalingRollingUpdate` 속성을 사용하여 롤링 업데이트를 수행하도록 지시합니다. 롤링 업데이트는 `MaxBatchSize`에 기반한 작은 배치(이 예에서는 인스턴스 단위)의 Auto Scaling 그룹, `PauseTime`에 기반한 업데이트의 배치 간 일시 중지 시간을 변경합니다. `MinInstancesInService` 속성은 CloudFormation에서 이전 인스턴스를 업데이트하는 동안 Auto Scaling 그룹 내에서 작동해야 하는 최소 인스턴스 수를 지정합니다.

`WaitOnResourceSignals` 속성이 `true`로 설정되어 있습니다. 업데이트를 계속 진행하려면 CloudFormation이 지정된 `PauseTime` 내에 각각의 새 인스턴스로부터 신호를 수신해야 합니다. 스택 업데이트가 진행되는 동안 `HealthCheck`, `ReplaceUnhealthy`, `AZRebalance`, `AlarmNotification` 및 `ScheduledActions` 같은 EC2 Auto Scaling 프로세스가 일시 중단됩니다. 참고: 이 경우 롤링 업데이트가 제대로 작동하지 않을 수 있으므로 `Launch`, `Terminate` 또는 `AddToLoadBalancer`(Auto Scaling 그룹이 Elastic Load Balancing와 함께 사용되는 경우) 프로세스 유형을 일시 중지하지 마십시오.

auto scaling의 `VPCZoneIdentifier` 속성은 3개의 서로 다른 가용 영역에 있는 기존 서브넷 목록을 지정합니다. 스택을 만들기 전에 계정에서 적용 가능한 서브넷 ID를 지정해야 합니다. `LaunchTemplate` 속성은 동일한 템플릿의 다른 곳에서 선언된 [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) 리소스의 논리명을 참조합니다.

`CreationPolicy` 및 `UpdatePolicy` 속성에 대한 자세한 내용은 [리소스 속성 참조](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'
```

## 단계 조정 정책 삭제
<a name="scenario-step-scaling-policy"></a>

이 예에서는 단계 조정 정책을 사용하여 Auto Scaling 그룹을 스케일 아웃하는 [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) 리소스를 보여줍니다. `AdjustmentType` 속성은 `ChangeInCapacity`를 지정합니다. 이는 `ScalingAdjustment`가 추가하거나(`ScalingAdjustment`가 양수인 경우) 삭제할(음수인 경우) 인스턴스 수를 나타낸다는 것을 의미합니다. 이 예에서 `ScalingAdjustment`는 1입니다. 따라서 경보 임계값을 초과하면 그룹의 EC2 인스턴스 수가 1씩 증가합니다.

[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) 리소스 `CPUAlarmHigh`는 경보가 ALARM 상태일 때 실행할 작업(`AlarmActions`)으로 조정 정책 `ASGScalingPolicyHigh`를 지정합니다. `Dimensions` 속성은 동일한 템플릿의 다른 곳에서 선언된 [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) 리소스의 논리명을 참조합니다.

### 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
```

### 다음 사항도 참조하세요.
<a name="scenario-as-policy-see-also"></a>

조정 정책에 대한 추가 예제 템플릿을 알아보려면 `AWS::AutoScaling::ScalingPolicy` 리소스의 [예제](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-scalingpolicy.html#aws-resource-autoscaling-scalingpolicy--examples) 섹션을 참조하세요.

## 혼합 인스턴스 그룹 예제
<a name="scenario-mixed-instances-group-template-examples"></a>

### 속성 기반 인스턴스 유형 선택을 사용하여 Auto Scaling 그룹 생성
<a name="scenario-mixed-instances-group-instance-requirements"></a>

이 예는 속성 기반 인스턴스 유형 선택을 사용하여 혼합 인스턴스 그룹을 시작하기 위한 정보를 포함하는 [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) 리소스를 보여줍니다. `VCpuCount` 속성의 최솟값과 최댓값을 지정하고 `MemoryMiB` 속성의 최솟값을 지정합니다. auto scaling에서 사용하는 모든 인스턴스 유형은 필요한 인스턴스 속성과 일치해야 합니다.

auto scaling의 `VPCZoneIdentifier` 속성은 3개의 서로 다른 가용 영역에 있는 기존 서브넷 목록을 지정합니다. 스택을 만들기 전에 계정에서 적용 가능한 서브넷 ID를 지정해야 합니다. `LaunchTemplate` 속성은 동일한 템플릿의 다른 곳에서 선언된 [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) 리소스의 논리명을 참조합니다.

#### 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'
```

## 시작 구성 예제
<a name="scenario-launch-config-template-examples"></a>

### 시작 구성 생성
<a name="scenario-as-launch-config"></a>

이 예에서는 `ImageId`, `InstanceType`, `SecurityGroups` 속성에 대한 값을 지정하는 Auto Scaling 그룹에 대한 [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) 리소스를 보여줍니다. `SecurityGroups` 속성은 템플릿에 지정된 [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) 리소스의 논리명과 `myExistingEC2SecurityGroup`이라는 기존 EC2 보안 그룹을 모두 지정합니다.

#### 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
```

### 시작 구성을 사용하는 Auto Scaling 그룹 생성
<a name="scenario-single-instance-as-group-launch-configuration"></a>

이 예에서는 단일 인스턴스가 있는 [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) 리소스를 보여줍니다. auto scaling의 `VPCZoneIdentifier` 속성은 3개의 서로 다른 가용 영역에 있는 기존 서브넷 목록을 지정합니다. 스택을 만들기 전에 계정에서 적용 가능한 서브넷 ID를 지정해야 합니다. `LaunchConfigurationName` 속성은 템플릿에 정의된 논리명이 `mySimpleConfig`인 [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) 리소스를 참조합니다.

#### 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'
```