AWS CloudFormation — 101
การสร้าง Infrastructure ไม่ได้ทําได้เพียงแค่กดบนหน้า GUI อย่างเดียว เรายังสามารถเขียน Infrastructure เป็น Yaml / JSON file ทิ้งไว้ก่อน แล้วค่อยให้ใครนําไปใช้ก็ได้เหมือน template file สําหรับสร้าง Infrastructure ก็ได้
ซึ่ง Service นั้นของ AWS ก็คือ CloudFormation ที่จะทําหน้าที่สร้าง Infrastructure จาก JSON template ให้เราตามที่เราเขียนไว้ (Infrastructure as Code) โดยเราจะเรียกว่า resources ต่างๆๆที่สร้างเสร็จแล้วว่า Stack
CloudFormation Structure
CloudFormation แบ่งออกเป็นส่วนๆได้ตามนี้
- AWSTemplateFormatVersion
version ของ CloudFormation ที่เราเรียกใช้ API - Description
text ที่อธิบายว่า template ทําอะไรบ้าง - Metadata
ข้อมูลเพิ่มเติมของ template - Parameters
Values ที่ส่งเข้ามาตอน runtime ของการสร้าง Infrastructure ซึ่งเราสามารถอ้างอิงจาก Resources หรือ Output section ได้ - Mappings
Key-value ที่สามารถนําไปใช้เป็น Parameter ร่วมกับ Condition section ได้ - Conditions
เป็นการสร้างเงื่อนไขท่ไว้เช็คว่า resource ของเราถูกสร้างขึ้นหรืออัพเดตได้ถูกต้องมั้ย - Transform
ให้มองเหมือนเป็นการเปลี่ยน Cloudformation template ไปเป็นservice ที่เจาะจงสําหรับสิ่งนั้นเลยเพื่อใช้ในการทําไรบางอย่าง เช่น สําหรับการสร้าง Lambda-based application ด้วย AWS Serverless Application Model https://github.com/awslabs/serverless-application-specification
หรือ การทํา CodeDeploy แบบ Blue and Green deployment เราก็จะต้อง transform มัน - Resources
ใช้เพื่อในการระบุ resources ที่เราจะสร้างขึ้นมาใช้งาน เช่น EC2 S3 หรือ resource อื่นๆๆ - Outputs
ใช้เพื่อระบุในการส่งค่ากลับมาเมื่อเราสั่ง view stack’s ของเรา เช่น ใช้ CLI ในการดูข้อมูลของ stack output จะเป็นส่วนที่เราระบุค่านั้นเอง