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 template. 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, 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 Lihat output sumber daya di tumpukan lain 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 Bagian 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 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 lebih lanjut, lihat Modul.

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

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.

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:111122223333: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 menggunakan untuk merujuk Lihat output sumber daya di tumpukan lain CloudFormation ke output sumber daya di CloudFormation tumpukan lain. Dalam contoh ini, asumsikan Anda telah membuat subnet untuk AndaVPC, 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 instance 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. Lihat output sumber daya di tumpukan lain CloudFormation

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 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 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 terlebih dahulu apakah template tersebut 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 di. GitHub

Kelola semua sumber daya tumpukan melalui AWS CloudFormation

Setelah Anda meluncurkan tumpukan, gunakan CloudFormation konsol API, atau AWS CLIuntuk 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. Ini dikenal sebagai drift. Jika perubahan dibuat ke sumber daya di luar CloudFormation template dan Anda memperbarui tumpukan, perubahan yang dibuat langsung ke sumber daya akan dibuang, dan konfigurasi sumber daya akan kembali ke konfigurasi di template.

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