Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyebarkan aplikasi di Amazon EC2
Anda dapat menggunakan CloudFormation untuk menginstal, mengonfigurasi, dan memulai aplikasi secara otomatis di EC2 instans Amazon. Melakukan hal ini memungkinkan Anda untuk dengan mudah menduplikasi penyebaran dan memperbarui instalasi yang ada tanpa terhubung langsung ke instans, yang dapat menghemat banyak waktu dan usaha.
CloudFormation termasuk satu set skrip pembantu (cfn-init
,, cfn-signal
cfn-get-metadata
, dancfn-hup
) yang didasarkan pada. cloud-init
Anda memanggil skrip pembantu ini dari CloudFormation templat Anda untuk menginstal, mengonfigurasi, dan memperbarui aplikasi di EC2 instans Amazon yang ada di templat yang sama. Untuk informasi selengkapnya, lihat referensi skrip CloudFormation pembantu di Panduan Referensi AWS CloudFormation Template.
Dalam tutorial memulai, Anda membuat server web sederhana menggunakan UserData
skrip bash dasar. Meskipun ini berfungsi untuk halaman “Hello World” sederhana, aplikasi nyata seringkali membutuhkan konfigurasi yang lebih canggih, termasuk:
-
Beberapa paket perangkat lunak diinstal dalam urutan yang benar.
-
File konfigurasi kompleks yang dibuat dengan konten tertentu.
-
Layanan dimulai dan dikonfigurasi untuk berjalan secara otomatis.
-
Penanganan kesalahan dan validasi proses penyiapan.
CloudFormationskrip pembantu menyediakan cara yang lebih kuat dan dapat dipelihara untuk mengonfigurasi EC2 instance dibandingkan dengan skrip bash dasar di. UserData
Skrip cfn-init
helper membaca data konfigurasi dari metadata template Anda dan menerapkannya secara sistematis ke instance Anda.
Dalam tutorial ini, Anda akan belajar cara menggunakan skrip cfn-init
helper dan memantau proses bootstrap.
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
Prasyarat
-
Anda harus telah menyelesaikan Membuat tumpukan pertama Anda tutorial atau memiliki pengalaman yang setara dengan CloudFormation dasar-dasar.
-
Anda harus memiliki akses ke pengguna atau peran IAM yang memiliki izin untuk menggunakan Amazon EC2 dan CloudFormation, atau akses pengguna administratif. Akun AWS
-
Anda harus memiliki Virtual Private Cloud (VPC) yang memiliki akses ke internet. Template tutorial ini membutuhkan VPC default, yang datang secara otomatis dengan yang lebih baru. Akun AWS Jika Anda tidak memiliki VPC default, atau jika telah dihapus, lihat bagian pemecahan masalah di Membuat tumpukan pertama Anda tutorial untuk solusi alternatif.
Memahami konsep bootstrap
Mari kita pahami konsep kunci yang membuat bootstrapping berfungsi sebelum membuat template.
cfn-init
Skrip pembantu
CloudFormation menyediakan skrip pembantu Python yang dapat Anda gunakan untuk menginstal perangkat lunak dan memulai layanan pada instance Amazon. EC2 cfn-init
Skrip membaca metadata sumber daya dari template Anda dan menerapkan konfigurasi ke instance Anda.
Prosesnya bekerja sebagai berikut:
-
Anda menentukan konfigurasi di
Metadata
bagian sumber EC2 daya Anda. -
Anda menelepon
cfn-init
dariUserData
naskah. -
cfn-init
membaca metadata dan menerapkan konfigurasi. -
Instans Anda dikonfigurasi sesuai dengan spesifikasi Anda.
Struktur metadata
Konfigurasi didefinisikan dalam struktur tertentu dalam EC2 instance Anda.
Resources: EC2Instance: Type: AWS::EC2::Instance Metadata: # Metadata section for the resource AWS::CloudFormation::Init: # Required key that cfn-init looks for config: # Configuration name (you can have multiple) packages: # Install packages files: # Create files commands: # Run commands services: # Start/stop services
cfn-init
Skrip memproses bagian-bagian ini dalam urutan tertentu: paket, grup, pengguna, sumber, file, perintah, dan kemudian layanan.
Mulailah dengan contoh bootstrap sederhana
Mari kita mulai dengan contoh bootstrap minimal yang hanya menginstal dan memulai Apache.
Resources: EC2Instance: Type: AWS::EC2::Instance Metadata: AWS::CloudFormation::Init: config: packages: # Install Apache web server yum: httpd: [] services: # Start Apache and enable it to start on boot sysvinit: httpd: enabled: true ensureRunning: true Properties: ImageId: !Ref LatestAmiId InstanceType: !Ref InstanceType UserData: !Base64 # Script that runs when instance starts Fn::Sub: | #!/bin/bash yum install -y aws-cfn-bootstrap /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource EC2Instance --region ${AWS::Region}
Contoh sederhana ini menunjukkan konsep inti:
-
packages
bagian menginstalhttpd
paket menggunakanyum. Ini berfungsi di Amazon Linux dan distribusi Linux lainnya yang digunakanyum. -
services
bagian memastikanhttpd
mulai dan berjalan secara otomatis. -
UserData
menginstal alat bootstrap terbaru dan panggilancfn-init
.
Menambahkan file dan perintah
Sekarang, mari kita tingkatkan contoh kita dengan menambahkan halaman web khusus dan file log di /var/log
direktori pada EC2 instance.
Membuat file
files
Bagian ini memungkinkan Anda untuk membuat file pada instance dengan konten tertentu. Pipa vertikal (|
) memungkinkan Anda untuk melewati blok teks literal (kode HTML) sebagai konten file (/var/www/html/index.html
).
files: /var/www/html/index.html: content: | <body> <h1>Congratulations, you have successfully launched the AWS CloudFormation sample.</h1> </body>
Menjalankan perintah
commands
Bagian ini memungkinkan Anda menjalankan perintah shell selama proses bootstrap. Perintah ini membuat file log di /var/log/welcome.txt
pada EC2 instance. Untuk melihatnya, Anda memerlukan Amazon EC2 key pair untuk digunakan untuk akses SSH dan rentang alamat IP yang dapat digunakan untuk SSH ke instance (tidak dibahas di sini).
commands: createWelcomeLog: command: "echo 'cfn-init ran successfully!' > /var/log/welcome.txt"
Menambahkan keamanan jaringan
Karena kita sedang menyiapkan server web, kita perlu mengizinkan lalu lintas web (HTTP) untuk mencapai EC2 instance kita. Untuk melakukan ini, kami akan membuat grup keamanan yang memungkinkan lalu lintas masuk pada port 80 dari alamat IP Anda. EC2 instance juga perlu mengirim lalu lintas ke internet, misalnya, untuk menginstal pembaruan paket. Secara default, grup keamanan mengizinkan semua lalu lintas keluar. Kami kemudian akan mengaitkan grup keamanan ini dengan EC2 instance kami menggunakan SecurityGroupIds
properti.
WebServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Allow HTTP access from my IP address SecurityGroupIngress: - IpProtocol: tcp Description: HTTP FromPort: 80 ToPort: 80 CidrIp: !Ref MyIP
Template bootstrap lengkap
Sekarang, mari kita satukan semua bagian. Berikut adalah template lengkap yang menggabungkan semua konsep yang telah kita bahas.
AWSTemplateFormatVersion: 2010-09-09 Description: Bootstrap an EC2 instance with Apache web server using cfn-init 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: EC2 instance type Type: String Default: t2.micro AllowedValues: - t3.micro - t2.micro ConstraintDescription: must be a valid EC2 instance type. MyIP: Description: Your IP address 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: WebServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Allow HTTP access from my IP address SecurityGroupIngress: - IpProtocol: tcp Description: HTTP FromPort: 80 ToPort: 80 CidrIp: !Ref MyIP WebServer: Type: AWS::EC2::Instance Metadata: AWS::CloudFormation::Init: config: packages: yum: httpd: [] files: /var/www/html/index.html: content: | <body> <h1>Congratulations, you have successfully launched the AWS CloudFormation sample.</h1> </body> commands: createWelcomeLog: command: "echo 'cfn-init ran successfully!' > /var/log/welcome.txt" services: sysvinit: httpd: enabled: true ensureRunning: true Properties: ImageId: !Ref LatestAmiId InstanceType: !Ref InstanceType SecurityGroupIds: - !Ref WebServerSecurityGroup UserData: !Base64 Fn::Sub: | #!/bin/bash yum install -y aws-cfn-bootstrap /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource WebServer --region ${AWS::Region} Tags: - Key: Name Value: Bootstrap Tutorial Web Server Outputs: WebsiteURL: Value: !Sub 'http://${WebServer.PublicDnsName}' Description: EC2 instance public DNS name
Buat tumpukan menggunakan konsol
Prosedur berikut melibatkan mengunggah template tumpukan sampel dari file. Buka editor teks di mesin lokal Anda dan tambahkan template. Simpan file dengan namasamplelinux2stack.template
.
Untuk meluncurkan template tumpukan
-
Masuk ke AWS Management Console dan buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation
. -
Pilih Buat tumpukan, Dengan sumber daya baru (standar).
-
Di bawah Tentukan templat, pilih Unggah file templat, Pilih file untuk mengunggah
samplelinux2stack.template
file. -
Pilih Berikutnya.
-
Pada halaman Tentukan detail tumpukan, ketik
BootstrapTutorialStack
sebagai nama tumpukan. -
Di bawah Parameter, lakukan hal berikut.
-
LatestAmiId: Tinggalkan nilai default.
-
InstanceType: Pilih salah satu t2.micro atau t3.micro untuk jenis instance. EC2
-
MyIP: Masukkan alamat IP publik Anda dengan akhiran.
/32
-
-
Pilih Berikutnya dua kali, lalu Kirim untuk membuat tumpukan.
Pantau proses bootstrap
Proses bootstrap membutuhkan waktu lebih lama daripada EC2 peluncuran sederhana karena perangkat lunak tambahan sedang diinstal dan dikonfigurasi.
Untuk memantau kemajuan bootstrap
-
Di CloudFormation konsol, pilih tumpukan Anda dan buka tab Acara.
-
Perhatikan
WebServer CREATE_IN_PROGRESS
acara tersebut. Proses bootstrap dimulai setelah instance diluncurkan. -
Proses bootstrap biasanya memakan waktu beberapa menit. Anda akan melihat
WebServer CREATE_COMPLETE
ketika itu selesai.
Jika Anda ingin melihat apa yang terjadi selama proses bootstrap, Anda dapat memeriksa log instance.
Untuk melihat log bootstrap (opsional)
-
Buka EC2 konsol
dan temukan instance Anda. -
Pilih instance, lalu pilih Actions, Monitor dan troubleshoot, Dapatkan log sistem untuk melihat kemajuan bootstrap.
-
Jika Anda tidak segera melihat log, tunggu dan segarkan halaman.
Uji server web bootstrapped
Saat tumpukan Anda ditampilkanCREATE_COMPLETE
, uji server web Anda.
Untuk menguji server web
-
Di CloudFormation konsol, buka tab Output untuk tumpukan Anda.
-
Klik pada nilai WebsiteUrl untuk membuka server web Anda di tab baru.
-
Anda akan melihat halaman web kustom Anda dengan pesan
Congratulations, you have successfully launched the AWS CloudFormation sample
.
catatan
Jika halaman tidak segera dimuat, tunggu sebentar dan coba lagi. Proses bootstrap mungkin masih selesai bahkan setelah tumpukan ditampilkanCREATE_COMPLETE
.
Memecahkan masalah bootstrap
Jika proses bootstrap Anda gagal atau server web Anda tidak berfungsi, berikut adalah masalah dan solusi umum.
Masalah umum
-
Pembuatan tumpukan gagal - Periksa tab Acara untuk pesan kesalahan tertentu.
-
Server web tidak dapat diakses — Verifikasi alamat IP Anda benar dalam
MyIP
parameter. Ingatlah untuk menyertakan/32
di akhir. -
Proses Bootstrap gagal - Instance mungkin diluncurkan tetapi
cfn-init
gagal. Periksa log sistem seperti yang dijelaskan di bagian pemantauan.
Pembersihan sumber daya
Untuk menghindari tagihan yang sedang berlangsung, Anda dapat membersihkan dengan menghapus tumpukan dan sumber dayanya.
Untuk menghapus tumpukan dan sumber dayanya
-
Buka konsol CloudFormation
. -
Pada halaman Stacks, pilih opsi di sebelah nama tumpukan yang Anda buat (
BootstrapTutorialStack
) dan kemudian pilih Hapus. -
Saat diminta konfirmasi, pilih Hapus.
-
Pantau kemajuan proses penghapusan tumpukan pada tab Event. Status untuk
BootstrapTutorialStack
perubahan keDELETE_IN_PROGRESS
. Ketika CloudFormation menyelesaikan penghapusan tumpukan, itu menghapus tumpukan dari daftar.
Langkah selanjutnya
Selamat! Anda telah berhasil mempelajari cara mem-bootstrap EC2 instance dengan CloudFormation. Anda sekarang mengerti:
-
Cara menggunakan
cfn-init
skrip pembantu -
Cara menyusun metadata untuk bootstrap
-
Cara menginstal paket, membuat file, menjalankan perintah, dan mengelola layanan
-
Cara memonitor masalah bootstrap
Untuk terus belajar:
-
Pelajari cara mem-bootstrap Windows tumpukan. Untuk informasi selengkapnya, lihat Tumpukan berbasis bootstrap Windows CloudFormation .
-
Jelajahi skenario bootstrap yang lebih kompleks dengan beberapa set konfigurasi. Untuk informasi selengkapnya, lihat cfn-init dan AWS::CloudFormation::Initdi Panduan Referensi AWS CloudFormation Template.
-
Pelajari tentang
cfn-signal
pelaporan status penyelesaian bootstrap. Untuk informasi selengkapnya, lihat cfn-signal di Panduan Referensi AWS CloudFormation Template.