lynx   »   [go: up one dir, main page]

CloudFormation praktik terbaik - AWS CloudFormation
Mempersingkat loop umpan balik untuk meningkatkan kecepatan pengembanganAtur tumpukan Anda berdasarkan siklus hidup dan kepemilikanGunakan referensi cross-stack untuk mengembalikan nilai output yang diekspor oleh tumpukan lainGunakan AWS CloudFormation StackSets untuk penyebaran multi-akun dan multi-wilayahVerifikasi kuota untuk semua jenis sumber dayaGunakan kembali templat untuk mereplikasi tumpukan di beberapa lingkunganGunakan modul untuk menggunakan kembali konfigurasi sumber dayaMengadopsi infrastruktur sebagai praktik kodeJangan menyematkan kredensi di templat AndaGunakan AWS tipe parameter -spesifikGunakan batasan parameterGunakan parameter semu untuk mempromosikan portabilitasGunakan AWS::CloudFormation::Init untuk menyebarkan aplikasi perangkat lunak di instans Amazon EC2 Gunakan skrip pembantu terbaruValidasi templat sebelum digunakanMenggunakan YAMAL atau JSON untuk pembuatan templateMenerapkan strategi penandaan yang komprehensifManfaatkan makro template untuk transformasi tingkat lanjutKelola semua sumber daya tumpukan melalui CloudFormationBuat rangkaian perubahan sebelum memperbarui tumpukanGunakan kebijakan tumpukan untuk melindungi sumber dayaGunakan AWS CloudTrail untuk mencatat CloudFormation panggilanGunakan ulasan kode dan kontrol revisi untuk mengelola templatPerbarui EC2 instans Amazon Anda secara teraturGunakan deteksi drift secara teraturKonfigurasikan pemicu rollback untuk pemulihan otomatisMenerapkan strategi refactoring stack yang efektifGunakan CloudFormation Hooks untuk manajemen siklus hidupGunakan IAc Generator untuk membuat template dari sumber daya yang adaGunakan AWS Infrastructure Composer untuk desain template visualPertimbangkan AWS Cloud Development Kit (AWS CDK) untuk menggunakan infrastruktur yang kompleksGunakan IAM untuk mengontrol aksesMenerapkan prinsip hak istimewa paling sedikitAmankan parameter sensitifMenerapkan kebijakan sebagai kode dengan AWS CloudFormation Guard

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

CloudFormation praktik terbaik

Praktik terbaik adalah rekomendasi yang dapat membantu Anda menggunakan CloudFormation lebih efektif dan mengadopsi praktik 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
Alat penulisan
Keamanan dan kepatuhan

Mempersingkat loop umpan balik untuk meningkatkan kecepatan pengembangan

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 TaskCatalat baris perintah. cfn-lintAlat 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 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 ketika 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 cfn-lint mungkin ditimbulkan—Anda dapat menggunakannya TaskCat untuk menguji template Anda dengan membuat tumpukan secara terprogram dalam pilihan Anda. Wilayah AWS TaskCat juga menghasilkan laporan dengan pass/fail nilai 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 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 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 cross-stack untuk mengembalikan nilai output yang diekspor oleh tumpukan lain

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 dan IDs. Namun, metode ini dapat membuat templat sulit untuk digunakan kembali atau dapat meningkatkan overhead agar tumpukan bisa berjalan. Sebagai gantinya, gunakan referensi cross-stack untuk mengembalikan nilai output yang diekspor oleh tumpukan lain 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 Dapatkan output yang diekspor dari tumpukan yang diterapkan CloudFormation.

Gunakan AWS CloudFormation StackSets untuk penyebaran multi-akun dan multi-wilayah

AWS CloudFormation StackSets memperluas kemampuan tumpukan dengan memungkinkan Anda membuat, memperbarui, atau menghapus tumpukan di beberapa akun dan wilayah dengan satu operasi. Gunakan StackSets untuk menerapkan komponen infrastruktur umum, kontrol kepatuhan, atau layanan bersama di seluruh organisasi Anda.

Saat menggunakan StackSets, terapkan izin yang dikelola layanan dengan manajemen izin yang AWS Organizations disederhanakan. Pendekatan ini memungkinkan Anda untuk menyebarkan StackSets ke akun dalam organisasi Anda tanpa perlu mengonfigurasi peran IAM secara manual di setiap akun.

Untuk informasi lebih lanjut tentang StackSets lihat StackSets konsep.

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 .

Mengadopsi infrastruktur sebagai praktik kode

Perlakukan CloudFormation template Anda sebagai kode dengan menerapkan praktik infrastruktur sebagai kode (IAc). Simpan template Anda dalam sistem kontrol versi, terapkan tinjauan kode, dan gunakan pengujian otomatis untuk memvalidasi perubahan. Pendekatan ini memastikan konsistensi, meningkatkan kolaborasi, dan menyediakan jejak audit untuk perubahan infrastruktur.

Pertimbangkan untuk menerapkan CI/CD pipeline untuk kode infrastruktur Anda untuk mengotomatiskan pengujian dan penerapan template Anda. CloudFormation Alat seperti AWS CodePipeline, AWS CodeBuild, dan AWS CodeDeploy dapat digunakan untuk membuat alur kerja otomatis untuk penerapan infrastruktur Anda.

Untuk informasi selengkapnya tentang penerapan praktik terbaik IAc, lihat Menggunakan AWS CloudFormation sebagai alat IAc.

Untuk informasi lebih lanjut tentang penggunaan pengiriman berkelanjutan dengan CloudFormation, lihat Pengiriman berkelanjutan dengan CodePipeline.

Jangan menyematkan kredensi di templat Anda

Daripada menyematkan informasi sensitif di CloudFormation template Anda, kami sarankan Anda menggunakan referensi dinamis di template tumpukan Anda.

Referensi dinamis menyediakan cara yang ringkas dan ampuh bagi Anda untuk mereferensikan nilai eksternal yang disimpan dan dikelola di layanan lain, seperti AWS Systems Manager Parameter Store atau AWS Secrets Manager. Bila Anda menggunakan referensi dinamis, CloudFormation mengambil nilai referensi yang ditentukan bila diperlukan selama tumpukan dan mengubah operasi set, dan meneruskan nilai ke sumber daya yang sesuai. Namun, CloudFormation jangan pernah menyimpan nilai referensi yang sebenarnya. Untuk informasi selengkapnya, lihat Menggunakan referensi dinamis untuk Menentukan nilai templat.

AWS Secrets Manager membantu Anda mengenkripsi, menyimpan, dan mengambil kredensyal dengan aman untuk database dan layanan lainnya. AWS Systems Manager Parameter Store menyediakan penyimpanan hierarkis yang aman untuk pengelolaan data konfigurasi.

Untuk informasi lebih lanjut tentang menentukan parameter templat , lihat CloudFormation Parameterssintaks template.

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. 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 nama VPC atau key IDs pair yang benar. Untuk informasi selengkapnya, lihat Tentukan sumber daya yang ada saat runtime 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 CloudFormation Parameterssintaks template.

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:123456789012: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 cara menggabungkan elemen dalam ARN dengan:. 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 VPC Anda, dan kemudian mengekspor ID-nya untuk digunakan dengan tumpukan lain di wilayah yang sama dan. Akun AWS 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 CloudFormation 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 di Panduan Referensi Template.AWS CloudFormation

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 perintah validate-templateCLI atau operasi ValidateTemplateAPI.

Selama validasi, periksa CloudFormation terlebih dahulu apakah template adalah JSON yang valid. Jika bukan, CloudFormation memeriksa apakah templat YAML 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 secara lokal, saat mengedit templat, atau secara otomatis sebagai bagian dari CI/CD pipeline untuk menghentikan penyebaran sumber daya yang tidak sesuai.

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

Menggunakan YAMAL atau JSON untuk pembuatan template

CloudFormation mendukung format YAMAL dan JSON untuk template. Masing-masing memiliki kelebihan, dan pilihannya tergantung pada kebutuhan spesifik Anda:

Gunakan YAMB saat

  • Anda memprioritaskan keterbacaan dan pemeliharaan manusia

  • Anda ingin menyertakan komentar untuk mendokumentasikan template Anda

  • Anda sedang mengerjakan template kompleks dengan struktur bersarang

  • Anda ingin menggunakan fitur khusus YAML seperti jangkar dan alias untuk mengurangi pengulangan

Gunakan JSON saat:

  • Anda perlu mengintegrasikan dengan alat atau sistem yang lebih menyukai JSON

  • Anda bekerja dengan pembuatan atau manipulasi template terprogram

  • Anda memerlukan validasi data yang ketat

YAMB umumnya direkomendasikan untuk pembuatan template manual karena keterbacaan dan dukungan komentarnya. Ini sangat berguna untuk template kompleks di mana struktur berbasis lekukan membantu memvisualisasikan hierarki sumber daya. JSON dapat menguntungkan dalam alur kerja otomatis atau ketika bekerja dengan input JSON APIs yang diharapkan. Ini juga bermanfaat ketika Anda perlu memastikan kepatuhan yang ketat terhadap struktur tertentu. Terlepas dari format yang Anda pilih, fokuslah untuk membuat templat yang terstruktur, terdokumentasi, dan dapat dipelihara dengan baik. Jika menggunakan YAMB, manfaatkan fitur-fiturnya seperti jangkar dan alias untuk mengurangi pengulangan dan meningkatkan pemeliharaan.

Menerapkan strategi penandaan yang komprehensif

Terapkan strategi penandaan yang konsisten untuk semua sumber daya yang dibuat oleh CloudFormation template Anda. Tag membantu dengan organisasi sumber daya, alokasi biaya, kontrol akses, dan otomatisasi. Pertimbangkan untuk menyertakan tag untuk lingkungan, pemilik, pusat biaya, aplikasi, dan tujuan.

Gunakan Tags properti AWS::CloudFormation::Stack sumber daya untuk menerapkan tag ke semua sumber daya yang didukung dalam tumpukan. Anda juga dapat menggunakan TagSpecifications properti yang tersedia di banyak jenis sumber daya untuk menerapkan tag selama pembuatan sumber daya.

Untuk informasi selengkapnya tentang penandaan, lihat Tag sumber daya.

Manfaatkan makro template untuk transformasi tingkat lanjut

CloudFormation makro memungkinkan Anda melakukan pemrosesan khusus pada templat, dari tindakan sederhana seperti find-and-replace operasi hingga transformasi kompleks yang menghasilkan sumber daya tambahan. Gunakan makro untuk memperluas kemampuan CloudFormation template dan menerapkan pola yang dapat digunakan kembali di seluruh organisasi Anda.

AWS Serverless Application Model Ini adalah contoh makro yang menyederhanakan pengembangan aplikasi tanpa server. Pertimbangkan untuk membuat makro khusus untuk pola dan persyaratan khusus organisasi.

Untuk informasi selengkapnya tentang penggunaan makro di templat Anda, lihat Ikhtisar CloudFormation makro.

Kelola semua sumber daya tumpukan melalui 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. 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, lihatMemperbarui 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 Perbarui CloudFormation tumpukan menggunakan set perubahan.

Gunakan kebijakan tumpukan untuk melindungi sumber daya

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 AWS CloudTrail untuk mencatat CloudFormation panggilan

AWS CloudTrail melacak siapa pun yang melakukan panggilan CloudFormation API di Anda Akun AWS. Panggilan API dicatat setiap kali ada yang menggunakan CloudFormation API, CloudFormation konsol, konsol back-end, atau CloudFormation AWS CLI perintah. Aktifkan logging dan tentukan bucket Amazon S3 untuk menyimpan log. Dengan begitu, jika perlu, Anda dapat mengaudit siapa yang melakukan CloudFormation panggilan apa di akun Anda.

Untuk informasi selengkapnya, lihat Logging panggilan AWS CloudFormation API dengan AWS CloudTrail.

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.

Gunakan deteksi drift secara teratur

Gunakan fitur deteksi CloudFormation drift secara teratur untuk mengidentifikasi sumber daya yang telah dimodifikasi di luar CloudFormation manajemen. Mendeteksi dan menyelesaikan penyimpangan membantu menjaga integritas infrastruktur Anda sebagai pendekatan kode dan memastikan bahwa template Anda secara akurat mencerminkan status sumber daya yang Anda gunakan.

Pertimbangkan untuk menerapkan deteksi drift otomatis sebagai bagian dari prosedur operasional Anda. Anda dapat menggunakan AWS Lambda fungsi yang dipicu oleh EventBridge aturan Amazon untuk memeriksa penyimpangan secara berkala dan memberi tahu tim Anda saat perbedaan terdeteksi.

Untuk informasi selengkapnya tentang drift, lihat Mendeteksi perubahan konfigurasi yang tidak dikelola pada tumpukan dan sumber daya dengan deteksi drift.

Konfigurasikan pemicu rollback untuk pemulihan otomatis

Gunakan pemicu rollback untuk menentukan CloudWatch alarm Amazon yang CloudFormation harus dipantau selama pembuatan tumpukan dan operasi pembaruan. Jika salah satu alarm yang ditentukan masuk ke ALARM status, CloudFormation secara otomatis memutar kembali seluruh operasi tumpukan, membantu memastikan bahwa infrastruktur Anda tetap dalam keadaan stabil.

Konfigurasikan pemicu rollback untuk metrik penting seperti tingkat kesalahan aplikasi, pemanfaatan sumber daya sistem, atau metrik bisnis khusus yang menunjukkan kesehatan aplikasi dan infrastruktur Anda.

Untuk informasi selengkapnya tentang pemicu rollback, lihat Memutar kembali tumpukan Anda pada pelanggaran alarm.

Menerapkan strategi refactoring stack yang efektif

Saat infrastruktur Anda berkembang, Anda mungkin perlu memfaktorkan kembali CloudFormation tumpukan Anda untuk meningkatkan pemeliharaan, mengurangi kompleksitas, atau beradaptasi dengan perubahan persyaratan. Stack refactoring melibatkan restrukturisasi template dan sumber daya Anda sambil mempertahankan perilaku dan fungsionalitas eksternal mereka. Stack refactoring bermanfaat untuk digunakan dengan cara-cara CloudFormation berikut:

  • Memisahkan tumpukan monolitik: Memecah tumpukan besar dan kompleks menjadi tumpukan yang lebih kecil dan lebih mudah dikelola yang diatur berdasarkan siklus hidup atau kepemilikan

  • Mengkonsolidasikan sumber daya terkait: Menggabungkan sumber daya terkait dari beberapa tumpukan menjadi satu tumpukan yang kohesif untuk menyederhanakan manajemen

  • Mengekstrak komponen yang dapat digunakan kembali: Memindahkan pola umum ke dalam modul atau tumpukan bersarang untuk mempromosikan penggunaan kembali dan konsistensi

  • Meningkatkan organisasi sumber daya: Restrukturisasi sumber daya dalam tumpukan untuk lebih mencerminkan hubungan dan dependensi mereka

Untuk informasi lebih lanjut tentang refactoring CloudFormation tumpukan Anda, lihat. Stack refactoring

Gunakan CloudFormation Hooks untuk manajemen siklus hidup

CloudFormation Hooks menyediakan kode yang secara proaktif memeriksa konfigurasi AWS sumber daya Anda sebelum penyediaan, dan melakukan pemeriksaan validasi yang kompleks. Hooks memeriksa apakah sumber daya, tumpukan, dan set perubahan Anda sesuai dengan kebutuhan keamanan, operasional, dan pengoptimalan biaya organisasi Anda. Mereka memberikan peringatan sebelum penyediaan sumber daya, atau gagal operasi dan menghentikannya sama sekali, tergantung pada bagaimana itu telah dikonfigurasi. Pelanggaran dan peringatan dicatat di Amazon CloudWatch untuk memberikan visibilitas ke penerapan yang tidak sesuai.

Untuk informasi selengkapnya tentang praktik terbaik untuk Hooks ini, lihat konsep AWS CloudFormation Hooks.

Untuk informasi lebih lanjut tentang apa yang dapat dilakukan Hooks untuk CloudFormation sumber daya Anda, lihat, Apa itu AWS CloudFormation Hooks?

Gunakan IAc Generator untuk membuat template dari sumber daya yang ada

Generator CloudFormation IAc (infrastruktur sebagai kode) membantu Anda membuat CloudFormation template dari AWS sumber daya yang ada. Kemampuan ini sangat berguna ketika Anda perlu mereplikasi infrastruktur yang ada, mendokumentasikan sumber daya yang dibuat secara manual, atau membawa sumber daya yang sebelumnya tidak dikelola di bawah CloudFormation pengelolaan. Generator IAc berguna untuk membuat CloudFormation template Anda dengan cara berikut:

  • Pembuatan template yang dipercepat: Hasilkan template dari sumber daya yang ada alih-alih menulisnya dari awal

  • Infrastruktur yang konsisten: Pastikan lingkungan baru cocok dengan yang sudah ada dengan menggunakan templat yang dihasilkan sebagai titik awal

  • Migrasi ke infrastruktur sebagai kode: Secara bertahap bawa sumber daya yang dibuat secara manual di bawah CloudFormation pengelolaan

  • Dokumentasi: Buat catatan infrastruktur Anda yang ada dalam formulir templat

Untuk informasi selengkapnya tentang IAc Generator, lihat Menghasilkan templat dari sumber daya yang ada dengan generator IAc.

Gunakan AWS Infrastructure Composer untuk desain template visual

AWS Infrastructure Composer adalah alat desain visual yang membantu Anda membuat, memvisualisasikan, dan memodifikasi CloudFormation template menggunakan drag-and-drop antarmuka. Ini bisa sangat bermanfaat saat menggunakan dengan CloudFormation cara-cara berikut:

  • Perencanaan arsitektur: Merancang dan memvalidasi arsitektur infrastruktur sebelum implementasi

  • Modernisasi templat: Visualisasikan templat yang ada untuk memahami strukturnya dan mengidentifikasi peluang untuk perbaikan

  • Pelatihan dan orientasi: Bantu anggota tim baru memahami CloudFormation konsep dan hubungan AWS layanan melalui pembelajaran visual

  • Komunikasi pemangku kepentingan: Menyajikan desain infrastruktur kepada pemangku kepentingan non-teknis menggunakan representasi visual yang jelas

  • Tinjauan kepatuhan: Gunakan diagram visual untuk memfasilitasi tinjauan keamanan dan kepatuhan terhadap desain infrastruktur Anda

  • Tinjauan kepatuhan: Gunakan diagram visual untuk memfasilitasi tinjauan keamanan dan kepatuhan terhadap desain infrastruktur Anda

Untuk informasi selengkapnya tentang Infrastructure Composer, lihat Apa itu? AWS Infrastructure Composer .

Pertimbangkan AWS Cloud Development Kit (AWS CDK) untuk menggunakan infrastruktur yang kompleks

Untuk persyaratan infrastruktur yang kompleks, pertimbangkan untuk menggunakan CDK untuk menentukan sumber daya cloud Anda menggunakan bahasa pemrograman yang sudah dikenal seperti TypeScript, Python, Java, dan .NET. AWS CDK menghasilkan CloudFormation template dari kode Anda, memungkinkan Anda untuk memanfaatkan kemampuan penuh CloudFormation saat menggunakan abstraksi dan konstruksi pemrograman bahasa pilihan Anda.

AWS CDK Ini menyediakan konstruksi tingkat tinggi yang merangkum praktik terbaik dan menyederhanakan definisi pola infrastruktur umum. Ini dapat secara signifikan mengurangi jumlah kode yang diperlukan untuk menentukan infrastruktur Anda sambil memastikan kepatuhan terhadap praktik terbaik.

Untuk informasi lebih lanjut tentang CDK, lihat AWS Cloud Development Kit (AWS CDK).

Gunakan IAM untuk mengontrol akses

IAM adalah AWS layanan yang dapat Anda gunakan untuk mengelola pengguna dan izin mereka. AWS Anda dapat menggunakan IAM CloudFormation untuk menentukan CloudFormation tindakan apa yang dapat dilakukan pengguna, seperti melihat templat tumpukan, membuat tumpukan, atau menghapus tumpukan. Selain itu, siapa pun yang mengelola tumpukan CloudFormation akan memerlukan izin untuk sumber daya dalam tumpukan tersebut. Misalnya, jika pengguna ingin menggunakan CloudFormation untuk meluncurkan, memperbarui, atau menghentikan EC2 instans Amazon, mereka harus memiliki izin untuk memanggil tindakan Amazon EC2 yang relevan.

Dalam kebanyakan kasus, pengguna memerlukan akses penuh untuk mengelola semua sumber daya dalam templat. CloudFormation membuat panggilan untuk membuat, memodifikasi, dan menghapus sumber daya atas nama mereka. Untuk memisahkan izin antara pengguna dan CloudFormation layanan, gunakan peran layanan. CloudFormation menggunakan kebijakan peran layanan untuk melakukan panggilan, bukan kebijakan pengguna. Untuk informasi selengkapnya, lihat AWS CloudFormation peran layanan.

Menerapkan prinsip hak istimewa paling sedikit

Saat mengonfigurasi peran IAM untuk peran CloudFormation layanan atau untuk sumber daya yang dibuat oleh templat Anda, selalu terapkan prinsip hak istimewa paling sedikit. Berikan hanya izin yang diperlukan untuk fungsionalitas yang dimaksud, dan hindari penggunaan izin wildcard bila memungkinkan.

Gunakan IAM Access Analyzer untuk meninjau izin yang diberikan ke peran CloudFormation layanan Anda dan mengidentifikasi izin yang tidak digunakan yang dapat dihapus. Tinjau dan perbarui kebijakan IAM secara teratur untuk memastikan kebijakan tersebut tetap selaras dengan persyaratan keamanan Anda.

Amankan parameter sensitif

Untuk informasi sensitif seperti kata sandi, kunci API, dan rahasia lainnya, gunakan AWS Systems Manager Parameter Store atau AWS Secrets Manager alih-alih menyematkannya langsung di templat Anda. Gunakan referensi dinamis dalam template Anda untuk mengambil nilai-nilai ini dengan aman selama operasi tumpukan.

Saat menggunakan parameter dalam templat Anda, setel NoEcho properti ke parameter sensitif true untuk mencegah nilainya ditampilkan di konsol, respons API, atau keluaran CLI. Ketahuilah bahwa NoEcho tidak mencegah nilai dicatat jika diteruskan ke layanan atau sumber daya lain yang mungkin mencatat nilainya.

Untuk informasi selengkapnya tentang penggunaan AWS Systems Manager Parameter Store dengan CloudFormation lihat Mendapatkan nilai plaintext dari AWS Systems Manager Parameter Store.

Untuk informasi selengkapnya tentang penggunaan NoEcho properti, lihat sintaks Parameter CloudFormation template.

Untuk informasi lebih lanjut tentang menggunakan AWS Secrets Manager dengan CloudFormation lihat Membuat AWS Secrets Manager rahasia di AWS CloudFormation.

Menerapkan kebijakan sebagai kode dengan AWS CloudFormation Guard

AWS CloudFormation Guard (cfn-guard) adalah policy-as-code alat sumber terbuka yang memungkinkan Anda untuk menentukan dan menegakkan aturan untuk template Anda CloudFormation . Gunakan cfn-guard untuk memastikan bahwa templat Anda mematuhi kebijakan organisasi, praktik terbaik keamanan, dan persyaratan tata kelola.

Integrasikan cfn-guard ke dalam CI/CD pipeline Anda untuk memvalidasi template secara otomatis terhadap aturan kebijakan Anda sebelum penerapan. Ini membantu mencegah sumber daya yang tidak sesuai diterapkan ke lingkungan Anda dan memberikan umpan balik awal kepada pengembang tentang pelanggaran kebijakan.

Untuk informasi lebih lanjut tentang Penjaga lihat Apa itu AWS CloudFormation Guard?

Лучший частный хостинг