View a markdown version of this page

Migrasi 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.

Migrasi AWS CloudFormation tumpukan untuk meluncurkan templat

Anda dapat memigrasikan template 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 Penskalaan Otomatis di template tumpukan. Kemudian, gunakan template yang dimodifikasi untuk memperbarui tumpukan Anda.

Saat bermigrasi ke template peluncuran, topik ini menghemat waktu Anda dengan memberikan instruksi untuk menulis ulang konfigurasi peluncuran di template CloudFormation tumpukan Anda sebagai templat peluncuran. Untuk informasi selengkapnya tentang memigrasikan konfigurasi peluncuran untuk meluncurkan template, lihatMigrasikan grup Penskalaan Otomatis Anda untuk meluncurkan template.

Menemukan 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 Penskalaan Otomatis 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 Penskalaan Otomatis untuk bermigrasi dan memfilter keluaranMigrasikan grup Penskalaan Otomatis Anda untuk meluncurkan template.

penting

Jika sumber daya tumpukan Anda memiliki AWSEB namanya, ini berarti sumber daya tersebut 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.

Memperbarui 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 Panduan AWS CloudFormation 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:: LaunchTemplate AWS CloudFormation

    Perhatikan bagaimana template peluncuran LaunchTemplateName menyertakan 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 profil instance. Sebagai contoh, lihat AWS: :EC2:: LaunchTemplate

  4. Jika propertiAssociatePublicIpAddress,InstanceMonitoring, atau PlacementTenancy hadir 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 Penskalaan Otomatis cocok dengan nilai AssociatePublicIpAddress properti dalam konfigurasi peluncuran Anda. Dalam hal ini, Anda dapat mengabaikan AssociatePublicIpAddress properti. Pro AssociatePublicIpAddress perti ini hanya digunakan untuk mengganti MapPublicIpOnLaunch properti untuk mengubah apakah instance menerima alamat IPv4 publik saat diluncurkan.

  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 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 NoDevice di template peluncuran Anda agar Amazon EC2 menghilangkan perangkat.

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

    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 InstanceMarketOptions di Panduan Pengguna. AWS CloudFormation

    • 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 Penskalaan Otomatis. Namun, kebijakan instance campuran mendukung lebih dari satu pemilihan jenis instans per grup Penskalaan Otomatis. Permintaan Instance Spot mendapat manfaat dari memiliki lebih dari satu jenis instans untuk dipilih. Untuk informasi selengkapnya, lihat AWS::AutoScaling AutoScalingGroup MixedInstancesPolicy di Panduan AWS CloudFormation Pengguna.

  8. Hapus LaunchConfigurationName properti dari AutoScalingGroup https://docs.aws.amazon.com/en_us/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.htmlAWS::AutoScaling:::. Tambahkan template peluncuran di tempatnya.

    Dalam contoh berikut, fungsi intrinsik Ref mendapatkan ID sumber LaunchTemplate https://docs.aws.amazon.com/en_us/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html AWS: :EC2:: 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 Amazon EC2 Auto Scaling, lihat AWS::AutoScaling:: AutoScalingGroup di Panduan AWS CloudFormation Pengguna.

  9. Saat Anda siap untuk menerapkan pembaruan ini, ikuti CloudFormation prosedur untuk memperbarui tumpukan dengan template 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 templat tumpukan sebelumnya. Konfigurasi sumber daya yang tidak berubah tetap tidak terpengaruh selama proses pembaruan.

CloudFormation mendukung UpdatePolicy atribut untuk grup Auto Scaling. Untuk mengganti instance yang ada setelah Anda menyelesaikan prosedur ini, tambahkan UpdatePolicy atribut ke tumpukan Anda. Setel kebijakan pembaruan keAutoScalingInstanceRefresh. Untuk informasi selengkapnya, lihat AutoScalingInstanceRefresh kebijakan di Panduan AWS CloudFormation Pengguna.

Jika Anda tidak menentukan UpdatePolicy atribut untuk grup Penskalaan Otomatis, template peluncuran diperiksa kebenarannya, tetapi CloudFormation tidak menerapkan perubahan apa pun di instans dalam grup Penskalaan Otomatis. Semua instans baru akan menggunakan template peluncuran Anda, tetapi instans 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 Penskalaan Otomatis Anda secara bertahap menggantikan instans yang ada dengan instans baru agar sesuai dengan opsi pembelian baru.

Jika Anda harus mengembalikan perubahan untuk beralih dari konfigurasi peluncuran ke peluncuran templat, pastikan untuk menguji operasi rollback.

Lacak migrasi

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

  2. Untuk memperbarui daftar acara dengan acara terbaru, pilih tombol refresh 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 template peluncuran, lihat Memecahkan masalah Amazon EC2 Auto Scaling: Luncurkan templat penyebab potensial.

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

  5. Ketika pembaruan tumpukan selesai, CloudFormation mengeluarkan event UPDATE_COMPLETE stack. Untuk informasi selengkapnya, lihat Memantau kemajuan pembaruan tumpukan di Panduan AWS CloudFormation Pengguna.

  6. Setelah pembaruan tumpukan selesai, buka halaman Launch template 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 di sumber daya AWS::AutoScaling:: LaunchConfiguration sumber daya AWS: :EC2:: LaunchTemplate

Luncurkan properti sumber konfigurasi Luncurkan properti target template
AssociatePublicIpAddress NetworkInterfaces.AssociatePublicIpAddress
BlockDeviceMappings BlockDeviceMappings
ClassicLinkVPCId Tidak tersedia¹
ClassicLinkVPCSecurityGroups Tidak tersedia¹
EbsOptimized EbsOptimized
IamInstanceProfile En IamInstanceProfile.Arn tah 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 En SecurityGroupIds tah atauNetworkInterfaces.Groups, tapi tidak keduanya
SpotPrice InstanceMarketOptions.SpotOptions.MaxPrice
UserData UserData

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