Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Konfigurasikan sumber daya Auto Scaling Amazon EC2 dengan AWS CloudFormation
Contoh berikut menunjukkan cuplikan berbeda untuk disertakan dalam templat untuk digunakan dengan Auto Scaling Amazon EC2.
Kategori Snippet
Buat satu contoh grup Auto Scaling
Contoh ini menunjukkan AWS::AutoScaling::AutoScalingGroup
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 ID subnet yang berlaku dari akun Anda sebelum membuat tumpukan Anda. LaunchTemplate
Properti mereferensikan AWS::EC2::LaunchTemplate
sumber daya dengan nama logis myLaunchTemplate
yang didefinisikan di tempat lain dalam template Anda.
catatan
Untuk contoh templat peluncuran, lihat Buat template peluncuran dengan AWS CloudFormation di bagian cuplikan Amazon EC2 dan bagian Contoh di sumber daya. AWS::EC2::LaunchTemplate
JSON
"myASG" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "VPCZoneIdentifier" : [ "
subnetIdAz1
", "subnetIdAz2
", "subnetIdAz3
" ], "LaunchTemplate" : { "LaunchTemplateId" : { "Ref" : "myLaunchTemplate
" }, "Version" : { "Fn::GetAtt" : [ "myLaunchTemplate
", "LatestVersionNumber" ] } }, "MaxSize" : "1", "MinSize" : "1" } }
YAML
myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: -
subnetIdAz1
-subnetIdAz2
-subnetIdAz3
LaunchTemplate: LaunchTemplateId: !RefmyLaunchTemplate
Version: !GetAttmyLaunchTemplate
.LatestVersionNumber MaxSize: '1' MinSize: '1'
Buat grup Auto Scaling dengan penyeimbang beban terlampir
Contoh ini menunjukkan AWS::AutoScaling::AutoScalingGroup
sumber daya untuk load balancing melalui beberapa server. Ini menentukan nama logis AWS sumber daya yang dinyatakan di tempat lain dalam template yang sama.
-
VPCZoneIdentifier
Properti menentukan nama logis dari duaAWS::EC2::Subnet
sumber daya tempat instans EC2 grup Auto Scaling akan dibuat: dan.myPublicSubnet1
myPublicSubnet2
-
LaunchTemplate
Properti menentukanAWS::EC2::LaunchTemplate
sumber daya dengan namamyLaunchTemplate
logis. -
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,AWS::ElasticLoadBalancingV2::TargetGroup
sumber daya dengan nama logismyTargetGroup
.
JSON
"myServerGroup" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "VPCZoneIdentifier" : [ { "Ref" : "
myPublicSubnet1
" }, { "Ref" : "myPublicSubnet2
" } ], "LaunchTemplate" : { "LaunchTemplateId" : { "Ref" : "myLaunchTemplate
" }, "Version" : { "Fn::GetAtt" : [ "myLaunchTemplate
", "LatestVersionNumber" ] } }, "MaxSize" : "5", "MinSize" : "1", "TargetGroupARNs" : [ { "Ref" : "myTargetGroup
" } ] } }
YAML
myServerGroup: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: - !Ref
myPublicSubnet1
- !RefmyPublicSubnet2
LaunchTemplate: LaunchTemplateId: !RefmyLaunchTemplate
Version: !GetAttmyLaunchTemplate
.LatestVersionNumber MaxSize: '5' MinSize: '1' TargetGroupARNs: - !RefmyTargetGroup
Lihat juga
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. AWS::AutoScaling::ScalingPolicy
Buat grup Auto Scaling dengan notifikasi
Contoh ini menunjukkan AWS::AutoScaling::AutoScalingGroup
sumber daya yang mengirimkan notifikasi Amazon SNS saat peristiwa yang ditentukan berlangsung. NotificationConfigurations
Properti menentukan topik SNS di mana AWS CloudFormation mengirimkan pemberitahuan dan peristiwa yang akan menyebabkan AWS CloudFormation untuk mengirim pemberitahuan. Ketika peristiwa yang ditentukan oleh NotificationTypes
terjadi, AWS CloudFormation akan mengirim pemberitahuan ke topik SNS yang ditentukan olehTopicARN
. Saat Anda meluncurkan tumpukan, AWS CloudFormation buat AWS::SNS::Subscription
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 ID subnet yang berlaku dari akun Anda sebelum membuat tumpukan Anda. LaunchTemplate
Properti mereferensikan nama logis dari AWS::EC2::LaunchTemplate
sumber daya yang dideklarasikan di tempat lain dalam template yang sama.
JSON
"myASG" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "DependsOn": [ "snsTopicForAutoScalingGroup" ], "Properties" : { "VPCZoneIdentifier" : [ "
subnetIdAz1
", "subnetIdAz2
", "subnetIdAz3
" ], "LaunchTemplate" : { "LaunchTemplateId" : { "Ref" : "logicalName
" }, "Version" : { "Fn::GetAtt" : [ "logicalName
", "LatestVersionNumber" ] } }, "MaxSize" : "5", "MinSize" : "1", "NotificationConfigurations" : [ { "TopicARN" : { "Ref" : "snsTopicForAutoScalingGroup" }, "NotificationTypes" : [ "autoscaling:EC2_INSTANCE_LAUNCH", "autoscaling:EC2_INSTANCE_LAUNCH_ERROR", "autoscaling:EC2_INSTANCE_TERMINATE", "autoscaling:EC2_INSTANCE_TERMINATE_ERROR", "autoscaling:TEST_NOTIFICATION" ] } ] } }
YAML
myASG: Type: AWS::AutoScaling::AutoScalingGroup DependsOn: - snsTopicForAutoScalingGroup Properties: VPCZoneIdentifier: -
subnetIdAz1
-subnetIdAz2
-subnetIdAz3
LaunchTemplate: LaunchTemplateId: !ReflogicalName
Version: !GetAttlogicalName
.LatestVersionNumber MaxSize: '5' MinSize: '1' NotificationConfigurations: - TopicARN: !Ref snsTopicForAutoScalingGroup NotificationTypes: - autoscaling:EC2_INSTANCE_LAUNCH - autoscaling:EC2_INSTANCE_LAUNCH_ERROR - autoscaling:EC2_INSTANCE_TERMINATE - autoscaling:EC2_INSTANCE_TERMINATE_ERROR - autoscaling:TEST_NOTIFICATION
Buat grup Auto Scaling yang menggunakan a dan CreationPolicy
UpdatePolicy
Contoh berikut menunjukkan cara menambahkan CreationPolicyatribut dan UpdatePolicy atribut ke AWS::AutoScaling::AutoScalingGroup
sumber daya.
Kebijakan pembuatan sampel mencegah grup Auto Scaling mencapai CREATE_COMPLETE
status hingga AWS 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 ditentukanTimeout
, 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.
WaitOnResourceSignals
Atribut diatur ketrue
. CloudFormationharus menerima sinyal dari setiap instance baru dalam yang ditentukan PauseTime
sebelum melanjutkan pembaruan. Sementara pembaruan tumpukan sedang berlangsung, proses EC2 Auto Scaling berikut ditangguhkan: HealthCheck
, ReplaceUnhealthy
, AZRebalance
, AlarmNotification
, dan ScheduledActions
. Catatan: Jangan menangguhkan jenis prosesLaunch
,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 ID subnet yang berlaku dari akun Anda sebelum membuat tumpukan Anda. LaunchTemplate
Properti mereferensikan nama logis dari AWS::EC2::LaunchTemplate
sumber daya yang dideklarasikan di tempat lain dalam template yang sama.
JSON
{ "Resources":{ "myASG":{ "CreationPolicy":{ "ResourceSignal":{ "Count":"3", "Timeout":"PT15M" } }, "UpdatePolicy":{ "AutoScalingRollingUpdate":{ "MinInstancesInService":"1", "MaxBatchSize":"1", "PauseTime":"PT12M5S", "WaitOnResourceSignals":"true", "SuspendProcesses":[ "HealthCheck", "ReplaceUnhealthy", "AZRebalance", "AlarmNotification", "ScheduledActions" ] } }, "Type":"AWS::AutoScaling::AutoScalingGroup", "Properties":{ "VPCZoneIdentifier":[ "
subnetIdAz1
", "subnetIdAz2
", "subnetIdAz3
" ], "LaunchTemplate":{ "LaunchTemplateId":{ "Ref":"logicalName
" }, "Version":{ "Fn::GetAtt":[ "logicalName
", "LatestVersionNumber" ] } }, "MaxSize":"5", "MinSize":"3" } } } }
YAML
--- Resources: myASG: CreationPolicy: ResourceSignal: Count: '3' Timeout: PT15M UpdatePolicy: AutoScalingRollingUpdate: MinInstancesInService: '1' MaxBatchSize: '1' PauseTime: PT12M5S WaitOnResourceSignals: true SuspendProcesses: - HealthCheck - ReplaceUnhealthy - AZRebalance - AlarmNotification - ScheduledActions Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: -
subnetIdAz1
-subnetIdAz2
-subnetIdAz3
LaunchTemplate: LaunchTemplateId: !ReflogicalName
Version: !GetAttlogicalName
.LatestVersionNumber MaxSize: '5' MinSize: '3'
Membuat kebijakan penskalaan langkah
Contoh ini menunjukkan AWS::AutoScaling::ScalingPolicy
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.
AWS::CloudWatch::Alarm
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 AWS::AutoScaling::AutoScalingGroup
sumber daya yang dideklarasikan di tempat lain dalam template yang sama.
JSON
{ "Resources":{ "ASGScalingPolicyHigh":{ "Type":"AWS::AutoScaling::ScalingPolicy", "Properties":{ "AutoScalingGroupName":{ "Ref":"
logicalName
" }, "PolicyType":"StepScaling", "AdjustmentType":"ChangeInCapacity", "StepAdjustments":[ { "MetricIntervalLowerBound":0, "ScalingAdjustment":1 } ] } }, "CPUAlarmHigh":{ "Type":"AWS::CloudWatch::Alarm", "Properties":{ "EvaluationPeriods":"2", "Statistic":"Average", "Threshold":"90", "AlarmDescription":"Scale out if CPU > 90% for 2 minutes", "Period":"60", "AlarmActions":[ { "Ref":"ASGScalingPolicyHigh" } ], "Namespace":"AWS/EC2", "Dimensions":[ { "Name":"AutoScalingGroupName", "Value":{ "Ref":"logicalName
" } } ], "ComparisonOperator":"GreaterThanThreshold", "MetricName":"CPUUtilization" } } } }
YAML
--- Resources: ASGScalingPolicyHigh: Type: AWS::AutoScaling::ScalingPolicy Properties: AutoScalingGroupName: !Ref
logicalName
PolicyType: StepScaling AdjustmentType: ChangeInCapacity StepAdjustments: - MetricIntervalLowerBound: 0 ScalingAdjustment: 1 CPUAlarmHigh: Type: AWS::CloudWatch::Alarm Properties: EvaluationPeriods: 2 Statistic: Average Threshold: 90 AlarmDescription: 'Scale out if CPU > 90% for 2 minutes' Period: 60 AlarmActions: - !Ref ASGScalingPolicyHigh Namespace: AWS/EC2 Dimensions: - Name: AutoScalingGroupName Value: !ReflogicalName
ComparisonOperator: GreaterThanThreshold MetricName: CPUUtilization
Lihat juga
Untuk contoh templat lainnya untuk kebijakan penskalaan, lihat bagian Contoh di AWS::AutoScaling::ScalingPolicy
sumber daya.
Contoh kelompok contoh campuran
Buat grup Auto Scaling menggunakan pemilihan tipe instans berbasis atribut
Contoh ini menunjukkan AWS::AutoScaling::AutoScalingGroup
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 ID subnet yang berlaku dari akun Anda sebelum membuat tumpukan Anda. LaunchTemplate
Properti mereferensikan nama logis dari AWS::EC2::LaunchTemplate
sumber daya yang dideklarasikan di tempat lain dalam template yang sama.
JSON
{ "Resources":{ "myASG":{ "Type":"AWS::AutoScaling::AutoScalingGroup", "Properties":{ "VPCZoneIdentifier":[ "
subnetIdAz1
", "subnetIdAz2
", "subnetIdAz3
" ], "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":{ "Ref":"logicalName
" }, "Version":{ "Fn::GetAtt":[ "logicalName
", "LatestVersionNumber" ] } }, "Overrides":[ { "InstanceRequirements":{ "VCpuCount":{ "Min":2
, "Max":4
}, "MemoryMiB":{ "Min":2048
} } } ] } }, "MaxSize":"5", "MinSize":"1" } } } }
YAML
--- Resources: myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: -
subnetIdAz1
-subnetIdAz2
-subnetIdAz3
MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateId: !ReflogicalName
Version: !GetAttlogicalName
.LatestVersionNumber Overrides: - InstanceRequirements: VCpuCount: Min:2
Max:4
MemoryMiB: Min:2048
MaxSize: '5' MinSize: '1'
Luncurkan contoh konfigurasi
Buat konfigurasi peluncuran
Contoh ini menunjukkan AWS::AutoScaling::LaunchConfiguration
sumber daya untuk grup Auto Scaling tempat Anda menentukan nilai untukImageId
,InstanceType
, dan SecurityGroups
properti. SecurityGroups
Properti menentukan nama logis dari AWS::EC2::SecurityGroup
sumber daya yang ditentukan di tempat lain dalam template, dan grup keamanan EC2 yang ada bernama. myExistingEC2SecurityGroup
JSON
"mySimpleConfig" : { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Properties" : { "ImageId" : "
ami-02354e95b3example
", "InstanceType" : "t3.micro
", "SecurityGroups" : [ { "Ref" : "logicalName
" }, "myExistingEC2SecurityGroup
" ] } }
YAML
mySimpleConfig: Type: AWS::AutoScaling::LaunchConfiguration Properties: ImageId:
ami-02354e95b3example
InstanceType:t3.micro
SecurityGroups: - !ReflogicalName
-myExistingEC2SecurityGroup
Membuat grup Auto Scaling yang menggunakan konfigurasi peluncuran
Contoh ini menunjukkan AWS::AutoScaling::AutoScalingGroup
sumber daya dengan satu contoh. VPCZoneIdentifier
Properti grup Auto Scaling menentukan daftar subnet yang ada di tiga Availability Zone yang berbeda. Anda harus menentukan ID subnet yang berlaku dari akun Anda sebelum membuat tumpukan Anda. LaunchConfigurationName
Properti mereferensikan AWS::AutoScaling::LaunchConfiguration
sumber daya dengan nama logis mySimpleConfig
yang didefinisikan dalam template Anda.
JSON
"myASG" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "VPCZoneIdentifier" : [ "
subnetIdAz1
", "subnetIdAz2
", "subnetIdAz3
" ], "LaunchConfigurationName" : { "Ref" : "mySimpleConfig
" }, "MaxSize" : "1", "MinSize" : "1" } }
YAML
myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: -
subnetIdAz1
-subnetIdAz2
-subnetIdAz3
LaunchConfigurationName: !RefmySimpleConfig
MaxSize: '1' MinSize: '1'