

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Cuplikan CloudFormation templat penskalaan otomatis
<a name="quickref-autoscaling"></a>

Dengan Amazon EC2 Auto Scaling, Anda dapat secara otomatis menskalakan EC2 instans Amazon, baik dengan kebijakan penskalaan atau dengan penskalaan terjadwal. Grup Auto Scaling adalah kumpulan EC2 instans Amazon yang memungkinkan penskalaan otomatis dan fitur pengelolaan armada, seperti kebijakan penskalaan, tindakan terjadwal, pemeriksaan kesehatan, kait siklus hidup, dan penyeimbangan beban. 

Application Auto Scaling menyediakan penskalaan otomatis berbagai sumber daya di luar Amazon EC2, baik dengan kebijakan penskalaan atau dengan penskalaan terjadwal.

Anda dapat membuat dan mengonfigurasi grup Auto Scaling, kebijakan penskalaan, tindakan terjadwal, dan sumber daya penskalaan otomatis lainnya sebagai bagian dari infrastruktur menggunakan templat. CloudFormation Template memudahkan pengelolaan dan otomatisasi penyebaran sumber daya penskalaan otomatis secara berulang dan konsisten. 

Contoh cuplikan template berikut menjelaskan CloudFormation sumber daya atau komponen untuk Amazon Auto EC2 Scaling dan Application Auto Scaling. Cuplikan ini dirancang untuk diintegrasikan ke dalam template dan tidak dimaksudkan untuk dijalankan secara independen.

**Topics**
+ [Konfigurasikan sumber daya Amazon EC2 Auto Scaling](quickref-ec2-auto-scaling.md)
+ [Konfigurasikan sumber daya Application Auto Scaling](quickref-application-auto-scaling.md)

# Konfigurasikan sumber daya Amazon EC2 Auto Scaling dengan CloudFormation
<a name="quickref-ec2-auto-scaling"></a>

Contoh berikut menunjukkan cuplikan berbeda untuk disertakan dalam templat untuk digunakan dengan Amazon EC2 Auto Scaling.

**Topics**
+ [Buat satu contoh grup Auto Scaling](#scenario-single-instance-as-group)
+ [Buat grup Auto Scaling dengan penyeimbang beban terlampir](#scenario-as-group)
+ [Buat grup Auto Scaling dengan notifikasi](#scenario-as-notification)
+ [Buat grup Auto Scaling yang menggunakan a dan `CreationPolicy` `UpdatePolicy`](#scenario-as-updatepolicy)
+ [Membuat kebijakan penskalaan langkah](#scenario-step-scaling-policy)
+ [Contoh kelompok contoh campuran](#scenario-mixed-instances-group-template-examples)
+ [Luncurkan contoh konfigurasi](#scenario-launch-config-template-examples)

## Buat satu contoh grup Auto Scaling
<a name="scenario-single-instance-as-group"></a>

Contoh ini menunjukkan [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)sumber daya dengan satu instance untuk membantu Anda memulai. `VPCZoneIdentifier`Properti grup Auto Scaling menentukan daftar subnet yang ada di tiga Availability Zone yang berbeda. Anda harus menentukan subnet yang berlaku IDs dari akun Anda sebelum Anda membuat tumpukan Anda. `LaunchTemplate`Properti mereferensikan [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)sumber daya dengan nama logis `myLaunchTemplate` yang didefinisikan di tempat lain dalam template Anda.

**catatan**  
Untuk contoh templat peluncuran, lihat [Buat template peluncuran dengan CloudFormation](quickref-ec2-launch-templates.md) di bagian cuplikan Amazon EC2 dan bagian [Contoh di sumber daya](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-launchtemplate.html#aws-resource-ec2-launchtemplate--examples). `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'
```

## Buat grup Auto Scaling dengan penyeimbang beban terlampir
<a name="scenario-as-group"></a>

Contoh ini menunjukkan [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)sumber daya untuk load balancing melalui beberapa server. Ini menentukan nama logis AWS sumber daya yang dinyatakan di tempat lain dalam template yang sama.

1. `VPCZoneIdentifier`Properti menentukan nama logis dari dua [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)sumber daya tempat instans EC2 grup Auto Scaling akan dibuat: dan. `myPublicSubnet1` `myPublicSubnet2`

1. `LaunchTemplate`Properti menentukan [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)sumber daya dengan nama `myLaunchTemplate` logis.

1. `TargetGroupARNs`Properti mencantumkan grup target untuk Application Load Balancer atau Network Load Balancer yang digunakan untuk merutekan lalu lintas ke grup Auto Scaling. Dalam contoh ini, satu kelompok target ditentukan, [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)sumber daya dengan nama logis`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
```

### Lihat juga
<a name="scenario-as-group-see-also"></a>

[Untuk contoh mendetail yang membuat grup Auto Scaling dengan kebijakan penskalaan pelacakan target berdasarkan metrik yang `ALBRequestCountPerTarget` telah ditentukan untuk Application Load Balancer, lihat bagian Contoh di sumber daya.](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-scalingpolicy.html#aws-resource-autoscaling-scalingpolicy--examples) `AWS::AutoScaling::ScalingPolicy`

## Buat grup Auto Scaling dengan notifikasi
<a name="scenario-as-notification"></a>

Contoh ini menunjukkan [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)sumber daya yang mengirimkan notifikasi Amazon SNS saat peristiwa yang ditentukan berlangsung. `NotificationConfigurations`Properti menentukan topik SNS di mana CloudFormation mengirimkan pemberitahuan dan peristiwa yang akan menyebabkan CloudFormation untuk mengirim pemberitahuan. Ketika peristiwa yang ditentukan oleh `NotificationTypes` terjadi, CloudFormation akan mengirim pemberitahuan ke topik SNS yang ditentukan oleh`TopicARN`. Saat Anda meluncurkan tumpukan, CloudFormation buat [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)resource (`snsTopicForAutoScalingGroup`) yang dideklarasikan dalam template yang sama.

`VPCZoneIdentifier`Properti grup Auto Scaling menentukan daftar subnet yang ada di tiga Availability Zone yang berbeda. Anda harus menentukan subnet yang berlaku IDs dari akun Anda sebelum Anda membuat tumpukan Anda. `LaunchTemplate`Properti mereferensikan nama logis dari [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)sumber daya yang dideklarasikan di tempat lain dalam template yang sama.

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

## Buat grup Auto Scaling yang menggunakan a dan `CreationPolicy` `UpdatePolicy`
<a name="scenario-as-updatepolicy"></a>

Contoh berikut menunjukkan cara menambahkan `CreationPolicy` dan `UpdatePolicy` atribut ke [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)sumber daya.

Kebijakan pembuatan sampel mencegah grup Auto Scaling mencapai `CREATE_COMPLETE` status hingga CloudFormation menerima `Count` sejumlah sinyal keberhasilan saat grup siap. Untuk memberi sinyal bahwa grup Auto Scaling sudah siap, skrip `cfn-signal` helper yang ditambahkan ke data pengguna template peluncuran (tidak ditampilkan) dijalankan pada instance. Jika instance tidak mengirim sinyal dalam yang ditentukan`Timeout`, CloudFormation mengasumsikan bahwa instance tidak dibuat, pembuatan sumber daya gagal, dan CloudFormation memutar tumpukan kembali.

Kebijakan pembaruan sampel menginstruksikan CloudFormation untuk melakukan pembaruan bergulir menggunakan `AutoScalingRollingUpdate` properti. Pembaruan bergulir membuat perubahan pada grup Auto Scaling dalam batch kecil (untuk contoh ini, instance demi instance) berdasarkan `MaxBatchSize` dan waktu jeda antara kumpulan pembaruan berdasarkan. `PauseTime` `MinInstancesInService`Atribut menentukan jumlah minimum instance yang harus dalam layanan dalam grup Auto Scaling CloudFormation sementara memperbarui instance lama.

Atribut `WaitOnResourceSignals` diatur menjadi `true`. CloudFormation harus menerima sinyal dari setiap instans baru dalam `PauseTime` yang ditentukan sebelum melanjutkan pembaruan. Sementara pembaruan tumpukan sedang berlangsung, proses EC2 Auto Scaling berikut ditangguhkan: `HealthCheck`, `ReplaceUnhealthy`, `AZRebalance`, `AlarmNotification`, dan `ScheduledActions`. Catatan: Jangan menangguhkan jenis proses`Launch`,`Terminate`, atau `AddToLoadBalancer` (jika grup Auto Scaling digunakan dengan Elastic Load Balancing) karena hal itu dapat mencegah pembaruan bergulir berfungsi dengan baik.

`VPCZoneIdentifier`Properti grup Auto Scaling menentukan daftar subnet yang ada di tiga Availability Zone yang berbeda. Anda harus menentukan subnet yang berlaku IDs dari akun Anda sebelum Anda membuat tumpukan Anda. `LaunchTemplate`Properti mereferensikan nama logis dari [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)sumber daya yang dideklarasikan di tempat lain dalam template yang sama.

Untuk informasi selengkapnya tentang `UpdatePolicy` atribut `CreationPolicy` dan, lihat [Referensi atribut sumber daya](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'
```

## Membuat kebijakan penskalaan langkah
<a name="scenario-step-scaling-policy"></a>

Contoh ini menunjukkan [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)sumber daya yang menskalakan grup Auto Scaling menggunakan kebijakan penskalaan langkah. Properti `AdjustmentType` menentukan `ChangeInCapacity`, yang berarti bahwa `ScalingAdjustment` mewakili jumlah instans untuk ditambahkan (jika `ScalingAdjustment` positif) atau dihapus (jika negatif). Dalam contoh ini, `ScalingAdjustment` adalah 1; oleh karena itu, kebijakan tersebut menambah jumlah instans EC2 dalam grup sebanyak 1 ketika ambang batas alarm dilanggar.

[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)Sumber daya `CPUAlarmHigh` menentukan kebijakan penskalaan `ASGScalingPolicyHigh` sebagai tindakan yang akan dijalankan saat alarm berada dalam status ALARM ()`AlarmActions`. `Dimensions`Properti mereferensikan nama logis dari [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)sumber daya yang dideklarasikan di tempat lain dalam template yang sama.

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

### Lihat juga
<a name="scenario-as-policy-see-also"></a>

Untuk contoh templat lainnya untuk kebijakan penskalaan, lihat bagian [Contoh](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-scalingpolicy.html#aws-resource-autoscaling-scalingpolicy--examples) di `AWS::AutoScaling::ScalingPolicy` sumber daya.

## Contoh kelompok contoh campuran
<a name="scenario-mixed-instances-group-template-examples"></a>

### Membuat grup Auto Scaling menggunakan pemilihan tipe instans berbasis atribut
<a name="scenario-mixed-instances-group-instance-requirements"></a>

Contoh ini menunjukkan [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)sumber daya yang berisi informasi untuk meluncurkan grup instance campuran menggunakan pemilihan tipe instans berbasis atribut. Anda menentukan nilai minimum dan maksimum untuk `VCpuCount` properti dan nilai minimum untuk `MemoryMiB` properti. Tipe instans apa pun yang digunakan oleh grup Auto Scaling harus sesuai dengan atribut instance yang diperlukan. 

`VPCZoneIdentifier`Properti grup Auto Scaling menentukan daftar subnet yang ada di tiga Availability Zone yang berbeda. Anda harus menentukan subnet yang berlaku IDs dari akun Anda sebelum Anda membuat tumpukan Anda. `LaunchTemplate`Properti mereferensikan nama logis dari [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)sumber daya yang dideklarasikan di tempat lain dalam template yang sama.

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

## Luncurkan contoh konfigurasi
<a name="scenario-launch-config-template-examples"></a>

### Buat konfigurasi peluncuran
<a name="scenario-as-launch-config"></a>

Contoh ini menunjukkan [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)sumber daya untuk grup Auto Scaling tempat Anda menentukan nilai untuk`ImageId`,`InstanceType`, dan `SecurityGroups` properti. `SecurityGroups`Properti menentukan nama logis dari [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)sumber daya yang ditentukan di tempat lain dalam template, dan grup keamanan EC2 yang ada bernama. `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
```

### Membuat grup Auto Scaling yang menggunakan konfigurasi peluncuran
<a name="scenario-single-instance-as-group-launch-configuration"></a>

Contoh ini menunjukkan [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)sumber daya dengan satu contoh. `VPCZoneIdentifier`Properti grup Auto Scaling menentukan daftar subnet yang ada di tiga Availability Zone yang berbeda. Anda harus menentukan subnet yang berlaku IDs dari akun Anda sebelum Anda membuat tumpukan Anda. `LaunchConfigurationName`Properti mereferensikan [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)sumber daya dengan nama logis `mySimpleConfig` yang didefinisikan dalam template Anda.

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

# Konfigurasikan sumber daya Application Auto Scaling dengan CloudFormation
<a name="quickref-application-auto-scaling"></a>

Bagian ini memberikan contoh CloudFormation templat untuk kebijakan penskalaan Application Auto Scaling dan tindakan terjadwal untuk sumber daya yang berbeda. AWS 

**penting**  
Ketika cuplikan Application Auto Scaling disertakan dalam template, Anda mungkin perlu mendeklarasikan dependensi pada sumber daya tertentu yang dapat diskalakan yang dibuat melalui template menggunakan atribut. `DependsOn` Ini menimpa paralelisme default dan mengarahkan CloudFormation untuk beroperasi pada sumber daya dalam urutan tertentu. Jika tidak, konfigurasi penskalaan mungkin diterapkan sebelum sumber daya telah disiapkan sepenuhnya.  
Untuk informasi lebih lanjut, lihat [Atribut DependsOn](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-dependson.html).

**Topics**
+ [Membuat kebijakan penskalaan untuk armada AppStream](#w2aac11c41c15c19b9)
+ [Buat kebijakan penskalaan untuk klaster Aurora DB](#w2aac11c41c15c19c11)
+ [Membuat kebijakan penskalaan untuk tabel DynamoDB](#w2aac11c41c15c19c13)
+ [Membuat kebijakan penskalaan untuk layanan Amazon ECS (metrik: CPU dan memori rata-rata)](#w2aac11c41c15c19c15)
+ [Membuat kebijakan penskalaan untuk layanan Amazon ECS (metrik: jumlah permintaan rata-rata per target)](#w2aac11c41c15c19c17)
+ [Buat tindakan terjadwal dengan ekspresi cron untuk fungsi Lambda](#w2aac11c41c15c19c19)
+ [Membuat tindakan terjadwal dengan `at` ekspresi untuk Armada Spot](#w2aac11c41c15c19c21)

## Membuat kebijakan penskalaan untuk armada AppStream
<a name="w2aac11c41c15c19b9"></a>

Cuplikan ini menunjukkan cara membuat kebijakan dan menerapkannya ke [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-appstream-fleet.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-appstream-fleet.html)sumber daya menggunakan sumber daya. [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-applicationautoscaling-scalingpolicy.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-applicationautoscaling-scalingpolicy.html) [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-applicationautoscaling-scalabletarget.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-applicationautoscaling-scalabletarget.html)Sumber daya mendeklarasikan target yang dapat diskalakan tempat kebijakan ini diterapkan. Application Auto Scaling dapat menskalakan jumlah instance armada minimal 1 instans dan maksimal 20 instans. Kebijakan tersebut menjaga pemanfaatan kapasitas rata-rata armada pada 75 persen, dengan periode cooldown scale-out dan scale-in 300 detik (5 menit).

Ini menggunakan fungsi `Fn::Join` dan `Rev` intrinsik untuk membangun `ResourceId` properti dengan nama logis dari `AWS::AppStream::Fleet` sumber daya yang ditentukan dalam template yang sama. Untuk informasi lebih lanjut, lihat Referensi [fungsi intrinsik](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference.html).

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

```
{
  "Resources" : {
    "ScalableTarget" : {
      "Type" : "AWS::ApplicationAutoScaling::ScalableTarget",
      "Properties" : {
        "MaxCapacity" : 20,
        "MinCapacity" : 1,
        "RoleARN" : { "Fn::Sub" : "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/appstream.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_AppStreamFleet" },
        "ServiceNamespace" : "appstream",
        "ScalableDimension" : "appstream:fleet:DesiredCapacity",
        "ResourceId" : {
          "Fn::Join" : [
            "/",
            [
              "fleet",
              {
                "Ref" : "logicalName"
              }
            ]
          ]
        }
      }
    },
    "ScalingPolicyAppStreamFleet" : {
      "Type" : "AWS::ApplicationAutoScaling::ScalingPolicy",
      "Properties" : {
        "PolicyName" : { "Fn::Sub" : "${AWS::StackName}-target-tracking-cpu75" },
        "PolicyType" : "TargetTrackingScaling",
        "ServiceNamespace" : "appstream",
        "ScalableDimension" : "appstream:fleet:DesiredCapacity",
        "ResourceId" : {
          "Fn::Join" : [
            "/",
            [
              "fleet",
              {
                "Ref" : "logicalName"
              }
            ]
          ]
        },
        "TargetTrackingScalingPolicyConfiguration" : {
          "TargetValue" : 75,
          "PredefinedMetricSpecification" : {
            "PredefinedMetricType" : "AppStreamAverageCapacityUtilization"
          },
          "ScaleInCooldown" : 300,
          "ScaleOutCooldown" : 300
        }
      }
    } 
  }
}
```

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

```
---
Resources:
  ScalableTarget:
    Type: AWS::ApplicationAutoScaling::ScalableTarget
    Properties:
      MaxCapacity: 20
      MinCapacity: 1
      RoleARN: 
        Fn::Sub: 'arn:aws:iam::${AWS::AccountId}:role/aws-service-role/appstream.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_AppStreamFleet'
      ServiceNamespace: appstream
      ScalableDimension: appstream:fleet:DesiredCapacity
      ResourceId: !Join
        - /
        - - fleet
          - !Ref logicalName
  ScalingPolicyAppStreamFleet:
    Type: AWS::ApplicationAutoScaling::ScalingPolicy
    Properties:
      PolicyName: !Sub ${AWS::StackName}-target-tracking-cpu75
      PolicyType: TargetTrackingScaling
      ServiceNamespace: appstream
      ScalableDimension: appstream:fleet:DesiredCapacity
      ResourceId: !Join
        - /
        - - fleet
          - !Ref logicalName
      TargetTrackingScalingPolicyConfiguration:
        TargetValue: 75
        PredefinedMetricSpecification:
          PredefinedMetricType: AppStreamAverageCapacityUtilization
        ScaleInCooldown: 300
        ScaleOutCooldown: 300
```

## Buat kebijakan penskalaan untuk klaster Aurora DB
<a name="w2aac11c41c15c19c11"></a>

Dalam cuplikan ini, Anda mendaftarkan sumber daya. [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbcluster.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbcluster.html) [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-applicationautoscaling-scalabletarget.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-applicationautoscaling-scalabletarget.html)Sumber daya menunjukkan bahwa cluster DB harus diskalakan secara dinamis untuk memiliki dari satu hingga delapan Replika Aurora. Anda juga menerapkan kebijakan penskalaan pelacakan target ke klaster menggunakan [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-applicationautoscaling-scalingpolicy.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-applicationautoscaling-scalingpolicy.html)sumber daya.

Dalam konfigurasi ini, metrik standar `RDSReaderAverageCPUUtilization` digunakan untuk menyesuaikan klaster DB Aurora berdasarkan pemanfaatan CPU rata-rata sebesar 40 persen di seluruh Replika Aurora dalam klaster DB Aurora tersebut. Konfigurasi ini menyediakan periode pendinginan penskalaan ke dalam selama 10 menit dan periode pendinginan penskalaan ke luar selama 5 menit.

Contoh ini menggunakan fungsi `Fn::Sub` intrinsik untuk membangun `ResourceId` properti dengan nama logis `AWS::RDS::DBCluster` sumber daya yang ditentukan dalam template yang sama. Untuk informasi lebih lanjut, lihat Referensi [fungsi intrinsik](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference.html).

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

```
{
  "Resources" : {
    "ScalableTarget" : {
      "Type" : "AWS::ApplicationAutoScaling::ScalableTarget",
      "Properties" : {
        "MaxCapacity" : 8,
        "MinCapacity" : 1,
        "RoleARN" : { "Fn::Sub" : "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/rds.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_RDSCluster" },
        "ServiceNamespace" : "rds",
        "ScalableDimension" : "rds:cluster:ReadReplicaCount",
        "ResourceId" : { "Fn::Sub" : "cluster:${logicalName}" }
      }
    },
    "ScalingPolicyDBCluster" : {
      "Type" : "AWS::ApplicationAutoScaling::ScalingPolicy",
      "Properties" : {
        "PolicyName" : { "Fn::Sub" : "${AWS::StackName}-target-tracking-cpu40" },
        "PolicyType" : "TargetTrackingScaling",
        "ServiceNamespace" : "rds",
        "ScalableDimension" : "rds:cluster:ReadReplicaCount",
        "ResourceId" : { "Fn::Sub" : "cluster:${logicalName}" }, 
        "TargetTrackingScalingPolicyConfiguration" : {
          "TargetValue" : 40,
          "PredefinedMetricSpecification" : {
            "PredefinedMetricType" : "RDSReaderAverageCPUUtilization"
          },
          "ScaleInCooldown" : 600,
          "ScaleOutCooldown" : 300
        }
      }
    }
  }
}
```

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

```
---
Resources:
  ScalableTarget:
    Type: AWS::ApplicationAutoScaling::ScalableTarget
    Properties:
      MaxCapacity: 8
      MinCapacity: 1
      RoleARN: 
        Fn::Sub: 'arn:aws:iam::${AWS::AccountId}:role/aws-service-role/rds.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_RDSCluster'
      ServiceNamespace: rds
      ScalableDimension: rds:cluster:ReadReplicaCount
      ResourceId: !Sub cluster:${logicalName}
  ScalingPolicyDBCluster:
    Type: AWS::ApplicationAutoScaling::ScalingPolicy
    Properties:
      PolicyName: !Sub ${AWS::StackName}-target-tracking-cpu40
      PolicyType: TargetTrackingScaling
      ServiceNamespace: rds
      ScalableDimension: rds:cluster:ReadReplicaCount
      ResourceId: !Sub cluster:${logicalName}
      TargetTrackingScalingPolicyConfiguration:
        TargetValue: 40
        PredefinedMetricSpecification:
          PredefinedMetricType: RDSReaderAverageCPUUtilization
        ScaleInCooldown: 600
        ScaleOutCooldown: 300
```

## Membuat kebijakan penskalaan untuk tabel DynamoDB
<a name="w2aac11c41c15c19c13"></a>

Cuplikan ini menunjukkan cara membuat kebijakan dengan tipe `TargetTrackingScaling` kebijakan dan menerapkannya ke [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-dynamodb-table.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-dynamodb-table.html)sumber daya menggunakan sumber daya. [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-applicationautoscaling-scalingpolicy.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-applicationautoscaling-scalingpolicy.html) [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-applicationautoscaling-scalabletarget.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-applicationautoscaling-scalabletarget.html)Sumber daya menyatakan target yang dapat diskalakan yang diterapkan kebijakan ini, dengan minimal lima unit kapasitas tulis dan maksimum 15. Kebijakan penskalaan menskalakan throughput kapasitas tulis tabel untuk mempertahankan pemanfaatan target pada 50 persen berdasarkan metrik `DynamoDBWriteCapacityUtilization` yang sudah ditentukan sebelumnya.

Ini menggunakan fungsi `Fn::Join` dan `Ref` intrinsik untuk membangun `ResourceId` properti dengan nama logis dari `AWS::DynamoDB::Table` sumber daya yang ditentukan dalam template yang sama. Untuk informasi lebih lanjut, lihat Referensi [fungsi intrinsik](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference.html).

**catatan**  
Untuk informasi selengkapnya tentang cara membuat CloudFormation template untuk sumber daya DynamoDB, lihat [posting blog Cara menggunakan untuk mengonfigurasi penskalaan otomatis CloudFormation untuk tabel dan indeks Amazon DynamoDB di Blog Database](https://aws.amazon.com/blogs/database/how-to-use-aws-cloudformation-to-configure-auto-scaling-for-amazon-dynamodb-tables-and-indexes/). AWS 

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

```
{
  "Resources" : {
    "WriteCapacityScalableTarget" : {
      "Type" : "AWS::ApplicationAutoScaling::ScalableTarget",
      "Properties" : {
        "MaxCapacity" : 15,
        "MinCapacity" : 5,
        "RoleARN" : { "Fn::Sub" : "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/dynamodb.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_DynamoDBTable" },
        "ServiceNamespace" : "dynamodb",
        "ScalableDimension" : "dynamodb:table:WriteCapacityUnits",
        "ResourceId" : {
          "Fn::Join" : [
            "/",
            [
              "table",
              {
                "Ref" : "logicalName"
              }
            ]
          ]
        }
      }
    },
    "WriteScalingPolicy" : {
      "Type" : "AWS::ApplicationAutoScaling::ScalingPolicy",
      "Properties" : {
        "PolicyName" : "WriteScalingPolicy",
        "PolicyType" : "TargetTrackingScaling",
        "ScalingTargetId" : { "Ref" : "WriteCapacityScalableTarget" },
        "TargetTrackingScalingPolicyConfiguration" : {
          "TargetValue" : 50.0,
          "ScaleInCooldown" : 60,
          "ScaleOutCooldown" : 60,
          "PredefinedMetricSpecification" : {
            "PredefinedMetricType" : "DynamoDBWriteCapacityUtilization"
          }
        }
      }
    }
  }
}
```

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

```
---
Resources:
  WriteCapacityScalableTarget:
    Type: AWS::ApplicationAutoScaling::ScalableTarget
    Properties:
      MaxCapacity: 15
      MinCapacity: 5
      RoleARN: 
        Fn::Sub: 'arn:aws:iam::${AWS::AccountId}:role/aws-service-role/dynamodb.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_DynamoDBTable'
      ServiceNamespace: dynamodb
      ScalableDimension: dynamodb:table:WriteCapacityUnits
      ResourceId: !Join
        - /
        - - table
          - !Ref logicalName
  WriteScalingPolicy:
    Type: AWS::ApplicationAutoScaling::ScalingPolicy
    Properties:
      PolicyName: WriteScalingPolicy
      PolicyType: TargetTrackingScaling
      ScalingTargetId: !Ref WriteCapacityScalableTarget
      TargetTrackingScalingPolicyConfiguration:
        TargetValue: 50.0
        ScaleInCooldown: 60
        ScaleOutCooldown: 60
        PredefinedMetricSpecification:
          PredefinedMetricType: DynamoDBWriteCapacityUtilization
```

## Membuat kebijakan penskalaan untuk layanan Amazon ECS (metrik: CPU dan memori rata-rata)
<a name="w2aac11c41c15c19c15"></a>

Cuplikan ini menunjukkan cara membuat kebijakan dan menerapkannya ke [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ecs-service.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ecs-service.html)sumber daya menggunakan sumber daya. [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-applicationautoscaling-scalingpolicy.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-applicationautoscaling-scalingpolicy.html) [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-applicationautoscaling-scalabletarget.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-applicationautoscaling-scalabletarget.html)Sumber daya mendeklarasikan target yang dapat diskalakan tempat kebijakan ini diterapkan. Application Auto Scaling dapat menskalakan jumlah tugas minimal 1 tugas dan maksimal 6.

Hal itu membuat dua kebijakan penskalaan dengan jenis kebijakan `TargetTrackingScaling`. Kebijakan yang digunakan untuk menskalakan layanan ECS berdasarkan penggunaan rata-rata CPU dan memori layanan. Ini menggunakan fungsi `Fn::Join` dan `Ref` intrinsik untuk membangun `ResourceId` properti dengan nama logis dari [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ecs-cluster.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ecs-cluster.html)(`myContainerCluster`) dan `AWS::ECS::Service` (`myService`) sumber daya yang ditentukan dalam template yang sama. Untuk informasi lebih lanjut, lihat Referensi [fungsi intrinsik](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference.html).

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

```
{
  "Resources" : {
    "ECSScalableTarget" : {
      "Type" : "AWS::ApplicationAutoScaling::ScalableTarget",
      "Properties" : {
        "MaxCapacity" : "6",
        "MinCapacity" : "1",
        "RoleARN" : { "Fn::Sub" : "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService" },
        "ServiceNamespace" : "ecs",
        "ScalableDimension" : "ecs:service:DesiredCount",
        "ResourceId" : {
          "Fn::Join" : [
            "/",
            [
              "service",
              {
                "Ref" : "myContainerCluster"
              },
              {
                "Fn::GetAtt" : [
                  "myService",
                  "Name"
                ]
              }
            ]
          ]
        }
      }
    },
    "ServiceScalingPolicyCPU" : {
      "Type" : "AWS::ApplicationAutoScaling::ScalingPolicy",
      "Properties" : {
        "PolicyName" : { "Fn::Sub" : "${AWS::StackName}-target-tracking-cpu70" },
        "PolicyType" : "TargetTrackingScaling",
        "ScalingTargetId" : { "Ref" : "ECSScalableTarget" },
        "TargetTrackingScalingPolicyConfiguration" : {
          "TargetValue" : 70.0,
          "ScaleInCooldown" : 180,
          "ScaleOutCooldown" : 60,
          "PredefinedMetricSpecification" : {
            "PredefinedMetricType" : "ECSServiceAverageCPUUtilization"
          }
        }
      }
    },
    "ServiceScalingPolicyMem" : {
      "Type" : "AWS::ApplicationAutoScaling::ScalingPolicy",
      "Properties" : {
        "PolicyName" : { "Fn::Sub" : "${AWS::StackName}-target-tracking-mem90" },
        "PolicyType" : "TargetTrackingScaling",
        "ScalingTargetId" : { "Ref" : "ECSScalableTarget" },
        "TargetTrackingScalingPolicyConfiguration" : {
          "TargetValue" : 90.0,
          "ScaleInCooldown" : 180,
          "ScaleOutCooldown" : 60,
          "PredefinedMetricSpecification" : {
            "PredefinedMetricType" : "ECSServiceAverageMemoryUtilization"
          }
        }
      }
    }
  }
}
```

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

```
---
Resources:
  ECSScalableTarget:
    Type: AWS::ApplicationAutoScaling::ScalableTarget
    Properties:
      MaxCapacity: 6
      MinCapacity: 1  
      RoleARN: 
        Fn::Sub: 'arn:aws:iam::${AWS::AccountId}:role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService'
      ServiceNamespace: ecs
      ScalableDimension: 'ecs:service:DesiredCount'
      ResourceId: !Join 
        - /
        - - service
          - !Ref myContainerCluster
          - !GetAtt myService.Name
  ServiceScalingPolicyCPU:
    Type: AWS::ApplicationAutoScaling::ScalingPolicy
    Properties:
      PolicyName: !Sub ${AWS::StackName}-target-tracking-cpu70
      PolicyType: TargetTrackingScaling
      ScalingTargetId: !Ref ECSScalableTarget
      TargetTrackingScalingPolicyConfiguration:
        TargetValue: 70.0
        ScaleInCooldown: 180
        ScaleOutCooldown: 60
        PredefinedMetricSpecification:
          PredefinedMetricType: ECSServiceAverageCPUUtilization
  ServiceScalingPolicyMem:
    Type: AWS::ApplicationAutoScaling::ScalingPolicy
    Properties:
      PolicyName: !Sub ${AWS::StackName}-target-tracking-mem90
      PolicyType: TargetTrackingScaling
      ScalingTargetId: !Ref ECSScalableTarget
      TargetTrackingScalingPolicyConfiguration:
        TargetValue: 90.0
        ScaleInCooldown: 180
        ScaleOutCooldown: 60
        PredefinedMetricSpecification:
          PredefinedMetricType: ECSServiceAverageMemoryUtilization
```

## Membuat kebijakan penskalaan untuk layanan Amazon ECS (metrik: jumlah permintaan rata-rata per target)
<a name="w2aac11c41c15c19c17"></a>

Contoh berikut menerapkan kebijakan penskalaan pelacakan target dengan metrik `ALBRequestCountPerTarget` yang telah ditetapkan ke layanan ECS. Kebijakan ini digunakan untuk menambah kapasitas layanan ECS ketika jumlah permintaan per target (per menit) melebihi nilai target. Karena nilai `DisableScaleIn` diatur menjadi `true`, kebijakan pelacakan target tidak akan menghapus kapasitas dari target yang dapat diskalakan.

Ini menggunakan fungsi `Fn::Join` dan `Fn::GetAtt` intrinsik untuk membangun `ResourceLabel` properti dengan nama logis dari [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)(`myLoadBalancer`) dan [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)(`myTargetGroup`) sumber daya yang ditentukan dalam template yang sama. Untuk informasi lebih lanjut, lihat Referensi [fungsi intrinsik](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference.html).

Properti `MaxCapacity` dan `MinCapacity` pada target yang dapat diskalakan dan properti `TargetValue` nilai parameter referensi kebijakan penskalaan yang Anda teruskan ke templat saat membuat atau memperbarui tumpukan.

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

```
{
  "Resources" : {
    "ECSScalableTarget" : {
      "Type" : "AWS::ApplicationAutoScaling::ScalableTarget",
      "Properties" : {
        "MaxCapacity" : { "Ref" : "MaxCount" },
        "MinCapacity" : { "Ref" : "MinCount" },
        "RoleARN" : { "Fn::Sub" : "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService" },
        "ServiceNamespace" : "ecs",
        "ScalableDimension" : "ecs:service:DesiredCount",
        "ResourceId" : {
          "Fn::Join" : [
            "/",
            [
              "service",
              {
                "Ref" : "myContainerCluster"
              },
              {
                "Fn::GetAtt" : [
                  "myService",
                  "Name"
                ]
              }
            ]
          ]
        }
      }
    },
    "ServiceScalingPolicyALB" : {
      "Type" : "AWS::ApplicationAutoScaling::ScalingPolicy",
      "Properties" : {
        "PolicyName" : "alb-requests-per-target-per-minute",
        "PolicyType" : "TargetTrackingScaling",
        "ScalingTargetId" : { "Ref" : "ECSScalableTarget" },
        "TargetTrackingScalingPolicyConfiguration" : {
          "TargetValue" : { "Ref" : "ALBPolicyTargetValue" },
          "ScaleInCooldown" : 180,
          "ScaleOutCooldown" : 30,
          "DisableScaleIn" : true,
          "PredefinedMetricSpecification" : {
            "PredefinedMetricType" : "ALBRequestCountPerTarget",
            "ResourceLabel" : {
              "Fn::Join" : [
                "/",
                [
                  {
                    "Fn::GetAtt" : [
                      "myLoadBalancer",
                      "LoadBalancerFullName"
                    ]
                  },
                  {
                    "Fn::GetAtt" : [
                      "myTargetGroup",
                      "TargetGroupFullName"
                    ]
                  }
                ]
              ]
            }
          }
        }
      }
    }
  }
}
```

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

```
---
Resources:
  ECSScalableTarget:
    Type: AWS::ApplicationAutoScaling::ScalableTarget
    Properties:
      MaxCapacity: !Ref MaxCount
      MinCapacity: !Ref MinCount  
      RoleARN: 
        Fn::Sub: 'arn:aws:iam::${AWS::AccountId}:role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService'
      ServiceNamespace: ecs
      ScalableDimension: 'ecs:service:DesiredCount'
      ResourceId: !Join 
        - /
        - - service
          - !Ref myContainerCluster
          - !GetAtt myService.Name
  ServiceScalingPolicyALB:
    Type: AWS::ApplicationAutoScaling::ScalingPolicy
    Properties:
      PolicyName: alb-requests-per-target-per-minute
      PolicyType: TargetTrackingScaling
      ScalingTargetId: !Ref ECSScalableTarget
      TargetTrackingScalingPolicyConfiguration:
        TargetValue: !Ref ALBPolicyTargetValue
        ScaleInCooldown: 180
        ScaleOutCooldown: 30
        DisableScaleIn: true
        PredefinedMetricSpecification:
          PredefinedMetricType: ALBRequestCountPerTarget
          ResourceLabel: !Join 
            - '/' 
            - - !GetAtt myLoadBalancer.LoadBalancerFullName
              - !GetAtt myTargetGroup.TargetGroupFullName
```

## Buat tindakan terjadwal dengan ekspresi cron untuk fungsi Lambda
<a name="w2aac11c41c15c19c19"></a>

Cuplikan ini mendaftarkan konkurensi yang disediakan untuk fungsi alias () bernama menggunakan sumber daya. [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-lambda-alias.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-lambda-alias.html) Hal itu juga membuat tindakan terjadwal dengan jadwal berulang menggunakan ekspresi cron. Zona waktu untuk jadwal berulang adalah UTC.

Ini menggunakan fungsi `Ref` intrinsik `Fn::Join` dan intrinsik di `RoleARN` properti untuk menentukan ARN dari peran terkait layanan. Ini menggunakan fungsi `Fn::Sub` intrinsik untuk membangun `ResourceId` properti dengan nama logis dari [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-lambda-function.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-lambda-function.html)atau [https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html)sumber daya yang ditentukan dalam template yang sama. Untuk informasi lebih lanjut, lihat Referensi [fungsi intrinsik](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference.html).

**catatan**  
Anda tidak dapat mengalokasikan konkurensi yang disediakan pada alias yang menunjuk ke versi () yang tidak dipublikasikan. `$LATEST`  
Untuk informasi selengkapnya tentang cara membuat CloudFormation template untuk sumber daya Lambda, lihat posting blog [Menjadwalkan Konkurensi Penyediaan AWS Lambda untuk](https://aws.amazon.com/blogs/compute/scheduling-aws-lambda-provisioned-concurrency-for-recurring-peak-usage/) penggunaan puncak berulang di Blog Komputasi. AWS 

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

```
{
  "ScalableTarget" : {
    "Type" : "AWS::ApplicationAutoScaling::ScalableTarget",
    "Properties" : {
      "MaxCapacity" : 250,
      "MinCapacity" : 0,
      "RoleARN" : {
        "Fn::Join" : [
          ":",
          [
            "arn:aws:iam:",
            {
              "Ref" : "AWS::AccountId"
            },
            "role/aws-service-role/lambda.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_LambdaConcurrency"
          ]
        ]
      },
      "ServiceNamespace" : "lambda",
      "ScalableDimension" : "lambda:function:ProvisionedConcurrency",
      "ResourceId" : { "Fn::Sub" : "function:${logicalName}:BLUE" },
      "ScheduledActions" : [
        {
          "ScalableTargetAction" : {
            "MinCapacity" : "250"
          },
          "ScheduledActionName" : "my-scale-out-scheduled-action",
          "Schedule" : "cron(0 18 * * ? *)",
          "EndTime" : "2022-12-31T12:00:00.000Z"
        }
      ]
    }
  }
}
```

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

```
ScalableTarget:
  Type: AWS::ApplicationAutoScaling::ScalableTarget
  Properties:
    MaxCapacity: 250
    MinCapacity: 0
    RoleARN: !Join 
      - ':'
      - - 'arn:aws:iam:'
        - !Ref 'AWS::AccountId'
        - role/aws-service-role/lambda.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_LambdaConcurrency
    ServiceNamespace: lambda
    ScalableDimension: lambda:function:ProvisionedConcurrency
    ResourceId: !Sub function:${logicalName}:BLUE
    ScheduledActions:
      - ScalableTargetAction:
          MinCapacity: 250
        ScheduledActionName: my-scale-out-scheduled-action
        Schedule: 'cron(0 18 * * ? *)'
        EndTime: '2022-12-31T12:00:00.000Z'
```

## Membuat tindakan terjadwal dengan `at` ekspresi untuk Armada Spot
<a name="w2aac11c41c15c19c21"></a>

Cuplikan ini menunjukkan cara membuat dua tindakan terjadwal yang terjadi hanya sekali untuk [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-spotfleet.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-spotfleet.html)sumber daya yang menggunakan sumber daya. [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-applicationautoscaling-scalabletarget.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-applicationautoscaling-scalabletarget.html) Zona waktu untuk setiap tindakan terjadwal satu kali adalah UTC.

Ini menggunakan fungsi `Fn::Join` dan `Ref` intrinsik untuk membangun `ResourceId` properti dengan nama logis dari `AWS::EC2::SpotFleet` sumber daya yang ditentukan dalam template yang sama. Untuk informasi lebih lanjut, lihat Referensi [fungsi intrinsik](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference.html).

**catatan**  
Permintaan Armada Spot harus memiliki jenis permintaan `maintain`. Penskalaan otomatis tidak didukung untuk permintaan tipe , atau blok Spot.

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

```
{
  "Resources" : {
    "SpotFleetScalableTarget" : {
      "Type" : "AWS::ApplicationAutoScaling::ScalableTarget",
      "Properties" : {
        "MaxCapacity" : 0,
        "MinCapacity" : 0,
        "RoleARN" : { "Fn::Sub" : "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/ec2.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_EC2SpotFleetRequest" },
        "ServiceNamespace" : "ec2",
        "ScalableDimension" : "ec2:spot-fleet-request:TargetCapacity",
        "ResourceId" : {
          "Fn::Join" : [
            "/",
            [
              "spot-fleet-request",
              {
                "Ref" : "logicalName"
              }
            ]
          ]
        },
        "ScheduledActions" : [
          {
            "ScalableTargetAction" : {
              "MaxCapacity" : "10",
              "MinCapacity" : "10"
            },
            "ScheduledActionName" : "my-scale-out-scheduled-action",
            "Schedule" : "at(2022-05-20T13:00:00)"
          },
          {
            "ScalableTargetAction" : {
              "MaxCapacity" : "0",
              "MinCapacity" : "0"
            },
            "ScheduledActionName" : "my-scale-in-scheduled-action",
            "Schedule" : "at(2022-05-20T21:00:00)"
          }
        ]
      }
    }
  }
}
```

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

```
---
Resources:
  SpotFleetScalableTarget:
    Type: AWS::ApplicationAutoScaling::ScalableTarget
    Properties:
      MaxCapacity: 0
      MinCapacity: 0
      RoleARN: 
        Fn::Sub: 'arn:aws:iam::${AWS::AccountId}:role/aws-service-role/ec2.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_EC2SpotFleetRequest'
      ServiceNamespace: ec2
      ScalableDimension: 'ec2:spot-fleet-request:TargetCapacity'
      ResourceId: !Join 
        - /
        - - spot-fleet-request
          - !Ref logicalName
      ScheduledActions:
        - ScalableTargetAction:
            MaxCapacity: 10
            MinCapacity: 10
          ScheduledActionName: my-scale-out-scheduled-action
          Schedule: 'at(2022-05-20T13:00:00)'
        - ScalableTargetAction:
            MaxCapacity: 0
            MinCapacity: 0
          ScheduledActionName: my-scale-in-scheduled-action
          Schedule: 'at(2022-05-20T21:00:00)'
```