Bagaimana saya dapat dengan cepat dan efektif debug CloudFormation template?

CloudFormation adalah kuat AWS fasilitas yang memungkinkan program penciptaan AWS sumber daya tumpukan, seperti web tier yang application, a high performance computing cluster, atau seluruh aplikasi stack, dengan satu panggilan API. Hal ini sangat kuat. Menggunakan hal ini tentu dianggap baik AWS praktek, terutama ketika itu's dikombinasikan dengan Chef Boneka atau awan-init. Debugging itu mendorong saya untuk wakil.

Produksi contoh: saham mongodb cluster templates tidak't bekerja untuk saya. Saya don't benar-benar tahu mengapa. I'm yakin itu's sesuatu yang sederhana seperti itu hampir selalu. Masalah saya isn't yang saya dapat't tahu apa yang's salah. It's yang dibutuhkan stack antara 20 dan 30 menit untuk gagal, dan kemudian tiga atau empat menit untuk menghapus, asumsi itu menghapus sumber daya dengan baik pada semua.

Apa yang saya hilang? Aku tahu tentang --disable-rollback bendera dan menggunakannya seperti oksigen. Saya sudah lama belajar untuk membungkus keluar pesan dengan cfn-sinyal dan membuang mereka seperti ballast dari kapal yang tenggelam. Bagaimana saya bisa membuat template debugging proses lebih cepat, atau aku terjebak selamanya memperhatikan kesalahan-kesalahan saya setengah jam setelah aku membuat mereka?

Mengomentari pertanyaan (4)
Larutan

Gunakan aws cloudformation memvalidasi-template perintah di AWS CLI alat. Itu hanya memvalidasi apakah anda template valid JSON atau YAML, bukan apakah anda kunci dan nilai-nilai yang benar (misalnya doesn't memeriksa kesalahan ketik di kunci)

Komentar (5)

Pilihan lain, setahun kemudian, adalah untuk abstrak template ini ke pihak ke-3 perpustakaan, seperti troposfer. Perpustakaan konstruksi JSON muatan untuk anda, dan tidak banyak dari validasi di sepanjang jalan. Ini juga memecahkan "Wow mengelola 1000-line file JSON yakin sedih" masalah.

Komentar (1)

Bagaimana saya bisa membuat template debugging proses lebih cepat, atau aku terjebak selamanya memperhatikan kesalahan-kesalahan saya setengah jam setelah aku membuat mereka?

Berikut adalah beberapa praktek terbaik saran, dengan fokus khusus pada peningkatan iterasi kecepatan angin dan kompleks CloudFormation-template pembangunan:

Menggunakan CloudFormation alat untuk memvalidasi template dan tumpukan update

AWS telah diuraikan tersebut di sendiri praktek-Praktek Terbaik dokumen, jadi saya tidak't ulangi mereka:

Inti dari langkah ini adalah untuk menangkap jelas sintaks atau kesalahan logis sebelum benar-benar melakukan sebuah Stack pembuatan/pembaharuan.

Uji Daya isolasi

Sebelum menggunakan setiap individu CloudFormation Sumber daya di kompleks Stack, pastikan anda benar-benar memahami sepenuhnya bahwa Sumber daya's creation/update/menghapus perilaku, termasuk batasan pada penggunaan dan khas startup/teardown kali, dengan menguji perilaku mereka yang lebih kecil, standalone Tumpukan pertama.

  • Jika anda sedang mengembangkan atau menggunakan pihak ketiga Kustom sumber Daya, menulis unit test menggunakan perpustakaan sesuai untuk bahasa platform, untuk memastikan aplikasi logika berperilaku seperti yang diharapkan seluruh penggunaan-kasus.
  • Diketahui bahwa jumlah waktu untuk individu Sumber daya untuk membuat/update/delete dapat bervariasi antara Jenis Sumber daya, tergantung pada perilaku yang mendasari panggilan API. Misalnya, kompleks AWS::CloudFront::Distribution sumber daya dapat kadang-kadang mengambil 30-60 menit buat/update/hapus, sementara AWS::EC2::SecurityGroup update dalam hitungan detik.
  • Sumber Daya individu mungkin memiliki bug/masalah/keterbatasan dalam pelaksanaannya, yang jauh lebih mudah untuk debug dan mengembangkan workarounds untuk saat diuji dalam isolasi, bukan hanya jauh lebih besar Stack. Perlu diingat keterbatasan seperti AWS Layanan Batas tergantung pada individu AWS pengaturan Akun, atau Wilayah Ketersediaan layanan tergantung pada Daerah di mana anda membuat Tumpukan anda.

Membangun rumit tumpukan sedikit demi sedikit

Ketika melakukan Stack pembuatan/update, kegagalan dalam salah satu Sumber daya akan menyebabkan Stack untuk rollback seluruh set dari perubahan Sumber daya, yang tidak perlu dapat menghancurkan lainnya berhasil diciptakan sumber Daya dan memakan waktu yang sangat lama ketika bangunan yang rumit stack dengan panjang ketergantungan-grafik sumber Daya terkait.

Solusi untuk ini adalah untuk membangun Tumpukan anda secara bertahap lebih kecil Update batch, menambahkan sumber Daya satu (atau beberapa) pada suatu waktu. Dengan cara ini, jika/ketika terjadi kegagalan dalam sumber daya penciptaan/update, rollback doesn't menyebabkan seluruh Stack's sumber daya untuk dihancurkan, hanya mengatur sumber Daya yang berubah dalam Update terbaru.

Memantau kemajuan stack update

Pastikan untuk Memantau Kemajuan anda Stack Update dengan melihat stack's peristiwa sementara penciptaan/update dilakukan. Ini akan menjadi titik awal untuk debugging masalah lebih lanjut dengan masing-masing sumber daya.

Komentar (1)

Apakah anda melihat AWS CloudFormation Template Editor yang termasuk dalam AWS Toolkit untuk Eclipse? Memiliki sintaks, pernyataan penyelesaian, dan penyebaran AWS CloudFormation.

Komentar (2)

Terlambat ke pesta tapi aku mungkin juga menambahkan bahwa tidak ada salahnya meluangkan sedikit waktu mengkonfigurasi dan belajar editor anda. Aku tahu itu terdengar laughably dasar sebagai jawaban tapi mencoba itu.

Dalam kasus saya, dengan vim, saya tampil jauh lebih baik setelah saya mengambil beberapa waktu menginstal json sintaks plugin, dan juga (akhirnya) memahami teknik lipat untuk menavigasi besar LIH file dengan mudah. Saya sekarang menunjukkan kesalahan ketik (koma di mana mereka seharusnya't dll) dan warna yang menyoroti menghemat banyak waktu jelas memberikan petunjuk visual.

Hal ini mungkin dapat membantu mengurangi kesalahan sintaks, tetapi di-template kesalahan logis yang baik tetap dengan alat-alat lain. Mudah-mudahan suatu hari akan ada "preview" mode on LIH.

Komentar (2)

Untuk JetBrains IDEs (IntelliJ IDEA PhpStorm WebStorm PyCharm RubyMine AppCode CLion Gogland DataGrip Pengendara Android Studio ), ada di AWS CloudFormation plugin yang mendukung dalam pemeriksaan JSON dan YAML CFN template

Komentar (0)

The AWS CloudFormation linter memberikan tambahan analisis statis di luar aws cloudformation memvalidasi-template

Ini akan memberitahu anda jenis sumber daya dan jenis misalnya tidak tersedia di daerah tertentu, memvalidasi nilai properti terhadap nilai yang diizinkan, menangkap melingkar sumber daya dependensi, kesalahan sintaks, dan banyak lagi

Selain CLI, salah satu yang paling populer mekanisme untuk mengingat untuk menjalankan linter adalah menginstal plugin editor seperti Kode Visual Studio ekstensi yang berjalan pada setiap file save

Mekanisme lain seperti pre-commit Git kait dijelaskan here

Komentar (0)

Selain AWS CLI aws cloudformation memvalidasi-template perintah ada node yang berbasis cfn-cek alat yang lebih dalam validasi.

Komentar (0)

Jika anda berurusan dengan EC2 mesin, maka saya akan merekomendasikan anda untuk login ke EC2 mesin dan ekor boot.file log (/var/log/boot.log in RHEL6/Centos). File ini akan diperbarui dengan semua shell kegiatan (kegiatan seperti: instalasi, men-download file, menyalin file-file dll.).

Juga, gunakan editor seperti http://www.jsoneditoronline.org/ untuk mendapatkan POHON representasi dari JSON anda. Ini membantu anda untuk memeriksa urutan dari JSON elemen.

Dan ketika anda memperbarui file selalu menggunakan alat-alat seperti http://www.git-tower.com/blog/diff-tools-mac atau sebenarnya sistem kontrol versi untuk memastikan bahwa anda tidak sengaja mengubah sesuatu yang mungkin istirahat naskah anda.

Komentar (0)

Baru-baru ini fitur baru yang ditambahkan ke Cloudformation ini desember lalu adalah penambahan tambahan Jenis Parameter. Ini Jenis baru memungkinkan template anda untuk melakukan yang lebih kuat pengecekan data, dan juga dapat "gagal-fast" ketika menciptakan sumber daya dan bersarang Cloudformation tumpukan. Anda juga memiliki kemampuan untuk memberikan yang lebih baik yang dapat dibaca manusia kustom pesan error ketika tidak valid nilai-nilai yang diwariskan dalam menggunakan baru ConstraintDescription atribut.

Jenis baru yang sangat membantu ketika berhadapan dengan berbagai VPC sumber daya. Anda dapat memastikan bahwa Parameter untuk template anda adalah tipe yang benar, dan yang eksplisit tentang mengharapkan nilai tunggal vs. Daftar.

Misalnya:

"Parameters" : {
  "SingleGroup": { "Type": "AWS::EC2::SecurityGroup::Id", ...},
  "GroupList": {"Type": "List", ...}
}
Komentar (0)

Anda juga dapat membuat penggunaan CloudFormation Desainer yang tersedia dari amazon di sini: https://console.aws.amazon.com/cloudformation/designer/home?region=us-east-1

Hanya paste template anda (JSON) pada "Template" panel, dan kemudian klik pada tick simbol untuk memvalidasi template anda. Setiap kesalahan akan muncul di "Kesalahan" pane.

Semoga ini bisa membantu.

Komentar (0)

Silakan checkout saya cloudformation validator di https://pypi.org/project/cloudformation-validator/

Ini akan memvalidasi skema dan kemudian memvalidasi lagi daftar aturan, dan memungkinkan untuk aturan adat. Aku juga memungkinkan untuk integrasi yang mudah dengan penggunaan alat.

Komentar (0)