Migrasikan AWS CloudFormation tumpukan untuk meluncurkan templat - Amazon EC2 Auto Scaling

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

Migrasikan AWS CloudFormation tumpukan untuk meluncurkan templat

Anda dapat memigrasikan templat AWS CloudFormation tumpukan yang ada dari konfigurasi peluncuran ke templat peluncuran. Untuk melakukan ini, tambahkan template peluncuran langsung ke template tumpukan yang ada dan kemudian kaitkan template peluncuran dengan grup Auto Scaling di template tumpukan. Kemudian, gunakan template yang dimodifikasi untuk memperbarui tumpukan Anda.

Saat bermigrasi ke templat peluncuran, topik ini menghemat waktu Anda dengan memberikan instruksi untuk menulis ulang konfigurasi peluncuran di templat CloudFormation tumpukan Anda sebagai templat peluncuran. Untuk informasi selengkapnya tentang memigrasi konfigurasi peluncuran untuk meluncurkan templat, lihat. Migrasi grup Auto Scaling Anda untuk meluncurkan template

Temukan grup Auto Scaling yang menggunakan konfigurasi peluncuran

Untuk menemukan grup Auto Scaling yang menggunakan konfigurasi peluncuran
  • Gunakan perintah describe-auto-scaling-groups berikut untuk mencantumkan nama grup Auto Scaling yang menggunakan konfigurasi peluncuran di Wilayah yang ditentukan. Sertakan --filters opsi untuk mempersempit hasil ke grup yang terkait dengan CloudFormation tumpukan (dengan memfilter dengan kunci aws:cloudformation:stack-name tag).

    aws autoscaling describe-auto-scaling-groups --region REGION \ --filters Name=tag-key,Values=aws:cloudformation:stack-name \ --query 'AutoScalingGroups[?LaunchConfigurationName!=`null`].AutoScalingGroupName'

    Berikut ini adalah contoh output.

    [ "{stack-name}-group-1", "{stack-name}-group-2", "{stack-name}-group-3" ]

    Anda dapat menemukan AWS CLI perintah tambahan yang berguna untuk menemukan grup Auto Scaling untuk memigrasi dan memfilter output. Migrasi grup Auto Scaling Anda untuk meluncurkan template

penting

Jika sumber daya tumpukan Anda memiliki AWSEB namanya, ini berarti mereka dibuat melalui AWS Elastic Beanstalk. Dalam hal ini, Anda harus memperbarui lingkungan Beanstalk untuk mengarahkan Elastic Beanstalk untuk menghapus konfigurasi peluncuran dan menggantinya dengan template peluncuran.

Perbarui tumpukan untuk menggunakan template peluncuran

Ikuti langkah-langkah di bagian ini untuk melakukan hal berikut:

  • Tulis ulang konfigurasi peluncuran sebagai template peluncuran menggunakan properti template peluncuran yang setara.

  • Kaitkan template peluncuran baru dengan grup Auto Scaling.

  • Terapkan pembaruan ini.

Untuk memodifikasi template tumpukan dan memperbarui tumpukan
  1. Ikuti prosedur umum yang sama untuk memodifikasi template tumpukan yang dijelaskan dalam Memodifikasi template tumpukan di AWS CloudFormation Panduan Pengguna.

  2. Tulis ulang konfigurasi peluncuran sebagai template peluncuran. Lihat contoh berikut ini:

    Contoh: Konfigurasi peluncuran sederhana

    --- Resources: myLaunchConfig: Type: AWS::AutoScaling::LaunchConfiguration Properties: ImageId: ami-02354e95b3example InstanceType: t3.micro SecurityGroups: - !Ref EC2SecurityGroup KeyName: MyKeyPair BlockDeviceMappings: - DeviceName: /dev/xvda Ebs: VolumeSize: 150 DeleteOnTermination: true UserData: Fn::Base64: !Sub | #!/bin/bash -xe yum install -y aws-cfn-bootstrap /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource myASG --region ${AWS::Region}

    Contoh: Template peluncuran setara

    --- Resources: myLaunchTemplate: Type: AWS::EC2::LaunchTemplate Properties: LaunchTemplateName: !Sub ${AWS::StackName}-launch-template LaunchTemplateData: ImageId: ami-02354e95b3example InstanceType: t3.micro SecurityGroupIds: - Ref! EC2SecurityGroup KeyName: MyKeyPair BlockDeviceMappings: - DeviceName: /dev/xvda Ebs: VolumeSize: 150 DeleteOnTermination: true UserData: Fn::Base64: !Sub | #!/bin/bash -x yum install -y aws-cfn-bootstrap /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource myASG --region ${AWS::Region}

    Untuk informasi referensi untuk semua properti yang didukung Amazon EC2, lihat AWS::EC2::LaunchTemplatedi AWS CloudFormation Panduan Pengguna.

    Perhatikan bagaimana template peluncuran menyertakan LaunchTemplateName properti dengan nilai!Sub ${AWS::StackName}-launch-template. Ini diperlukan jika Anda ingin nama template peluncuran menyertakan nama tumpukan.

  3. Jika IamInstanceProfile properti hadir dalam konfigurasi peluncuran Anda, Anda harus mengubahnya menjadi struktur dan menentukan nama atau ARN dari profil instance. Sebagai contoh, lihat AWS::EC2::LaunchTemplate.

  4. JikaAssociatePublicIpAddress,InstanceMonitoring, atau PlacementTenancy properti ada dalam konfigurasi peluncuran Anda, Anda harus mengonversinya menjadi struktur. Sebagai contoh, lihat AWS::EC2::LaunchTemplate.

    Pengecualian adalah ketika nilai MapPublicIpOnLaunch properti pada subnet yang Anda gunakan untuk grup Auto Scaling cocok dengan nilai properti dalam AssociatePublicIpAddress konfigurasi peluncuran Anda. Dalam hal ini, Anda dapat mengabaikan AssociatePublicIpAddress properti. AssociatePublicIpAddressProperti hanya digunakan untuk mengganti MapPublicIpOnLaunch properti untuk mengubah apakah instance menerima alamat IPv4 publik saat peluncuran.

  5. Anda dapat menyalin grup keamanan dari SecurityGroups properti ke salah satu dari dua tempat di template peluncuran Anda. Biasanya, Anda menyalin grup keamanan ke SecurityGroupIds properti. Namun, jika Anda membuat NetworkInterfaces struktur dalam template peluncuran Anda untuk menentukan AssociatePublicIpAddress properti, maka Anda harus menyalin grup keamanan ke Groups properti antarmuka jaringan sebagai gantinya.

  6. Jika ada BlockDeviceMapping struktur yang ada dalam konfigurasi peluncuran Anda dengan NoDevice set totrue, maka Anda harus menentukan string kosong untuk NoDevice di template peluncuran agar Amazon EC2 menghilangkan perangkat.

  7. Jika SpotPrice properti hadir dalam konfigurasi peluncuran Anda, kami sarankan Anda menghilangkannya dari template peluncuran Anda. Instans Spot Anda akan diluncurkan pada harga Spot saat ini. Harga ini tidak akan pernah melebihi harga On-Demand.

    Untuk meminta Instans Spot, Anda memiliki dua opsi yang saling eksklusif:

    • Yang pertama adalah menggunakan InstanceMarketOptions struktur dalam template peluncuran Anda (tidak disarankan). Untuk informasi selengkapnya, lihat AWS::EC2::LaunchTemplate InstanceMarketOptionsdi Panduan AWS CloudFormation Pengguna.

    • Yang lainnya adalah menambahkan MixedInstancesPolicy struktur ke grup Auto Scaling Anda. Melakukannya memberi Anda lebih banyak opsi untuk bagaimana Anda membuat permintaan. Permintaan Instans Spot di template peluncuran Anda tidak mendukung lebih dari satu pilihan jenis instans per grup Auto Scaling. Namun, kebijakan instance campuran mendukung lebih dari satu pemilihan tipe instans per grup Auto Scaling. Permintaan Instans Spot mendapat manfaat dari memiliki lebih dari satu jenis instans untuk dipilih. Untuk informasi selengkapnya, lihat AWS::AutoScaling::AutoScaling MixedInstancesPolicyAWS::AutoScaling::AutoScalingGrup di Panduan AWS CloudFormation Pengguna.

  8. Hapus LaunchConfigurationName properti dari sumber daya AWS::AutoScaling::AutoScalingAWS::AutoScaling::AutoScalingGrup . Tambahkan template peluncuran di tempatnya.

    Dalam contoh berikut, fungsi intrinsik Ref mendapatkan ID AWS::EC2::LaunchTemplatesumber daya dengan ID logis. myLaunchTemplate GetAttFungsi mendapatkan nomor versi terbaru (misalnya,1) dari template peluncuran untuk Version properti.

    Contoh: Tanpa kebijakan instance campuran

    --- Resources: myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: LaunchTemplate: LaunchTemplateId: !Ref myLaunchTemplate Version: !GetAtt myLaunchTemplate.LatestVersionNumber ...

    Contoh: Dengan kebijakan instance campuran

    --- Resources: myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateId: !Ref myLaunchTemplate Version: !GetAtt myLaunchTemplate.LatestVersionNumber ...

    Untuk informasi referensi untuk semua properti yang didukung Auto Scaling Amazon EC2, AWS::AutoScaling::AutoScalinglihat AWS::AutoScaling::AutoScaling di AWS CloudFormation Panduan Pengguna.

  9. Saat Anda siap untuk menerapkan pembaruan ini, ikuti CloudFormation prosedur untuk memperbarui tumpukan dengan templat tumpukan yang dimodifikasi. Untuk informasi selengkapnya, lihat Memodifikasi template tumpukan di Panduan AWS CloudFormation Pengguna.

Memahami perilaku pembaruan sumber daya tumpukan

CloudFormation memperbarui sumber daya tumpukan dengan membandingkan perubahan antara template yang diperbarui yang Anda berikan, dan konfigurasi sumber daya yang Anda jelaskan di versi template tumpukan Anda sebelumnya. Konfigurasi sumber daya yang tidak berubah tetap tidak terpengaruh selama proses pembaruan.

CloudFormation mendukung UpdatePolicyatribut untuk grup Auto Scaling. Selama pembaruan, jika UpdatePolicy diatur keAutoScalingRollingUpdate, CloudFormation menggantikan InService instance setelah Anda melakukan langkah-langkah dalam prosedur ini. Jika UpdatePolicy diatur keAutoScalingReplacingUpdate, CloudFormation ganti grup Auto Scaling dan kolam hangatnya (jika ada).

Jika Anda tidak menentukan UpdatePolicy atribut untuk grup Auto Scaling, template peluncuran akan diperiksa kebenarannya, tetapi CloudFormation tidak menerapkan perubahan apa pun di seluruh instance dalam grup Auto Scaling. Semua instance baru akan menggunakan template peluncuran Anda, tetapi instance yang ada terus berjalan dengan konfigurasi peluncuran yang awalnya diluncurkan (meskipun konfigurasi peluncuran tidak ada). Pengecualiannya adalah ketika Anda mengubah opsi pembelian, misalnya, dengan menambahkan kebijakan instance campuran. Dalam hal ini, grup Auto Scaling Anda secara bertahap mengganti instans yang ada dengan instans baru agar sesuai dengan opsi pembelian baru.

Lacak migrasi

Untuk melacak migrasi
  1. Di Konsol AWS CloudFormation, pilih tumpukan yang diperbarui dan kemudian pilih tab Kejadian untuk melihat kejadian tumpukan.

  2. Untuk memperbarui daftar acara dengan acara terbaru, pilih tombol segarkan di CloudFormation konsol.

  3. Saat tumpukan Anda diperbarui, Anda akan melihat beberapa peristiwa untuk setiap pembaruan sumber daya. Jika Anda melihat pengecualian di kolom Alasan status yang menunjukkan masalah saat mencoba membuat templat peluncuran, lihat Memecahkan Masalah Auto Scaling Amazon EC2: Luncurkan templat penyebab potensial.

  4. (Opsional) Bergantung pada penggunaan UpdatePolicy atribut, Anda dapat memantau kemajuan grup Auto Scaling Anda dari halaman grup Auto Scaling di konsol Amazon EC2. Pilih grup Auto Scaling. Pada tab Aktivitas, di bawah Riwayat aktivitas, kolom Status menunjukkan apakah grup Auto Scaling Anda telah berhasil meluncurkan atau menghentikan instance, atau apakah aktivitas penskalaan masih berlangsung.

  5. Saat pembaruan tumpukan selesai, CloudFormation mengeluarkan acara UPDATE_COMPLETE tumpukan. Untuk informasi selengkapnya, lihat Memantau kemajuan pembaruan tumpukan di Panduan AWS CloudFormation Pengguna.

  6. Setelah pembaruan tumpukan selesai, buka halaman Launch templates dan Luncurkan halaman konfigurasi konsol Amazon EC2. Anda akan melihat template peluncuran baru dibuat, dan konfigurasi peluncuran dihapus.

Luncurkan referensi pemetaan konfigurasi

Untuk tujuan referensi, tabel berikut mencantumkan semua properti tingkat atas dalam AWS::AutoScaling::LaunchConfigurationsumber daya dengan properti yang sesuai di AWS::EC2::LaunchTemplatesumber daya.

Luncurkan properti sumber konfigurasi Luncurkan properti target template
AssociatePublicIpAddress NetworkInterfaces.AssociatePublicIpAddress
BlockDeviceMappings BlockDeviceMappings
ClassicLinkVPCId Tidak tersedia¹
ClassicLinkVPCSecurityGroups Tidak tersedia¹
EbsOptimized EbsOptimized
IamInstanceProfile Entah IamInstanceProfile.Arn atauIamInstanceProfile.Name, tapi tidak keduanya
ImageId ImageId
InstanceId InstanceId
InstanceMonitoring Monitoring.Enabled
InstanceType InstanceType
KernelId KernelId
KeyName KeyName
LaunchConfigurationName LaunchTemplateName
MetadataOptions MetadataOptions
PlacementTenancy Placement.Tenancy
RamDiskId RamDiskId
SecurityGroups Entah SecurityGroupIds atauNetworkInterfaces.Groups, tapi tidak keduanya
SpotPrice InstanceMarketOptions.SpotOptions.MaxPrice
UserData UserData

¹ ClassicLinkVPCSecurityGroups Properti ClassicLinkVPCId dan tidak tersedia untuk digunakan dalam template peluncuran karena EC2-Classic tidak lagi tersedia.