UpdatePolicyatribut - AWS CloudFormation

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

UpdatePolicyatribut

Gunakan UpdatePolicy atribut untuk menentukan cara AWS CloudFormation menangani pembaruan ke sumber daya tertentu selama operasi pembaruan tumpukan.

Gambaran Umum

Dengan menggunakan UpdatePolicy atribut, Anda dapat mengontrol bagaimana sumber daya berikut diperbarui, seperti yang dijelaskan di sini:

  • AWS::AppStream::Fleet— CloudFormation dapat menghentikan dan memulai armada, yang menyebabkan instance armada diganti. Dengan demikian, semua instance akan memiliki perubahan terbaru yang diterapkan segera setelah pembaruan tumpukan.

  • AWS::AutoScaling::AutoScalingGroup— Dengan grup Auto Scaling, Anda dapat menggunakan satu atau beberapa kebijakan pembaruan untuk mengontrol cara CloudFormation menangani pembaruan tertentu. Kebijakan ini meliputi:

    • AutoScalingReplacingUpdatedan AutoScalingRollingUpdate kebijakan — CloudFormation dapat mengganti grup Auto Scaling dan instance-nya dengan AutoScalingReplacingUpdate kebijakan, atau hanya mengganti instans dengan kebijakan. AutoScalingRollingUpdate Operasi penggantian ini terjadi ketika Anda membuat satu atau beberapa perubahan berikut:

      • Mengubah grup Auto Scaling AWS::AutoScaling::LaunchConfiguration.

      • Ubah properti grup Auto Scaling. VPCZoneIdentifier

      • Ubah properti grup Auto Scaling. LaunchTemplate

      • Ubah properti grup Auto Scaling. PlacementGroup

      • Perbarui grup Auto Scaling yang berisi instance yang tidak cocok dengan saat ini. LaunchConfiguration

      Jika AutoScalingReplacingUpdate dan AutoScalingRollingUpdate kebijakan yang ditentukan, pengaturan WillReplace properti untuk true memberikan AutoScalingReplacingUpdate diutamakan.

    • AutoScalingScheduledActionkebijakan — Kebijakan ini berlaku saat Anda memperbarui tumpukan yang menyertakan grup Auto Scaling dengan tindakan terjadwal yang menskalakan grup pada waktu tertentu. CloudFormation tidak dapat mengubah ukuran minimum, ukuran maksimum, atau kapasitas grup yang diinginkan kecuali mereka telah diubah secara eksplisit dalam template tumpukan. Kebijakan ini membantu mencegah pembaruan tak terduga yang dapat mengganggu aktivitas penskalaan terjadwal.

  • AWS::ElastiCache::ReplicationGroup— CloudFormation dapat memodifikasi pecahan grup replikasi dengan menambahkan atau menghapus pecahan, daripada mengganti seluruh sumber daya.

  • AWS::OpenSearchService::Domain dan AWS::Elasticsearch::Domain(legacy) — CloudFormation dapat meningkatkan domain OpenSearch Layanan ke versi baru OpenSearch atau Elasticsearch tanpa mengganti seluruh sumber daya.

  • AWS::Lambda::Alias— CloudFormation dapat melakukan CodeDeploy penyebaran ketika versi berubah pada alias.

Bagian berikut menjelaskan sintaks dan properti untuk UpdatePolicy atribut yang didukung oleh setiap jenis sumber daya.

AppStream Kebijakan pembaruan 2.0

Untuk menghentikan armada AppStream 2.0 sebelum pembaruan dan memulai ulang setelah pembaruan, gunakan kebijakan pembaruan AppStream 2.0.

Sintaks

JSON

{ "UpdatePolicy": { "StopBeforeUpdate": { "Type": "Boolean" }, "StartAfterUpdate": { "Type": "Boolean" } } }

YAML

UpdatePolicy: StopBeforeUpdate: Type: Boolean StartAfterUpdate: Type: Boolean
StopBeforeUpdate

Menghentikan armada yang ditentukan sebelum pembaruan.

Wajib: Tidak

StartAfterUpdate

Memulai armada yang ditentukan setelah pembaruan.

Wajib: Tidak

AutoScalingReplacingUpdatekebijakan

Untuk mengganti grup Auto Scaling dan instance yang dikandungnya, gunakan kebijakan. AutoScalingReplacingUpdate

Sebelum mencoba pembaruan, pastikan Anda memiliki EC2 kapasitas Amazon yang cukup untuk grup Auto Scaling lama dan baru.

Sintaks

JSON

"UpdatePolicy" : { "AutoScalingReplacingUpdate" : { "WillReplace" : Boolean } }

YAML

UpdatePolicy: AutoScalingReplacingUpdate: WillReplace: Boolean

Properti

WillReplace

Menentukan apakah grup Auto Scaling dan instance yang dikandungnya diganti selama pembaruan. Selama penggantian, CloudFormation pertahankan grup lama sampai selesai membuat yang baru. Jika pembaruan gagal, CloudFormation dapat memutar kembali ke grup Auto Scaling lama dan menghapus grup Auto Scaling yang baru.

Saat CloudFormation membuat grup baru, itu tidak melepaskan atau melampirkan instance apa pun. Setelah berhasil membuat grup Auto Scaling baru, CloudFormation hapus grup Auto Scaling lama selama proses pembersihan.

Saat Anda mengatur WillReplace parameter, ingatlah untuk menentukan pencocokan CreationPolicy. Jika jumlah minimum instans (ditentukan oleh MinSuccessfulInstancesPercent properti) tidak menandakan keberhasilan dalam Timeout periode (ditentukan dalam CreationPolicy kebijakan), pembaruan penggantian gagal dan kembali ke CloudFormation grup Auto Scaling lama.

Tipe: Boolean

Wajib: Tidak

AutoScalingRollingUpdatekebijakan

Untuk melakukan pembaruan bergulir instans dalam grup Auto Scaling daripada menunggu aktivitas penskalaan untuk secara bertahap mengganti instance lama dengan instance yang lebih baru, gunakan kebijakan tersebut. AutoScalingRollingUpdate Kebijakan ini memberi Anda fleksibilitas untuk menentukan apakah CloudFormation menggantikan instance yang ada di grup Auto Scaling dalam batch atau sekaligus tanpa mengganti seluruh sumber daya.

Hal-hal yang perlu dipertimbangkan saat menggunakan AutoScalingRollingUpdate kebijakan:

  • Saat CloudFormation memutar kembali pembaruan, ia menggunakan UpdatePolicy konfigurasi yang ditentukan dalam template sebelum pembaruan tumpukan saat ini. Misalnya, Anda mengubah MaxBatchSize dari 1 menjadi 10 diUpdatePolicy, melakukan pembaruan tumpukan, dan pembaruan itu gagal. CloudFormation akan menggunakan 1 sebagai ukuran batch maksimum saat berputar kembali, bukan 10. Untuk menghindari skenario ini, buat perubahan UpdatePolicy pada pembaruan terpisah sebelum pembaruan apa pun ke grup Auto Scaling yang kemungkinan akan memulai pembaruan bergulir.

  • CloudFormation merekomendasikan untuk menentukan SuspendProcesses properti untuk menangguhkan sementara proses Auto EC2 Scaling Amazon yang mungkin mengganggu pembaruan bergulir dan menyebabkannya gagal.

  • CloudFormation mendukung penggunaan kait siklus hidup Amazon EC2 Auto Scaling saat meluncurkan atau menghentikan instance. Ini memberi Anda waktu untuk melakukan tindakan kustom pada instance sebelum pindah ke status berikutnya. Untuk memastikan bahwa instance baru mencapai InService status, selesaikan kait siklus hidup dengan CONTINUE hasil saat tindakan kustom selesai. Secara default, jika tidak ada respons yang diterima dan waktu pengait siklus hidup habis, peluncuran instance akan dianggap tidak berhasil dan ditinggalkan. Jika tidak ada instance yang mencapai InService status, pembaruan bergulir pada akhirnya akan gagal.

  • Fitur EC2 Auto Scaling Amazon seperti kebijakan pemeliharaan instans, kebijakan penghentian, dan perlindungan penskalaan tidak tersedia untuk digunakan dengan pembaruan bergulir. CloudFormation Rencanakan pembaruan bergulir Anda sesuai dengan itu.

  • Jika Anda menggunakan AutoScalingRollingUpdate kebijakan dan menghapus pengaturan grup penempatan, grup penempatan akan dihapus dari grup Auto Scaling dan template. CloudFormation Ini juga memicu pembaruan bergulir, sehingga instance baru tidak akan diluncurkan ke grup penempatan.

Sintaks

JSON

"UpdatePolicy" : { "AutoScalingRollingUpdate" : { "MaxBatchSize" : Integer, "MinActiveInstancesPercent" : Integer, "MinInstancesInService" : Integer, "MinSuccessfulInstancesPercent" : Integer, "PauseTime" : String, "SuspendProcesses" : [ List of processes ], "WaitOnResourceSignals" : Boolean } }

Properti

MaxBatchSize

Menentukan jumlah maksimum contoh yang dapat diganti secara bersamaan.

Default: 1

Maksimum: 100

Tipe: Integer

Wajib: Tidak

MinActiveInstancesPercent

Menentukan persentase instance dalam grup Auto Scaling yang harus berada dalam InService status relatif terhadap kapasitas yang diinginkan grup tersebut selama pembaruan bergulir agar pembaruan berhasil. Anda dapat menentukan nilai dari 0 hingga 100. CloudFormation putaran ke sepersepuluh persen terdekat. Misalnya, jika Anda memperbarui lima instans dengan InService persentase minimum 50, setidaknya tiga instance harus dalam status. InService Jika sebuah instance tidak bertransisi ke InService status dalam waktu tetap 1 jam, CloudFormation asumsikan bahwa instance tidak diperbarui.

Pengaturan MinActiveInstancesPercent di dalam Anda juga UpdatePolicy akan memengaruhi instans yang diluncurkan saat DesiredCapacity properti AWS::AutoScaling::AutoScalingGroup sumber daya disetel lebih tinggi dari kapasitas yang diinginkan saat ini dari grup Auto Scaling tersebut.

Default: 100

Tipe: Integer

Wajib: Tidak

MinInstancesInService

Menentukan jumlah minimum instance yang harus digunakan dalam grup Auto Scaling CloudFormation saat memperbarui instance lama. Nilai ini harus kurang dari MaxSizedari grup Auto Scaling.

Awas

Kami menyarankan Anda untuk menetapkan nilai MinInstancesInService properti untuk setidaknya MinSizedari grup Auto Scaling. Ini menghindari potensi masalah ketersediaan selama pembaruan bergulir karena 0 instance yang melayani lalu lintas pelanggan.

Default: 0

Tipe: Integer

Wajib: Tidak

MinSuccessfulInstancesPercent

Menentukan persentase instance dalam pembaruan bergulir Auto Scaling yang harus memberi sinyal keberhasilan agar pembaruan berhasil. Anda dapat menentukan nilai dari 0 hingga 100. CloudFormationputaran ke sepersepuluh persen terdekat. Sebagai contoh, jika Anda memperbarui lima instans dengan persentase sukses minimum 50, tiga instans harus memberi sinyal berhasil. Jika instance tidak mengirim sinyal dalam waktu yang ditentukan di PauseTime properti, CloudFormation asumsikan bahwa instance tidak diperbarui.

Kami menyarankan Anda menetapkan nilai MinSuccessfulInstancesPercent properti ke nilai yang lebih besar dari 0. Ketika MinSuccessfulInstancesPercent properti diatur ke 0, CloudFormation menunggu 0% dari instance kapasitas berada dalam keadaan. InService MinSuccessfulInstancesPercentkembali segera dan sebelum mempertimbangkan status grup Auto Scaling UPDATE_COMPLETE untuk beralih ke sumber daya berikutnya yang ditentukan dalam template tumpukan. Jika grup Auto Scaling lainnya ditentukan dalam CloudFormation template Anda, mereka akan diperbarui secara bersamaan. Ketika semua grup Auto Scaling diterapkan sekaligus dengan 0% dari instance kapasitas dalam suatu InService status, maka Anda akan mengalami masalah ketersediaan, karena 0 instans yang melayani lalu lintas pelanggan.

Default: 100

Tipe: Integer

Wajib: Tidak

PauseTime

Jumlah waktu yang CloudFormation berhenti setelah membuat perubahan ke batch instance untuk memberikan waktu untuk memulai aplikasi perangkat lunak.

Tentukan PauseTime dalam format durasi ISO86 01 (dalam formatPT#H#M#S, di mana masing-masing # adalah jumlah jam, menit, dan detik, masing-masing). Maksimum PauseTime adalah satu jam (PT1H).

Awas

Kapan WaitOnResourceSignals diatur ketrue, PauseTime bertindak sebagai nilai batas waktu. Ini menentukan waktu maksimum yang CloudFormation menunggu untuk menerima jumlah sinyal valid yang diperlukan dari instance yang diganti selama pembaruan bergulir dan dari instance baru yang ditambahkan dengan meningkatkan DesiredCapacityproperti sumber AWS::AutoScaling::AutoScalingGroup daya. Jika PauseTime terlampaui sebelum CloudFormation menerima sinyal yang diharapkan, pembaruan gagal. Untuk hasil terbaik, tentukan periode waktu yang menyediakan waktu yang cukup bagi aplikasi Anda untuk memulai. Jika update perlu di-rollback, singkat PauseTime dapat menyebabkan rollback gagal.

Default: PT5M (5 menit) saat WaitOnResourceSignals properti disetel ketrue. Jika tidak, tidak ada nilai default yang ditetapkan.

Tipe: String

Wajib: Tidak

SuspendProcesses

Menentukan proses Auto Scaling untuk ditangguhkan selama pembaruan tumpukan. Proses penangguhan mencegah Auto Scaling mengganggu pembaruan tumpukan. Misalnya, Anda dapat menangguhkan hal yang mengkhawatirkan sehingga Amazon EC2 Auto Scaling tidak memulai kebijakan penskalaan yang terkait dengan alarm. Untuk nilai yang valid, lihat Jenis proses di Panduan Pengguna EC2 Auto Scaling Amazon.

Default: Tidak ditentukan

Jenis: Daftar proses Auto Scaling

Wajib: Tidak

WaitOnResourceSignals

Menentukan apakah CloudFormation menunggu sinyal sukses dari instance baru sebelum melanjutkan pembaruan. CloudFormation menunggu PauseTime durasi yang ditentukan untuk sinyal sukses.

Untuk memberi sinyal pada grup Auto Scaling, gunakan skrip pembantu sinyal cfn. Untuk grup Auto Scaling yang terkait dengan Elastic Load Balancing, pertimbangkan untuk menambahkan pemeriksaan kesehatan untuk memastikan bahwa instans sehat sebelum menandakan keberhasilan dengan menggunakan skrip pembantu cfn-init. Sebagai contoh, lihat verify_instance_health perintah dalam contoh template untuk pembaruan bergulir Amazon EC2 Auto Scaling di repositori kamiGitHub .

Default: false

Jenis: Boolean

Diperlukan: Bersyarat. Jika Anda menentukan MinSuccessfulInstancesPercent properti, WaitOnResourceSignals properti harus diatur ketrue.

AutoScalingScheduledActionkebijakan

Untuk menentukan cara CloudFormation menangani pembaruan untukMinSize,MaxSize, dan DesiredCapacity properti saat AWS::AutoScaling::AutoScalingGroup sumber daya memiliki tindakan terjadwal terkait, gunakan AutoScalingScheduledAction kebijakan tersebut.

Dengan tindakan terjadwal, properti ukuran grup Auto Scaling dapat berubah kapan saja. Saat Anda memperbarui tumpukan dengan grup Auto Scaling dan tindakan terjadwal, CloudFormation selalu tetapkan nilai properti ukuran grup grup Auto Scaling Anda ke nilai yang ditentukan dalam AWS::AutoScaling::AutoScalingGroup sumber daya templat Anda, meskipun tindakan terjadwal berlaku.

Jika Anda tidak CloudFormation ingin mengubah salah satu nilai properti ukuran grup ketika Anda memiliki tindakan terjadwal yang berlaku, gunakan kebijakan AutoScalingScheduledAction pembaruan dan setel IgnoreUnmodifiedGroupSizeProperties true untuk CloudFormation mencegah perubahanMinSize,MaxSize, atau DesiredCapacity properti kecuali Anda telah mengubah nilai ini di templat Anda.

Sintaks

JSON

"UpdatePolicy" : { "AutoScalingScheduledAction" : { "IgnoreUnmodifiedGroupSizeProperties" : Boolean } }

Properti

IgnoreUnmodifiedGroupSizeProperties

Jikatrue, CloudFormation abaikan perbedaan properti ukuran grup antara grup Auto Scaling Anda saat ini dan grup Auto Scaling yang dijelaskan dalam sumber daya template Anda AWS::AutoScaling::AutoScalingGroup selama pembaruan tumpukan. Jika Anda mengubah salah satu nilai properti ukuran grup dalam template Anda, CloudFormation gunakan nilai yang dimodifikasi dan memperbarui grup Auto Scaling Anda.

Default: false

Tipe: Boolean

Wajib: Tidak

UseOnlineReshardingkebijakan

Untuk memodifikasi pecahan grup replikasi dengan menambahkan atau menghapus pecahan, alih-alih mengganti seluruh ReplicationGroup sumber daya AWS:::ElastiCache:, gunakan kebijakan pembaruan. UseOnlineResharding

Jika UseOnlineResharding diatur ketrue, Anda dapat memperbarui NumNodeGroups dan NodeGroupConfiguration properti AWS::ElastiCache::ReplicationGroup sumber daya, dan CloudFormation akan memperbarui properti tersebut tanpa gangguan. Ketika UseOnlineResharding diatur kefalse, atau tidak ditentukan, memperbarui NumNodeGroups dan NodeGroupConfiguration properti menghasilkan CloudFormation penggantian seluruh AWS::ElastiCache::ReplicationGroup sumber daya.

Kebijakan UseOnlineResharding pembaruan tidak memiliki properti.

Hal-hal yang perlu dipertimbangkan saat mengatur UseOnlineResharding kebijakan pembaruan ke true:

  • Kami sangat menyarankan Anda melakukan pembaruan untuk NumNodeGroups dan NodeGroupConfiguration properti sebagai satu-satunya pembaruan dalam operasi pembaruan tumpukan tertentu.

    Memperbarui konfigurasi grup simpul grup replikasi adalah operasi intensif sumber daya. Jika pembaruan tumpukan gagal, CloudFormation tidak akan mengembalikan perubahan pada konfigurasi grup node dari grup replikasi. Namun, CloudFormation akan memutar kembali properti lain yang diubah sebagai bagian dari operasi pembaruan yang gagal.

  • Pembaruan grup simpul apa pun memerlukan identifikasi semua grup simpul.

    Jika Anda menentukan NodeGroupConfiguration properti, Anda juga harus menentukan NodeGroupId untuk setiap konfigurasi grup node CloudFormation untuk memperbarui jumlah node tanpa gangguan.

    Saat membuat grup replikasi, jika Anda tidak menentukan ID untuk setiap grup simpul, ElastiCache secara otomatis menghasilkan ID untuk setiap grup simpul. Untuk memperbarui grup replikasi tanpa gangguan, gunakan ElastiCache console (https://console.aws.amazon.com/elasticache/) atau DescribeReplicationGroupsuntuk mengambil IDs untuk semua grup node dalam grup replikasi. Kemudian tentukan ID untuk setiap grup simpul dalam templat tumpukan Anda sebelum mencoba untuk menambah atau menghapus serpihan.

    catatan

    Sebagai praktik terbaik, ketika Anda membuat grup replikasi dalam templat tumpukan, termasuk ID untuk setiap grup simpul yang Anda tentukan.

    Selain itu, memperbarui jumlah simpul tanpa gangguan mengharuskan Anda telah secara akurat menentukan PrimaryAvailabilityZone, ReplicaAvailabilityZones, dan ReplicaCount properti untuk setiap NodeGroupConfiguration juga. Sekali lagi, Anda dapat menggunakan ElastiCache console (https://console.aws.amazon.com/elasticache/) atau DescribeReplicationGroupsuntuk mengambil nilai aktual untuk setiap grup node dan membandingkannya dengan nilai dalam template tumpukan Anda. Anda dapat memperbarui nilai properti dari grup simpul sebagai pembaruan tumpukan terpisah, atau sebagai bagian dari pembaruan tumpukan yang sama yang mengubah jumlah grup simpul.

    Saat Anda menggunakan kebijakan UseOnlineResharding pembaruan untuk memperbarui jumlah grup node tanpa gangguan, mendistribusikan ruang kunci ElastiCache secara merata di antara jumlah slot yang ditentukan. Ini tidak dapat diperbarui nanti. Oleh karena itu, setelah memperbarui jumlah grup simpul dengan cara ini, Anda harus menghapus nilai yang ditentukan untuk Slots properti masing-masing NodeGroupConfiguration templat tumpukan, karena tidak lagi mencerminkan nilai-nilai yang sebenarnya dalam setiap grup simpul.

  • Hasil penghapusan grup simpul yang sebenarnya mungkin berbeda.

    Ketika Anda menentukan NumNodeGroups nilai yang kurang dari jumlah grup node saat ini, CloudFormation menginstruksikan ElastiCache untuk menghapus sebanyak mungkin grup node yang diperlukan untuk mencapai jumlah node yang ditentukan. Namun, ElastiCache mungkin tidak selalu dapat menghapus jumlah kelompok node yang diinginkan. Jika tidak ElastiCache dapat menghapus jumlah grup node yang diinginkan, CloudFormation buat acara tumpukan yang mengingatkan Anda akan hal ini. Dalam kasus di mana tidak ElastiCache dapat menghapus grup node apa pun, pembaruan CloudFormation sumber daya gagal.

Untuk informasi selengkapnya tentang memodifikasi grup replikasi, lihat ModifyReplicationGroupShardConfigurationdi Referensi Amazon ElastiCache API.

Sintaks

JSON

"UpdatePolicy" : { "UseOnlineResharding" : Boolean }

YAML

UpdatePolicy: UseOnlineResharding: Boolean

EnableVersionUpgradekebijakan

Untuk memutakhirkan domain OpenSearch Layanan ke versi baru OpenSearch atau Elasticsearch daripada mengganti seluruh sumber daya AWS::: :Domain atauOpenSearchService: :ElasticsearchAWS: :Domain, gunakan kebijakan pembaruan. EnableVersionUpgrade

Jika EnableVersionUpgrade disetel ketrue, Anda dapat memperbarui EngineVersion properti AWS::OpenSearchService::Domain sumber daya (atau ElasticsearchVersion properti sumber AWS::Elasticsearch::Domain daya lama), dan CloudFormation akan memperbarui properti itu tanpa gangguan. Kapan EnableVersionUpgrade diatur kefalse, atau tidak ditentukan, memperbarui EngineVersion atau ElasticsearchVersion properti menghasilkan CloudFormation penggantian seluruh AWS::Elasticsearch::Domain sumber dayaAWS::OpenSearchService::Domain/.

Kebijakan EnableVersionUpgrade pembaruan tidak memiliki properti.

Untuk informasi selengkapnya, lihat Memutakhirkan domain OpenSearch Layanan di Panduan Pengembang OpenSearch Layanan Amazon.

Sintaks

JSON

"UpdatePolicy" : { "EnableVersionUpgrade" : Boolean }

YAML

UpdatePolicy: EnableVersionUpgrade: Boolean

CodeDeployLambdaAliasUpdate kebijakan

Untuk melakukan CodeDeploy penerapan saat versi berubah pada AWS::Lambda::Alias sumber daya, gunakan kebijakan CodeDeployLambdaAliasUpdate pembaruan.

Sintaks

JSON

"UpdatePolicy" : { "CodeDeployLambdaAliasUpdate" : { "AfterAllowTrafficHook" : String, "ApplicationName" : String, "BeforeAllowTrafficHook" : String, "DeploymentGroupName" : String } }

Properti

AfterAllowTrafficHook

Nama fungsi Lambda untuk dijalankan setelah perutean lalu lintas selesai.

Wajib: Tidak

Tipe: String

ApplicationName

Nama CodeDeploy aplikasi.

Wajib: Ya

Tipe: String

BeforeAllowTrafficHook

Nama fungsi Lambda untuk dijalankan sebelum perutean lalu lintas dimulai.

Wajib: Tidak

Tipe: String

DeploymentGroupName

Nama grup CodeDeploy penyebaran. Di sinilah kebijakan pergeseran lalu lintas ditetapkan.

Wajib: Ya

Tipe: String

Untuk contoh yang menentukan UpdatePolicy atribut untuk AWS::Lambda::Alias sumber daya, lihat Kebijakan pembaruan alias Lambda.

Contoh

Contoh berikut menunjukkan cara menambahkan kebijakan pembaruan ke grup Auto Scaling dan cara mempertahankan ketersediaan saat memperbarui metadata.

Menambahkan UpdatePolicy ke grup Auto Scaling

Contoh berikut menunjukkan cara menambahkan kebijakan pembaruan. Selama pembaruan, grup Auto Scaling memperbarui instance dalam batch dua dan menyimpan minimal satu instance dalam layanan. Karena WaitOnResourceSignals bendera disetel, grup Auto Scaling menunggu instance baru yang ditambahkan ke grup. Instans baru harus memberi sinyal pada grup Auto Scaling sebelum memperbarui batch instance berikutnya.

JSON

"ASG" : { "Type":"AWS::AutoScaling::AutoScalingGroup", "Properties":{ "VPCZoneIdentifier":[ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ], "LaunchTemplate":{ "LaunchTemplateId":{ "Ref":"logicalName" }, "Version":{ "Fn::GetAtt":[ "logicalName", "LatestVersionNumber" ] } }, "MaxSize":"4", "MinSize":"1" }, "UpdatePolicy":{ "AutoScalingScheduledAction":{ "IgnoreUnmodifiedGroupSizeProperties":"true" }, "AutoScalingRollingUpdate":{ "MinInstancesInService":"1", "MaxBatchSize":"2", "WaitOnResourceSignals":"true", "PauseTime":"PT10M", "SuspendProcesses":[ "HealthCheck", "ReplaceUnhealthy", "AZRebalance", "AlarmNotification", "ScheduledActions", "InstanceRefresh" ] } } }

YAML

ASG: Type: 'AWS::AutoScaling::AutoScalingGroup' Properties: VPCZoneIdentifier: - subnetIdAz1 - subnetIdAz2 - subnetIdAz3 LaunchTemplate: LaunchTemplateId: !Ref logicalName Version: !GetAtt logicalName.LatestVersionNumber MaxSize: '4' MinSize: '1' UpdatePolicy: AutoScalingScheduledAction: IgnoreUnmodifiedGroupSizeProperties: 'true' AutoScalingRollingUpdate: MinInstancesInService: '1' MaxBatchSize: '2' WaitOnResourceSignals: 'true' PauseTime: PT10M SuspendProcesses: - HealthCheck - ReplaceUnhealthy - AZRebalance - AlarmNotification - ScheduledActions - InstanceRefresh

AutoScalingReplacingUpdate kebijakan

Contoh berikut mendeklarasikan kebijakan yang memaksa grup Auto Scaling terkait diganti selama pembaruan. Agar pembaruan berhasil, persentase instans (ditentukan oleh MinSuccessfulPercentParameter parameter) harus menandakan keberhasilan dalam Timeout periode.

JSON

"UpdatePolicy" : { "AutoScalingReplacingUpdate" : { "WillReplace" : true } }, "CreationPolicy" : { "ResourceSignal" : { "Count" : { "Ref" : "ResourceSignalsOnCreate"}, "Timeout" : "PT10M" }, "AutoScalingCreationPolicy" : { "MinSuccessfulInstancesPercent" : { "Ref" : "MinSuccessfulPercentParameter" } } }

YAML

UpdatePolicy: AutoScalingReplacingUpdate: WillReplace: true CreationPolicy: ResourceSignal: Count: !Ref 'ResourceSignalsOnCreate' Timeout: PT10M AutoScalingCreationPolicy: MinSuccessfulInstancesPercent: !Ref 'MinSuccessfulPercentParameter'

Pertahankan ketersediaan saat memperbarui metadata untuk skrip pembantu cfn-init

Ketika Anda menginstal aplikasi perangkat lunak pada instans Anda, Anda dapat menggunakan AWS::CloudFormation::Initkunci metadata dan cfn-initskrip pembantu untuk mem-bootstrap instance di grup Auto Scaling Anda. CloudFormation menginstal paket, menjalankan perintah, dan melakukan tindakan bootstrap lainnya yang dijelaskan dalam metadata.

Ketika Anda hanya memperbarui metadata (misalnya, saat memperbarui paket ke versi lain), Anda dapat menggunakan cfn-hupdaemon pembantu untuk mendeteksi dan menerapkan pembaruan. Namun, cfn-hup daemon berjalan secara independen pada setiap instans. Jika daemon ada untuk berjalan pada waktu yang sama pada semua instans, aplikasi atau layanan Anda mungkin tidak tersedia selama pembaruan. Untuk menjamin ketersediaan, Anda dapat memaksa CloudFormation pembaruan bergulir sehingga memperbarui instans Anda satu batch pada satu waktu.

penting

Memaksa pembaruan bergulir membutuhkan CloudFormation untuk membuat instance baru dan kemudian menghapus yang lama. Setiap informasi yang disimpan pada instans lama hilang.

Untuk memaksa pembaruan bergulir, ubah ID logis sumber daya konfigurasi peluncuran, lalu perbarui tumpukan dan referensi apa pun yang menunjuk ke ID logika asli (seperti grup Auto Scaling terkait). CloudFormation memicu pembaruan bergulir pada grup Auto Scaling, menggantikan semua instance.

Templat asli

"LaunchConfig": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "Comment" : "Install a simple PHP application", "AWS::CloudFormation::Init" : { ... } } }

ID logis yang diperbarui

"LaunchConfigUpdateRubygemsPkg": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "Comment" : "Install a simple PHP application", "AWS::CloudFormation::Init" : { ... } } }

Kebijakan pembaruan alias Lambda

Contoh berikut menentukan UpdatePolicy atribut untuk AWS::Lambda::Alias sumber daya. Semua detail deployment didefinisikan oleh aplikasi dan grup deployment yang diteruskan ke kebijakan.

JSON

"Alias": { "Type": "AWS::Lambda::Alias", "Properties": { "FunctionName": { "Ref": "LambdaFunction" }, "FunctionVersion": { "Fn::GetAtt": [ "FunctionVersionTwo", "Version" ] }, "Name": "MyAlias" }, "UpdatePolicy": { "CodeDeployLambdaAliasUpdate": { "ApplicationName": { "Ref": "CodeDeployApplication" }, "DeploymentGroupName": { "Ref": "CodeDeployDeploymentGroup" }, "BeforeAllowTrafficHook": { "Ref": "PreHookLambdaFunction" }, "AfterAllowTrafficHook": { "Ref": "PreHookLambdaFunction" } } } }

YAML

Alias: Type: 'AWS::Lambda::Alias' Properties: FunctionName: !Ref LambdaFunction FunctionVersion: !GetAtt FunctionVersionTwo.Version Name: MyAlias UpdatePolicy: CodeDeployLambdaAliasUpdate: ApplicationName: !Ref CodeDeployApplication DeploymentGroupName: !Ref CodeDeployDeploymentGroup BeforeAllowTrafficHook: !Ref PreHookLambdaFunction AfterAllowTrafficHook: !Ref PreHookLambdaFunction