Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS CloudFormation praktik terbaik
Praktik terbaik adalah rekomendasi yang dapat membantu Anda menggunakan AWS CloudFormation lebih efektif dan aman di seluruh alur kerjanya. Pelajari cara merencanakan dan mengatur tumpukan Anda, membuat templat yang menggambarkan sumber daya dan aplikasi perangkat lunak yang berjalan di dalamnya, serta mengelola tumpukan dan sumber dayanya. Praktik terbaik berikut didasarkan pada pengalaman dunia nyata dari CloudFormation pelanggan saat ini.
- Perencanaan dan pengorganisasian
- Membuat templat
- Mengelola tumpukan
Mempersingkat loop umpan balik untuk meningkatkan kecepatan pengiriman
Mengadopsi praktik dan alat yang membantu Anda mempersingkat loop umpan balik untuk infrastruktur yang Anda gambarkan dengan CloudFormation templat. Ini termasuk melakukan linting awal dan pengujian template Anda di workstation Anda; ketika Anda melakukannya, Anda memiliki kesempatan untuk menemukan potensi masalah sintaks dan konfigurasi bahkan sebelum Anda mengirimkan kontribusi Anda ke repositori kode sumber. Penemuan awal masalah tersebut membantu mencegah mereka mencapai lingkungan siklus hidup formal, seperti pengembangan, jaminan kualitas, dan produksi. Pendekatan pengujian awal dan cepat gagal ini memberi Anda manfaat mengurangi waktu tunggu pengerjaan ulang, mengurangi area dampak potensial, dan meningkatkan tingkat kepercayaan Anda dalam menjalankan operasi penyediaan yang berhasil.
Pilihan perkakas yang membantu Anda mencapai praktik cepat gagal termasuk AWS CloudFormation Lintercfn-lint
) dan TaskCatcfn-lint
Alat ini memberi Anda kemampuan untuk memvalidasi CloudFormation template Anda terhadap Spesifikasi AWS CloudFormation Sumber Daya. Ini termasuk memeriksa nilai yang valid untuk properti sumber daya, serta praktik terbaik. Plugin untuk cfn-lint
tersedia untuk sejumlah editor kodecfn-lint
dalam konfigurasi repositori kode sumber Anda, sehingga Anda dapat melakukan validasi template ketika Anda melakukan kontribusi Anda. Untuk informasi selengkapnya, lihat validasi pra-komit Git dari AWS CloudFormation template dengancfn-lint
Setelah Anda melakukan linting awal Anda—dan memperbaiki masalah apa pun yang cfn-lint
mungkin ditimbulkan—Anda dapat menggunakannya TaskCat untuk menguji template Anda dengan membuat tumpukan secara terprogram yang Anda pilih. Wilayah AWS TaskCatjuga menghasilkan laporan dengan nilai lulus/gagal untuk setiap Wilayah yang Anda pilih.
Untuk panduan langsung tentang cara menggunakan kedua alat untuk mempersingkat loop umpan balik, ikuti lab Linting dan
Atur tumpukan Anda berdasarkan siklus hidup dan kepemilikan
Gunakan siklus hidup dan kepemilikan sumber daya Anda untuk membantu Anda memutuskan AWS sumber daya apa yang harus masuk di setiap tumpukan. Awalnya, Anda mungkin menempatkan semua sumber daya dalam satu tumpukan, tetapi seiring dengan bertambahnya skala dan cakupannya, mengelola satu tumpukan menjadi rumit dan memakan waktu. Dengan mengelompokkan sumber daya dengan siklus hidup umum dan kepemilikan, pemilik dapat membuat perubahan pada kumpulan sumber daya dengan menggunakan proses dan jadwalnya sendiri tanpa mempengaruhi sumber daya lainnya.
Misalnya, bayangkan tim pengembang dan insinyur yang memiliki situs web yang di-host di instans EC2 Auto Scaling Amazon di belakang penyeimbang beban. Karena situs web memiliki siklus hidup sendiri dan dikelola oleh tim situs web, Anda dapat membuat tumpukan untuk situs web dan sumber dayanya. Sekarang bayangkan bahwa situs web juga menggunakan basis data back-end, di mana basis data berada dalam tumpukan terpisah yang dimiliki dan dikelola oleh administrator database. Setiap kali tim situs web atau tim basis data harus memperbarui sumber dayanya, hal tersebut dapat dilakukan tanpa mempengaruhi tumpukan masing-masing. Jika semua sumber daya berada di tumpukan tunggal, mengoordinasikan, dan mengomunikasikan pembaruan bisa jadi sulit.
Untuk panduan tambahan tentang mengatur tumpukan Anda, Anda dapat menggunakan dua kerangka kerja umum: arsitektur berlapis-lapis dan arsitektur berorientasi layanan (). SOA
Arsitektur berlapis mengatur tumpukan menjadi beberapa lapisan horizontal yang dibangun di atas satu sama lain, di mana setiap lapisan memiliki ketergantungan pada lapisan tepat di bawahnya. Anda dapat memiliki satu tumpukan atau lebih di setiap lapisan, tetapi dalam setiap lapisan, tumpukan Anda harus memiliki AWS sumber daya dengan siklus hidup dan kepemilikan yang sama.
Dengan arsitektur berorientasi layanan, Anda dapat mengatur masalah bisnis besar menjadi bagian-bagian yang mudah dikelola. Masing-masing bagian ini adalah layanan yang memiliki tujuan yang jelas dan mewakili unit fungsionalitas yang berdiri mandiri. Anda dapat memetakan layanan ini ke tumpukan yang memiliki siklus hidup dan pemiliknya masing-masing. Layanan ini (tumpukan) dapat disatukan agar dapat berinteraksi satu sama lain.
Gunakan referensi lintas tumpukan untuk mengekspor sumber daya bersama
Saat Anda mengatur AWS sumber daya berdasarkan siklus hidup dan kepemilikan, Anda mungkin ingin membuat tumpukan yang menggunakan sumber daya yang ada di tumpukan lain. Anda dapat hardcode nilai atau menggunakan parameter input untuk meneruskan nama sumber daya danIDs. Namun, metode ini dapat membuat templat sulit untuk digunakan kembali atau dapat meningkatkan overhead agar tumpukan bisa berjalan. Sebaliknya, gunakan referensi lintas tumpukan untuk mengekspor sumber daya dari tumpukan sehingga tumpukan lain dapat menggunakannya. Tumpukan dapat menggunakan sumber daya yang diekspor dengan memanggilnya menggunakan Fn::ImportValue
fungsi.
Misalnya, Anda mungkin memiliki tumpukan jaringan yang mencakupVPC, grup keamanan, dan subnet. Anda ingin semua aplikasi web publik menggunakan sumber daya ini. Dengan mengekspor sumber daya, Anda mengizinkan semua tumpukan dengan aplikasi web publik menggunakannya. Untuk informasi selengkapnya, lihat Dapatkan output yang diekspor dari tumpukan yang diterapkan CloudFormation.
Verifikasi kuota untuk semua jenis sumber daya
Sebelum meluncurkan tumpukan, pastikan Anda dapat membuat semua sumber daya yang Anda inginkan tanpa menekan batas AWS akun Anda. Jika Anda mencapai batas, tidak CloudFormation akan berhasil membuat tumpukan hingga Anda meningkatkan kuota atau menghapus sumber daya tambahan. Setiap layanan dapat memiliki berbagai batasan yang harus Anda ketahui sebelum meluncurkan tumpukan. Misalnya, secara default, Anda hanya dapat meluncurkan 2000 CloudFormation tumpukan per Wilayah di wilayah Anda Akun AWS. Untuk informasi selengkapnya tentang batas dan cara meningkatkan batas default, lihat kuota AWS layanan di Referensi Umum AWS.
Gunakan kembali templat untuk mereplikasi tumpukan di beberapa lingkungan
Setelah mengatur tumpukan dan sumber daya, Anda dapat menggunakan kembali templat untuk mereplikasi infrastruktur di beberapa lingkungan. Misalnya, Anda dapat membuat lingkungan untuk pengembangan, pengujian, dan produksi sehingga Anda dapat menguji perubahan sebelum menerapkannya ke dalam produksi. Agar templat dapat digunakan kembali, gunakan parameter, pemetaan, dan kondisi bagian sehingga Anda dapat menyesuaikan tumpukan ketika membuatnya. Misalnya, untuk lingkungan pengembangan, Anda dapat menentukan tipe instans biaya yang lebih rendah yang dibandingkan dengan lingkungan produksi, tetapi semua konfigurasi dan pengaturan lainnya tetap sama. Untuk informasi selengkapnya tentang parameter, pemetaan, dan kondisi, lihat CloudFormation bagian template.
Gunakan modul untuk menggunakan kembali konfigurasi sumber daya
Seiring pertumbuhan infrastruktur, pola umum dapat muncul saat Anda mendeklarasikan komponen yang sama di setiap templat. Modul adalah cara Anda untuk mengemas konfigurasi sumber daya untuk dimasukkan di seluruh tumpukan templat, dengan cara yang transparan, mudah dikelola, dan berulang. Modul dapat merangkum konfigurasi layanan umum dan praktik terbaik sebagai blok bangunan modular yang dapat disesuaikan untuk Anda masukkan dalam templat tumpukan Anda.
Blok bangunan ini dapat digunakan untuk satu sumber daya, seperti praktik terbaik untuk mendefinisikan instance Amazon Elastic Compute Cloud EC2 (Amazon), atau dapat digunakan untuk beberapa sumber daya, untuk menentukan pola umum arsitektur aplikasi. Blok bangunan ini dapat disarangkan ke modul lain, sehingga Anda dapat menumpuk praktik terbaik Anda ke dalam blok bangunan tingkat yang lebih tinggi. CloudFormation modul tersedia di CloudFormation registri, sehingga Anda dapat menggunakannya seperti sumber daya asli. Saat Anda menggunakan CloudFormation modul, template modul diperluas ke template konsumsi, yang memungkinkan Anda mengakses sumber daya di dalam modul menggunakan Ref atau Fn::. GetAtt Untuk informasi selengkapnya, lihat Buat konfigurasi sumber daya yang dapat digunakan kembali yang dapat disertakan di seluruh templat dengan modul CloudFormation .
Gunakan AWS tipe parameter -spesifik
Jika template Anda memerlukan input untuk nilai AWS-spesifik yang ada, seperti Amazon Virtual Private Cloud yang ada IDs atau nama EC2 key pair Amazon, gunakan tipe parameter AWS-specific. Misalnya, Anda dapat menentukan parameter sebagai tipeAWS::EC2::KeyPair::KeyName
, yang mengambil nama key pair yang ada di dalam Anda Akun AWS dan di Wilayah tempat Anda membuat tumpukan. AWS CloudFormation dapat dengan cepat memvalidasi nilai untuk tipe parameter AWS-spesifik sebelum membuat tumpukan Anda. Juga, jika Anda menggunakan CloudFormation konsol, CloudFormation menampilkan daftar drop-down nilai yang valid, sehingga Anda tidak perlu mencari atau menghafal nama yang benar VPC IDs atau key pair. Untuk informasi selengkapnya, lihat Referensikan sumber daya yang ada dan parameter Systems Manager dengan CloudFormation tipe parameter yang disediakan.
Gunakan batasan parameter
Dengan kendala, Anda dapat menjelaskan nilai input yang diizinkan sehingga CloudFormation menangkap nilai yang tidak valid sebelum membuat tumpukan. Anda dapat mengatur kendala seperti panjang minimum, panjang maksimum, dan pola yang diperbolehkan. Misalnya, Anda dapat mengatur kendala pada nilai nama pengguna basis data sehingga panjang minimal harus delapan karakter dan hanya berisi karakter alfanumerik. Untuk informasi selengkapnya, lihat Parameters referensi sintaks bagian untuk template CloudFormation .
Gunakan parameter semu untuk mempromosikan portabilitas
Anda dapat menggunakan parameter semu dalam template Anda sebagai argumen untuk fungsi intrinsik, seperti dan. Ref
Fn::Sub
Parameter pseudo adalah parameter yang telah ditentukan sebelumnya oleh. CloudFormation Anda tidak menyatakannya di templat Anda. Menggunakan parameter semu dalam fungsi intrinsik meningkatkan portabilitas template tumpukan Anda di seluruh Wilayah dan akun.
Misalnya, bayangkan Anda ingin membuat template di mana, untuk properti sumber daya tertentu, Anda perlu menentukan Amazon Resource Name (ARN) dari sumber daya lain yang ada. Dalam hal ini, sumber daya yang ada adalah sumber daya AWS Systems Manager
Parameter Store dengan yang berikutARN:arn:aws:ssm:us-east-1:123456789012:parameter/MySampleParameter
. Anda perlu menyesuaikan ARNformat ke AWS partisi target, Wilayah, dan ID akun Anda. Alih-alih hard-coding nilai-nilai ini, Anda dapat menggunakanAWS::Partition
,AWS::Region
, dan parameter AWS::AccountId
semu untuk membuat template Anda lebih portabel. Dalam hal ini, contoh berikut menunjukkan kepada Anda cara menggabungkan elemen dalam dengan:. ARN CloudFormation !Sub
'arn:${AWS::Partition}:ssm:${AWS::Region}:${AWS::AccountId}:parameter/MySampleParameter
Untuk contoh lain, asumsikan Anda ingin berbagi sumber daya atau konfigurasi di beberapa tumpukan. Dalam contoh ini, asumsikan Anda telah membuat subnet untuk AndaVPC, dan kemudian mengekspor ID-nya untuk digunakan dengan tumpukan lain di daerah yang sama Akun AWS dan. Di tumpukan lain, Anda mereferensikan nilai yang diekspor dari subnet ID saat mendeskripsikan instance Amazon. EC2 Untuk contoh rinci menggunakan bidang Export
output dan fungsi Fn::ImportValue
intrinsik, lihat. Lihat output sumber daya di tumpukan lain CloudFormation
Ekspor tumpukan harus unik per akun dan Wilayah. Jadi, dalam hal ini, Anda dapat menggunakan parameter AWS::StackName
semu untuk membuat awalan untuk ekspor Anda. Karena nama tumpukan juga harus unik per akun dan Wilayah, penggunaan parameter semu ini sebagai awalan meningkatkan kemungkinan memiliki nama ekspor yang unik sambil juga mempromosikan pendekatan yang dapat digunakan kembali di seluruh tumpukan tempat Anda mengekspor nilai. Atau, Anda dapat menggunakan awalan pilihan Anda sendiri.
Gunakan AWS::CloudFormation::Init
untuk menyebarkan aplikasi perangkat lunak di instans Amazon EC2
Saat meluncurkan tumpukan, Anda dapat menginstal dan mengonfigurasi aplikasi perangkat lunak di EC2 instans Amazon dengan menggunakan skrip cfn-init
pembantu dan sumber daya. AWS::CloudFormation::Init
Dengan menggunakan AWS::CloudFormation::Init
, Anda dapat menjelaskan konfigurasi yang Anda inginkan daripada menuliskan langkah-langkah prosedural. Anda juga dapat memperbarui konfigurasi tanpa menciptakan ulang instans. Dan jika ada yang salah dengan konfigurasi Anda, CloudFormation buat log yang dapat Anda gunakan untuk menyelidiki masalah.
Dalam templat Anda, tentukan keadaan instalasi dan konfigurasi di AWS::CloudFormation::Init
sumber daya. Untuk panduan yang menunjukkan cara menggunakan cfn-init
danAWS::CloudFormation::Init
, lihat. Menyebarkan aplikasi di Amazon EC2
Gunakan skrip pembantu terbaru
Skrip pembantu diperbarui secara berkala. Pastikan Anda menyertakan perintah berikut di UserData
properti templat Anda sebelum memanggil skrip pembantu untuk memastikan bahwa instans yang Anda luncurkan mendapatkanskrip pembantu terbaru:
yum install -y aws-cfn-bootstrap
Untuk informasi selengkapnya tentang mendapatkan skrip pembantu terbaru, lihat referensi skrip CloudFormation pembantu.
Validasi templat sebelum digunakan
Sebelum Anda menggunakan template untuk membuat atau memperbarui tumpukan, Anda dapat menggunakannya CloudFormation untuk memvalidasinya. Memvalidasi template dapat membantu Anda menangkap sintaks dan beberapa kesalahan semantik, seperti dependensi melingkar, sebelum membuat sumber daya apa pun. CloudFormation Jika Anda menggunakan CloudFormation konsol, konsol secara otomatis memvalidasi template setelah Anda menentukan parameter input. Untuk AWS CLI atau CloudFormation API, gunakan validate-templateCLIperintah atau ValidateTemplateAPIoperasi.
Selama validasi, periksa CloudFormation dulu apakah template validJSON. Jika tidak, CloudFormation periksa apakah template tersebut validYAML. Jika kedua pemeriksaan gagal, CloudFormation mengembalikan kesalahan validasi template.
Validasi template untuk kepatuhan kebijakan organisasi
Anda juga dapat memvalidasi template Anda untuk kepatuhan terhadap pedoman kebijakan organisasi. AWS CloudFormation Guard (cfn-guard
) adalah alat antarmuka baris perintah sumber terbuka (CLI) yang menyediakan policy-as-code bahasa untuk menentukan aturan yang dapat memeriksa konfigurasi sumber daya yang diperlukan dan yang dilarang. Hal ini kemudian memungkinkan Anda untuk memvalidasi templat terhadap aturan-aturan tersebut. Misalnya, administrator dapat membuat aturan untuk memastikan bahwa pengguna selalu membuat bucket S3 Amazon terenkripsi.
Anda dapat menggunakan cfn-guard
baik secara lokal, sambil mengedit templat, atau secara otomatis sebagai bagian dari alur CI/CD untuk menghentikan deployment sumber daya non-compliant.
Selain itu, cfn-guard
termasuk fitur,rulegen
, yang memungkinkan Anda untuk mengekstrak aturan dari CloudFormation template yang sesuai yang ada.
Untuk informasi lebih lanjut, lihat repositori cfn-guard
Kelola semua sumber daya tumpukan melalui AWS CloudFormation
Setelah Anda meluncurkan tumpukan, gunakan CloudFormation konsol API
Untuk informasi lebih lanjut tentang drift, lihatApa yang dimaksud dengan penyimpangan?.
Untuk informasi selengkapnya tentang memperbarui tumpukan, lihatPanduan: Memperbarui tumpukan.
Buat rangkaian perubahan sebelum memperbarui tumpukan
Set perubahan memungkinkan Anda melihat bagaimana perubahan yang diusulkan pada tumpukan dapat memengaruhi sumber daya yang sedang berjalan sebelum Anda menerapkannya. CloudFormation tidak membuat perubahan apa pun pada tumpukan Anda sampai Anda menjalankan set perubahan, memungkinkan Anda memutuskan apakah akan melanjutkan perubahan yang Anda usulkan atau membuat set perubahan lain.
Gunakan set perubahan untuk memeriksa bagaimana perubahan dapat mempengaruhi sumber daya yang sedang berjalan, terutama untuk sumber daya kritis. Misalnya, jika Anda mengubah nama instance RDS database Amazon, CloudFormation akan membuat database baru dan menghapus yang lama; Anda akan kehilangan data di database lama kecuali Anda sudah mencadangkannya. Jika Anda menghasilkan perubahan set, Anda akan melihat bahwa perubahan akan menggantikan basis data. Hal ini dapat membantu merencanakan sebelum memperbarui tumpukan. Untuk informasi selengkapnya, lihat Perbarui CloudFormation tumpukan menggunakan set perubahan.
Gunakan kebijakan tumpukan
Kebijakan tumpukan membantu melindungi sumber daya tumpukan penting dari pembaruan yang tidak disengaja yang dapat menyebabkan sumber daya terganggu atau bahkan diganti. Kebijakan tumpukan adalah JSON dokumen yang menjelaskan tindakan pembaruan apa yang dapat dilakukan pada sumber daya yang ditentukan. Tentukan kebijakan tumpukan setiap kali Anda membuat tumpukan yang memiliki sumber daya penting.
Selama pembaruan tumpukan, Anda harus secara eksplisit menentukan sumber daya yang dilindungi yang ingin Anda perbarui; jika tidak, tidak ada perubahan yang dibuat untuk sumber daya yang dilindungi. Untuk informasi selengkapnya, lihat Mencegah pembaruan ke sumber daya tumpukan.
Gunakan ulasan kode dan kontrol revisi untuk mengelola templat
Templat tumpukan Anda menjelaskan konfigurasi sumber AWS daya Anda, seperti nilai propertinya. Untuk meninjau perubahan dan menyimpan riwayat sumber daya yang tepat, gunakan ulasan kode dan kontrol revisi. Metode ini dapat membantu Anda melacak perubahan antara versi templat yang berbeda, yang dapat membantu Anda melacak perubahan pada sumber daya tumpukan Anda. Selain itu, dengan mempertahankan riwayat, Anda dapat selalu mengembalikan tumpukan Anda ke versi khusus templat Anda.
Perbarui EC2 instans Amazon Anda secara teratur
Pada semua instans Amazon EC2 Windows dan instans Amazon EC2 Linux yang dibuat dengan CloudFormation, jalankan yum update
perintah secara teratur untuk memperbarui paket. RPM Hal ini memastikan bahwa Anda mendapatkan perbaikan terbaru dan pembaruan keamanan.