AWS CloudFormation praktik terbaik - AWS CloudFormation

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.

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 Linter (cfn-lint) dan alat baris perintah. TaskCat Alat cfn-lint memberi Anda kemampuan untuk memvalidasi CloudFormation template Anda terhadap Spesifikasi Sumber Daya.AWS CloudFormation Ini termasuk memeriksa nilai yang valid untuk properti sumber daya, serta praktik terbaik. Plugin untuk cfn-lint tersedia untuk sejumlah editor kode; ini memberi Anda kemampuan untuk memvisualisasikan masalah dalam editor Anda dan untuk mendapatkan umpan balik linter langsung. Anda juga dapat memilih untuk mengintegrasikan cfn-lint dalam konfigurasi repositori kode sumber Anda, sehingga Anda dapat melakukan validasi template saat Anda melakukan kontribusi Anda. Untuk informasi selengkapnya, lihat Validasi pra-komit Git dari AWS CloudFormation template dengan cfn-lint. Setelah Anda melakukan linting awal Anda—dan memperbaiki masalah apa pun yang mungkin timbul cfn-lint—Anda dapat menggunakannya TaskCat untuk menguji template Anda dengan membuat tumpukan secara terprogram di wilayah yang Anda pilih. 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 Pengujian Lokakarya. step-by-step AWS CloudFormation

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 developer dan insinyur yang memiliki situs web yang di-host pada instans penskalaan otomatisdi 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 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 melakukan hardcode nilai atau menggunakan parameter input untuk meneruskan nama dan ID sumber daya. 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 mencakup VPC, 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 Panduan: Merujuk output sumber daya di tumpukan AWS CloudFormation lainnya.

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 Anatomi templat.

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 (Amazon EC2), 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 lebih lanjut, lihat Modul.

Gunakan AWS tipe parameter -spesifik

Jika template Anda memerlukan input untuk nilai AWS-spesifik yang ada, seperti ID Amazon Virtual Private Cloud yang ada atau nama key pair Amazon EC2 AWS, gunakan tipe parameter -specific. Misalnya, Anda dapat menentukan parameter sebagai tipeAWS::EC2::KeyPair::KeyName, yang mengambil nama key pair yang ada di AWS akun Anda dan di wilayah tempat Anda membuat tumpukan. AWS CloudFormation dapat dengan cepat memvalidasi nilai untuk tipe parameter AWS-spesifik sebelum membuat tumpukan Anda. Selain itu, jika Anda menggunakan CloudFormation konsol, CloudFormation menampilkan daftar drop-down nilai yang valid, sehingga Anda tidak perlu mencari atau menghafal ID VPC atau nama key pair yang benar. Untuk informasi selengkapnya, lihat Parameter.

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

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 templat di mana, untuk properti sumber daya tertentu, Anda perlu menentukan Nama Sumber Daya Amazon (ARN) dari sumber daya lain yang ada. Dalam hal ini, sumber daya yang ada adalah sumber daya AWS Systems Manager Parameter Store dengan ARN berikut:. arn:aws:ssm:us-east-1:111122223333:parameter/MySampleParameter Anda perlu menyesuaikan format ARN 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 ARN dengan:. CloudFormation !Sub 'arn:${AWS::Partition}:ssm:${AWS::Region}:${AWS::AccountId}:parameter/MySampleParameter

Untuk contoh lain, asumsikan Anda ingin menggunakan untuk merujuk Panduan: Merujuk output sumber daya di tumpukan AWS CloudFormation lainnya ke output sumber daya di CloudFormation tumpukan lain. Dalam contoh ini, asumsikan Anda telah membuat subnet untuk VPC Anda, dan kemudian mengekspor ID-nya untuk digunakan dengan tumpukan lain di akun dan wilayah yang sama. Di tumpukan lain, Anda mereferensikan nilai yang diekspor dari subnet ID saat mendeskripsikan instans Amazon EC2.

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.

Untuk contoh rinci menggunakan bidang Export output dan fungsi Fn::ImportValue intrinsik, lihat. Panduan: Merujuk output sumber daya di tumpukan AWS CloudFormation lainnya

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 instans Amazon EC2 dengan menggunakan skrip pembantu cfn-init 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 dan, lihat. AWS::CloudFormation::Init Menerapkan aplikasi di Amazon EC2 dengan AWS CloudFormation

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 CloudFormation referensi skrip 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 CloudFormation API AWS CLI atau, gunakan aws cloudformation validate-templateperintah atau operasi ValidateTemplateAPI.

Selama validasi, periksa CloudFormation terlebih dahulu apakah template adalah JSON yang valid. Jika tidak, CloudFormation periksa apakah template tersebut adalah YAMB yang valid. 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 bahasa untuk menentukan aturan policy-as-code 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 di. GitHub

Kelola semua sumber daya tumpukan melalui AWS CloudFormation

Setelah Anda meluncurkan tumpukan, gunakan CloudFormation konsol, API, atau AWS CLI untuk memperbarui sumber daya di tumpukan Anda. Jangan membuat perubahan pada tumpukan sumber daya di luar CloudFormation. Melakukannya dapat membuat ketidakcocokan antara template tumpukan Anda dan keadaan sumber daya tumpukan Anda saat ini, yang dapat menyebabkan kesalahan jika Anda memperbarui atau menghapus tumpukan. Untuk informasi selengkapnya, lihat Panduan: 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 database Amazon RDS, 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 Memperbarui 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 dokumen JSON yang menjelaskan tindakan pembaruan apa yang dapat dilakukan pada sumber daya yang ditunjuk. 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 instans Amazon EC2 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.