Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Konfigurasikan sumber EC2 daya Amazon Auto Scaling dengan AWS CloudFormation
Contoh berikut menunjukkan cuplikan berbeda untuk disertakan dalam templat untuk digunakan dengan Amazon Auto EC2 Scaling.
Kategori cuplikan
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 subnet yang berlaku IDs dari akun Anda sebelum Anda 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 EC2 cuplikan Amazon 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 dua sumberAWS::EC2::Subnet
daya tempat instance grup EC2 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 SNS pemberitahuan Amazon saat peristiwa yang ditentukan berlangsung. NotificationConfigurations
Properti menentukan SNS topik di mana AWS CloudFormation mengirim pemberitahuan dan peristiwa yang akan menyebabkan AWS CloudFormation untuk mengirim pemberitahuan. Ketika peristiwa yang ditentukan oleh NotificationTypes
terjadi, AWS CloudFormation akan mengirim pemberitahuan ke SNS topik 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 subnet yang berlaku IDs dari akun Anda sebelum Anda 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. Saat 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 subnet yang berlaku IDs dari akun Anda sebelum Anda 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":"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
--- 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: !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 menambah jumlah EC2 instance dalam grup sebesar 1 ketika ambang alarm dilanggar.
AWS::CloudWatch::Alarm
Sumber daya CPUAlarmHigh
menentukan kebijakan penskalaan ASGScalingPolicyHigh
sebagai tindakan yang akan dijalankan saat alarm berada dalam ALARM status ()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 subnet yang berlaku IDs dari akun Anda sebelum Anda 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 EC2 keamanan yang ada bernamamyExistingEC2SecurityGroup
.
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 subnet yang berlaku IDs dari akun Anda sebelum Anda 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'