Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Perbarui CloudFormation tumpukan
catatan
Tutorial ini dibangun di atas konsep-konsep dari Menyebarkan aplikasi di Amazon EC2 tutorial. Jika Anda belum menyelesaikan tutorial itu, kami sarankan melakukannya terlebih dahulu untuk memahami EC2 bootstrap dengan. CloudFormation
Topik ini menunjukkan perkembangan sederhana pembaruan ke tumpukan yang sedang berjalan. Kita akan mengikuti panduan dengan langkah-langkah berikut:
-
Buat tumpukan awal — Buat tumpukan menggunakan basis Amazon Linux 2 AMI, instal Apache Web Server dan aplikasi PHP sederhana menggunakan skrip CloudFormation pembantu.
-
Perbarui aplikasi — Perbarui salah satu file dalam aplikasi dan gunakan perangkat lunak menggunakan CloudFormation.
-
Tambahkan key pair — Tambahkan EC2 key pair Amazon ke instance, lalu perbarui grup keamanan untuk mengizinkan akses SSH ke instance.
-
Perbarui jenis instans — Ubah jenis instans instans Amazon EC2 yang mendasarinya.
-
Perbarui AMI — Ubah Gambar Mesin Amazon (AMI) untuk EC2 instans Amazon di tumpukan Anda.
catatan
CloudFormation gratis, tetapi Anda akan dikenakan biaya untuk EC2 sumber daya Amazon yang Anda buat. Namun, jika Anda baru mengenal AWS, Anda dapat memanfaatkan Tingkat Gratis
Topik
Langkah 1: Buat tumpukan awal
Kita akan mulai dengan membuat tumpukan yang dapat kita gunakan sepanjang sisa topik ini. Kami telah menyediakan template sederhana yang meluncurkan satu contoh aplikasi web PHP yang dihosting di Apache Web Server dan berjalan di Amazon Linux 2 AMI.
PHPApache Web Server, dan aplikasi PHP sederhana semuanya diinstal oleh skrip CloudFormation pembantu yang diinstal secara default di Amazon Linux 2 AMI. Cuplikan template berikut menunjukkan metadata yang menjelaskan paket dan file yang akan diinstal, dalam hal ini infrastruktur Apache Web Server dan PHP dari Yum repositori untuk Amazon Linux 2 AMI. Cuplikan juga menunjukkan Services bagian, yang memastikan bahwa Apache Web Server sedang berjalan.
WebServerInstance: Type: AWS::EC2::Instance Metadata: AWS::CloudFormation::Init: config: packages: yum: httpd: [] php: [] files: /var/www/html/index.php: content: | <?php echo '<h1>Hello World!</h1>'; ?> mode: '000644' owner: apache group: apache services: systemd: httpd: enabled: true ensureRunning: true
Aplikasi itu sendiri adalah contoh “Hello World” yang sepenuhnya didefinisikan dalam template. Untuk aplikasi dunia nyata, file dapat disimpan di Amazon S3 GitHub,, atau repositori lain dan direferensikan dari template. CloudFormation dapat mengunduh paket (seperti RPMs atau RubyGems), dan referensi file individual dan memperluas .zip dan .tar file untuk membuat artefak aplikasi pada EC2 instance Amazon.
Template mengaktifkan dan mengonfigurasi cfn-hup daemon untuk mendengarkan perubahan konfigurasi yang ditentukan dalam metadata untuk instance Amazon. EC2 Dengan menggunakan cfn-hup daemon, Anda dapat memperbarui perangkat lunak aplikasi, seperti versi Apache atau PHP, atau Anda dapat memperbarui file aplikasi PHP itu sendiri. CloudFormation Cuplikan berikut dari EC2 sumber daya Amazon yang sama di template menunjukkan potongan yang diperlukan untuk mengonfigurasi cfn-hup panggilan cfn-init setiap dua menit untuk memperhatikan dan menerapkan pembaruan ke metadata. Jika tidak, cfn-init hanya berjalan sekali saat start up.
files: /etc/cfn/cfn-hup.conf: content: !Sub | [main] stack=${AWS::StackId} region=${AWS::Region} # The interval used to check for changes to the resource metadata in minutes. Default is 15 interval=2 mode: '000400' owner: root group: root /etc/cfn/hooks.d/cfn-auto-reloader.conf: content: !Sub | [cfn-auto-reloader-hook] triggers=post.update path=Resources.WebServerInstance.Metadata.AWS::CloudFormation::Init action=/opt/aws/bin/cfn-init -s ${AWS::StackId} -r WebServerInstance --region ${AWS::Region} runas=root services: systemd: cfn-hup: enabled: true ensureRunning: true files: - /etc/cfn/cfn-hup.conf - /etc/cfn/hooks.d/cfn-auto-reloader.conf
Untuk menyelesaikan tumpukan, di Properties bagian definisi EC2 instans Amazon, UserData properti berisi cloud-init skrip yang memanggil cfn-init untuk menginstal paket dan file. Untuk informasi selengkapnya, lihat referensi skrip CloudFormation pembantu di Panduan Referensi CloudFormation Template. Template juga membuat grup EC2 keamanan Amazon.
AWSTemplateFormatVersion: 2010-09-09 Parameters: LatestAmiId: Description: The latest Amazon Linux 2 AMI from the Parameter Store Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id> Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2' InstanceType: Description: WebServer EC2 instance type Type: String Default: t3.micro AllowedValues: - t3.nano - t3.micro - t3.small - t3.medium - t3a.nano - t3a.micro - t3a.small - t3a.medium - m5.large - m5.xlarge - m5.2xlarge - m5a.large - m5a.xlarge - m5a.2xlarge - c5.large - c5.xlarge - c5.2xlarge - r5.large - r5.xlarge - r5.2xlarge - r5a.large - r5a.xlarge - r5a.2xlarge ConstraintDescription: must be a valid EC2 instance type. Resources: WebServerInstance: Type: AWS::EC2::Instance Properties: ImageId: !Ref LatestAmiId InstanceType: !Ref InstanceType SecurityGroupIds: - !Ref WebServerSecurityGroup UserData: Fn::Base64: !Sub | #!/bin/bash -xe # Get the latest CloudFormation package yum update -y aws-cfn-bootstrap # Run cfn-init /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource WebServerInstance --region ${AWS::Region} || error_exit 'Failed to run cfn-init' # Start up the cfn-hup daemon to listen for changes to the EC2 instance metadata /opt/aws/bin/cfn-hup || error_exit 'Failed to start cfn-hup' # Signal success or failure /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource WebServerInstance --region ${AWS::Region} Metadata: AWS::CloudFormation::Init: config: packages: yum: httpd: [] php: [] files: /var/www/html/index.php: content: | <?php echo "<h1>Hello World!</h1>"; ?> mode: '000644' owner: apache group: apache /etc/cfn/cfn-hup.conf: content: !Sub | [main] stack=${AWS::StackId} region=${AWS::Region} # The interval used to check for changes to the resource metadata in minutes. Default is 15 interval=2 mode: '000400' owner: root group: root /etc/cfn/hooks.d/cfn-auto-reloader.conf: content: !Sub | [cfn-auto-reloader-hook] triggers=post.update path=Resources.WebServerInstance.Metadata.AWS::CloudFormation::Init action=/opt/aws/bin/cfn-init -s ${AWS::StackId} -r WebServerInstance --region ${AWS::Region} runas=root services: systemd: httpd: enabled: true ensureRunning: true cfn-hup: enabled: true ensureRunning: true files: - /etc/cfn/cfn-hup.conf - /etc/cfn/hooks.d/cfn-auto-reloader.conf CreationPolicy: ResourceSignal: Timeout: PT5M WebServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Enable HTTP access via port 80 SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 Outputs: WebsiteURL: Value: !Sub 'http://${WebServerInstance.PublicDnsName}' Description: URL of the web application
Untuk meluncurkan tumpukan dari template ini
-
Salin template dan simpan secara lokal di sistem Anda sebagai file teks. Catat lokasinya karena Anda harus menggunakan file di langkah berikutnya.
-
Masuk ke Konsol Manajemen AWS dan buka CloudFormation konsol di https://console.aws.amazon.com/cloudformation
. -
Pilih Buat tumpukan, Dengan sumber daya baru (standar).
-
Pilih Pilih template yang sudah ada.
-
Di bawah Tentukan templat, pilih Unggah file templat dan telusuri file yang Anda buat pada langkah pertama, lalu pilih Berikutnya.
-
Pada halaman Tentukan detail tumpukan, masukkan
UpdateTutorialsebagai nama tumpukan. -
Di bawah Parameter, jaga agar semua parameter tetap sama dan pilih Berikutnya dua kali.
-
Pada layar Tinjau dan buat, pilih Kirim.
Setelah status tumpukan AndaCREATE_COMPLETE, tab Output akan menampilkan URL situs web Anda. Jika Anda memilih nilai WebsiteURL output, Anda akan melihat aplikasi PHP baru Anda bekerja.
Langkah 2: Perbarui aplikasi
Karena kita sudah men-deploy tumpukan, mari kita perbarui aplikasi ini. Kami akan membuat perubahan sederhana pada teks yang dicetak oleh aplikasi. Untuk melakukannya, kita akan menambahkan perintah echo ke file index.php seperti yang ditunjukkan dalam snippet templat ini:
files: /var/www/html/index.php: content: | <?php echo "<h1>Hello World!</h1>";echo "<p>This is an updated version of our application.</p>";?> mode: '000644' owner: apache group: apache
Gunakan editor teks untuk secara manual mengedit file templat yang Anda simpan secara lokal.
Sekarang, perbarui tumpukan.
Untuk memperbarui tumpukan dengan template Anda yang diperbarui
-
Di CloudFormation konsol, pilih
UpdateTutorialtumpukan Anda. -
Pilih Perbarui, Buat pembaruan langsung.
-
Pilih Ganti template yang ada.
-
Di bawah Tentukan templat, pilih Unggah file templat dan unggah file templat Anda yang dimodifikasi, lalu pilih Berikutnya.
-
Pada halaman Tentukan detail tumpukan, jaga agar semua parameter tetap sama dan pilih Berikutnya dua kali.
-
Pada halaman Ulasan, tinjau perubahannya. Di bawah Perubahan, Anda akan melihat bahwa CloudFormation akan memperbarui
WebServerInstancesumber daya. -
Pilih Kirim.
Ketika tumpukan Anda dalam UPDATE_COMPLETE status, Anda dapat memilih nilai WebsiteURL output lagi untuk memverifikasi bahwa perubahan pada aplikasi Anda telah berlaku. Secara default, cfn-hup daemon berjalan setiap 2 menit, sehingga mungkin diperlukan waktu hingga 2 menit agar aplikasi berubah setelah tumpukan diperbarui.
Untuk melihat kumpulan sumber daya yang diperbarui, buka CloudFormation konsol. Di tab Peristiwa, llihat peristiwa tumpukan. Dalam kasus khusus ini, metadata untuk EC2 instans Amazon WebServerInstance diperbarui, yang CloudFormation menyebabkan juga mengevaluasi kembali resource (WebServerSecurityGroup) lainnya untuk memastikan bahwa tidak ada perubahan lain. Tidak ada sumber daya tumpukan lainnya yang dimodifikasi. CloudFormation hanya akan memperbarui sumber daya di tumpukan yang terpengaruh oleh perubahan apa pun pada tumpukan. Perubahan tersebut dapat langsung, seperti properti atau perubahan metadata, atau dapat disebabkan oleh dependensi atau aliran data melaluiRef,GetAtt, atau fungsi template intrinsik lainnya. Untuk informasi lebih lanjut, lihat Referensi fungsi intrinsik.
Pembaruan sederhana ini menggambarkan prosesnya. Namun, Anda dapat membuat perubahan yang jauh lebih kompleks pada file dan paket yang disebarkan ke EC2 instance Amazon Anda. Misalnya, Anda mungkin memutuskan bahwa Anda perlu menambahkan MySQL ke instans, bersama dengan dukungan PHP untuk MySQL. Untuk melakukannya, cukup tambahkan paket dan file tambahan bersama dengan layanan tambahan apa pun ke konfigurasi, lalu perbarui tumpukan untuk menerapkan perubahan.
packages: yum: httpd: [] php: []mysql: []php-mysql: []mysql-server: []mysql-libs: []...services: systemd: httpd: enabled: true ensureRunning: true cfn-hup: enabled: true ensureRunning: true files: - /etc/cfn/cfn-hup.conf - /etc/cfn/hooks.d/cfn-auto-reloader.confmysqld:enabled: trueensureRunning: true
Anda dapat memperbarui CloudFormation metadata untuk memperbarui ke versi baru dari paket yang digunakan oleh aplikasi. Dalam contoh sebelumnya, properti versi untuk setiap paket kosong, menunjukkan bahwa cfn-init harus menginstal versi terbaru dari paket.
packages: yum: httpd: [] php: []
Anda dapat secara opsional menentukan string versi untuk paket. Jika Anda mengubah string versi dalam panggilan tumpukan pembaruan berikutnya, versi baru dari paket akan di-deploy. Berikut adalah contoh penggunaan nomor versi untuk RubyGems paket. Setiap paket yang mendukung versioning dapat memiliki versi tertentu.
packages: rubygems: mysql: [] rubygems-update: - "1.6.2" rake: - "0.8.7" rails: - "2.3.11"
Langkah 3: Tambahkan akses SSH dengan key pair
Anda juga dapat memperbarui sumber daya dalam template untuk menambahkan properti yang awalnya tidak ditentukan dalam template. Untuk mengilustrasikannya, kami akan menambahkan EC2 key pair Amazon ke EC2 instance yang ada dan kemudian membuka port 22 di grup EC2 keamanan Amazon sehingga Anda dapat menggunakan Secure Shell (SSH) untuk mengakses instance.
Untuk menambahkan akses SSH ke instans Amazon EC2 yang ada
-
Tambahkan dua parameter tambahan ke template untuk meneruskan nama Amazon EC2 key pair dan lokasi SSH yang ada.
Parameters: KeyName: Description: Name of an existing EC2 KeyPair to enable SSH access to the instance Type: AWS::EC2::KeyPair::KeyName ConstraintDescription: must be the name of an existing EC2 KeyPair. SSHLocation: Description: The IP address that can be used to SSH to the EC2 instances in CIDR format (e.g. 203.0.113.1/32) Type: String MinLength: 9 MaxLength: 18 Default: 0.0.0.0/0 AllowedPattern: '^(\d{1,3}\.){3}\d{1,3}\/\d{1,2}$' ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x. -
Tambahkan
KeyNameproperti ke EC2 instance Amazon.WebServerInstance: Type: AWS::EC2::Instance Properties: ImageId: !Ref LatestAmiId InstanceType: !Ref InstanceType KeyName: !Ref KeyName SecurityGroupIds: - !Ref WebServerSecurityGroup -
Tambahkan port 22 dan lokasi SSH ke aturan masuk untuk grup EC2 keamanan Amazon.
WebServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Enable HTTP access via port 80 and SSH access via port 22 SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: !Ref SSHLocation -
Perbarui tumpukan menggunakan langkah yang sama seperti yang dijelaskan diLangkah 2: Perbarui aplikasi.
Langkah 4: Perbarui jenis instans
Sekarang mari kita tunjukkan cara memperbarui infrastruktur yang mendasarinya dengan mengubah jenis instance.
Tumpukan yang kami buat sejauh ini menggunakan instance Amazon EC2 t3.micro. Misalkan situs web Anda yang baru dibuat mendapatkan lebih banyak lalu lintas daripada yang dapat ditangani oleh instans t3.micro, dan sekarang Anda ingin pindah ke jenis instans Amazon EC2 m5.large. Jika arsitektur tipe instance berubah, instance harus dibuat dengan AMI yang berbeda. Namun, baik t3.micro dan m5.large menggunakan arsitektur CPU yang sama dan menjalankan Amazon Linux 2 (x86_64). AMIs Untuk informasi selengkapnya, lihat Kompatibilitas untuk mengubah jenis instans di Panduan EC2 Pengguna Amazon.
Mari kita gunakan template yang kita modifikasi pada langkah sebelumnya untuk mengubah jenis instance. Karena InstanceType merupakan parameter input ke template, kita tidak perlu memodifikasi template; kita dapat mengubah nilai parameter pada halaman Specify stack details.
Untuk memperbarui tumpukan dengan nilai parameter baru
-
Di CloudFormation konsol, pilih
UpdateTutorialtumpukan Anda. -
Pilih Perbarui, Buat pembaruan langsung.
-
Pilih Gunakan template yang ada, lalu pilih Berikutnya.
-
Pada halaman Tentukan detail tumpukan, ubah nilai kotak InstanceTypeteks dari
t3.micromenjadim5.large. Kemudian, pilih Berikutnya dua kali. -
Pada halaman Ulasan, tinjau perubahannya. Di bawah Perubahan, Anda akan melihat bahwa CloudFormation akan memperbarui
WebServerInstancesumber daya. -
Pilih Kirim.
Anda dapat mengubah jenis instans instans EC2 Amazon yang didukung EBS secara dinamis dengan memulai dan menghentikan instans. CloudFormation mencoba mengoptimalkan perubahan dengan memperbarui jenis instance dan memulai ulang instance, sehingga ID instance tidak berubah. Ketika instans dimulai ulang, tetapi, alamat IP publik dari instans tidak berubah. Untuk memastikan bahwa alamat IP Elastis terikat dengan benar setelah perubahan, juga CloudFormation akan memperbarui alamat IP Elastis. Anda dapat melihat perubahan di CloudFormation konsol pada tab Acara.
Untuk memeriksa jenis instance dari Konsol Manajemen AWS, buka EC2 konsol Amazon, dan temukan instance Anda di sana.
Langkah 5: Perbarui AMI
Sekarang mari kita perbarui tumpukan kita untuk menggunakan Amazon Linux 2023, yang merupakan generasi berikutnya dari Amazon Linux.
Memperbarui AMI adalah perubahan besar yang memerlukan penggantian instance. Kita tidak bisa begitu saja memulai dan menghentikan instance untuk memodifikasi AMI; CloudFormation menganggap ini sebagai perubahan pada properti sumber daya yang tidak dapat diubah. Untuk membuat perubahan pada properti yang tidak dapat diubah, CloudFormation harus meluncurkan sumber daya pengganti, dalam hal ini EC2 instance Amazon baru yang menjalankan AMI baru.
Mari kita lihat bagaimana kita dapat memperbarui template stack kita untuk menggunakan Amazon Linux 2023. Perubahan utama termasuk memperbarui parameter AMI dan mengubah dari yum ke manajer dnf paket.
AWSTemplateFormatVersion: 2010-09-09 Parameters: LatestAmiId: Description: The latest Amazon Linux 2023 AMI from the Parameter Store Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id> Default: '/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64' InstanceType: Description: WebServer EC2 instance type Type: String Default: t3.micro AllowedValues: - t3.nano - t3.micro - t3.small - t3.medium - t3a.nano - t3a.micro - t3a.small - t3a.medium - m5.large - m5.xlarge - m5.2xlarge - m5a.large - m5a.xlarge - m5a.2xlarge - c5.large - c5.xlarge - c5.2xlarge - r5.large - r5.xlarge - r5.2xlarge - r5a.large - r5a.xlarge - r5a.2xlarge ConstraintDescription: must be a valid EC2 instance type. KeyName: Description: Name of an existing EC2 KeyPair to enable SSH access to the instance Type: AWS::EC2::KeyPair::KeyName ConstraintDescription: must be the name of an existing EC2 KeyPair. SSHLocation: Description: The IP address that can be used to SSH to the EC2 instances in CIDR format (e.g. 203.0.113.1/32) Type: String MinLength: 9 MaxLength: 18 Default: 0.0.0.0/0 AllowedPattern: '^(\d{1,3}\.){3}\d{1,3}\/\d{1,2}$' ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x. Resources: WebServerInstance: Type: AWS::EC2::Instance Properties: ImageId: !Ref LatestAmiId InstanceType: !Ref InstanceType KeyName: !Ref KeyName SecurityGroupIds: - !Ref WebServerSecurityGroup UserData: Fn::Base64: !Sub | #!/bin/bash -xe # Get the latest CloudFormation package dnf update -y aws-cfn-bootstrap # Run cfn-init /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource WebServerInstance --region ${AWS::Region} || error_exit 'Failed to run cfn-init' # Start up the cfn-hup daemon to listen for changes to the EC2 instance metadata /opt/aws/bin/cfn-hup || error_exit 'Failed to start cfn-hup' # Signal success or failure /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource WebServerInstance --region ${AWS::Region} Metadata: AWS::CloudFormation::Init: config: packages: dnf: httpd: [] php: [] files: /var/www/html/index.php: content: | <?php echo "<h1>Hello World!</h1>"; echo "<p>This is an updated version of our application.</p>"; echo "<p>Running on Amazon Linux 2023!</p>"; ?> mode: '000644' owner: apache group: apache /etc/cfn/cfn-hup.conf: content: !Sub | [main] stack=${AWS::StackId} region=${AWS::Region} # The interval used to check for changes to the resource metadata in minutes. Default is 15 interval=2 mode: '000400' owner: root group: root /etc/cfn/hooks.d/cfn-auto-reloader.conf: content: !Sub | [cfn-auto-reloader-hook] triggers=post.update path=Resources.WebServerInstance.Metadata.AWS::CloudFormation::Init action=/opt/aws/bin/cfn-init -s ${AWS::StackId} -r WebServerInstance --region ${AWS::Region} runas=root services: systemd: httpd: enabled: true ensureRunning: true cfn-hup: enabled: true ensureRunning: true files: - /etc/cfn/cfn-hup.conf - /etc/cfn/hooks.d/cfn-auto-reloader.conf CreationPolicy: ResourceSignal: Timeout: PT5M WebServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Enable HTTP access via port 80 and SSH access via port 22 SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: !Ref SSHLocation Outputs: WebsiteURL: Value: !Sub 'http://${WebServerInstance.PublicDnsName}' Description: URL of the web application
Perbarui tumpukan menggunakan langkah yang sama seperti yang dijelaskan diLangkah 2: Perbarui aplikasi.
Setelah instance baru berjalan, CloudFormation perbarui sumber daya lain di tumpukan untuk menunjuk ke sumber daya baru. Ketika semua sumber daya baru dibuat, sumber daya lama dihapus, sebuah proses yang dikenal sebagaiUPDATE_CLEANUP. Kali ini, Anda akan melihat bahwa ID instans dan URL aplikasi dari instans di dalam tumpukan telah berubah sebagai hasil dari pembaruan. Peristiwa dalam tabel Peristiwa berisi deskripsi “Pembaruan yang diminta memiliki perubahan ke properti yang tidak dapat diubah dan karenanya menciptakan sumber daya fisik baru” untuk menunjukkan bahwa sumber daya diganti.
Atau: Jika Anda memiliki kode aplikasi yang ditulis ke dalam AMI yang ingin Anda perbarui, Anda dapat menggunakan mekanisme pembaruan tumpukan yang sama untuk memperbarui AMI untuk memuat aplikasi baru Anda.
Untuk memperbarui AMI dengan kode aplikasi khusus
-
Buat AMI baru Anda yang berisi perubahan aplikasi atau sistem operasi Anda. Untuk informasi selengkapnya, lihat Membuat AMI yang didukung Amazon EBS-backed di Panduan Pengguna Amazon. EC2
-
Perbarui template Anda untuk memasukkan ID AMI baru.
-
Perbarui tumpukan menggunakan langkah yang sama seperti yang dijelaskan diLangkah 2: Perbarui aplikasi.
Saat Anda memperbarui tumpukan, CloudFormation mendeteksi bahwa ID AMI telah berubah, dan kemudian memicu pembaruan tumpukan dengan cara yang sama seperti kami memulai yang di atas.
Pertimbangan ketersediaan dan dampak
Properti yang berbeda memiliki dampak yang berbeda pada sumber daya dalam tumpukan. Anda dapat menggunakan CloudFormation untuk memperbarui properti apa pun; tetapi, sebelum Anda membuat perubahan, Anda harus mempertimbangkan pertanyaan-pertanyaan berikut:
-
Bagaimana pembaruan memengaruhi sumber daya itu sendiri? Misalnya, memperbarui ambang batas alarm akan membuat alarm tidak aktif selama pembaruan. Seperti yang telah kita lihat, mengubah jenis instance mengharuskan instance dihentikan dan dimulai ulang. CloudFormation menggunakan tindakan pembaruan atau modifikasi untuk sumber daya yang mendasarinya untuk membuat perubahan pada sumber daya. Untuk memahami dampak pembaruan, Anda harus memeriksa dokumentasi untuk sumber daya tertentu.
-
Apakah perubahan itu dapat berubah atau tidak dapat berubah? Beberapa perubahan pada properti sumber daya, seperti mengubah AMI di EC2 instans Amazon, tidak didukung oleh layanan yang mendasarinya. Dalam kasus perubahan yang bisa berubah, CloudFormation akan menggunakan jenis Update atau Modify APIs untuk sumber daya yang mendasarinya. Untuk perubahan properti yang tidak dapat diubah, CloudFormation akan membuat sumber daya baru dengan properti yang diperbarui dan kemudian menautkannya ke tumpukan sebelum menghapus sumber daya lama. Meskipun CloudFormation mencoba mengurangi waktu henti sumber daya tumpukan, mengganti sumber daya adalah proses multistep, dan itu akan memakan waktu. Selama konfigurasi ulang tumpukan, aplikasi Anda tidak akan beroperasi penuh. Misalnya, aplikasi mungkin tidak dapat melayani permintaan atau mengakses database.
Sumber daya terkait
Untuk informasi selengkapnya tentang penggunaan CloudFormation untuk memulai aplikasi dan mengintegrasikan dengan layanan konfigurasi dan penyebaran lainnya seperti Puppet danOpscode Chef, lihat whitepaper berikut: