CloudFormation Advanced Features
Rollbacks
- Failed Create — ทุกอย่างถูกลบ (หรือเก็บไว้ด้วย DisableRollback)
- Failed Update — rollback ไป state ก่อนหน้า
ChangeSets
- Preview การเปลี่ยนแปลงก่อน apply
- ไม่สามารถบอกได้ว่า update จะสำเร็จหรือไม่
Nested Stacks
- Reusable components (เช่น shared ALB config)
- อัปเดตผ่าน parent stack
Cross-Stack References
- Outputs + Export — export values จาก stack หนึ่ง
- Fn::ImportValue — import ใน stack อื่น
StackSets
- Deploy stacks ข้าม multiple accounts/regions
- Admin account vs Target accounts
- รองรับ AWS Organizations — auto-deploy เมื่อเพิ่ม account ใหม่
Drift Detection
- ตรวจจับ manual changes ที่ทำนอก CloudFormation
Stack Policies
- ป้องกัน resources เฉพาะจากการถูก update (JSON policy)
Deletion Policies
- Delete (default) — ลบ resource เมื่อลบ stack
- Retain — เก็บ resource ไว้
- Snapshot — สร้าง snapshot ก่อนลบ (EBS, RDS, etc.)
Custom Resources (Lambda-backed)
AWS::CloudFormation::CustomResource
- สำหรับ resources ที่ CloudFormation ไม่รองรับ
- Use cases: empty S3 bucket ก่อนลบ, fetch AMI ID
Dynamic References
- Resolve SSM Parameter Store และ Secrets Manager values ตอน deploy
cfn-guard
- Open-source policy-as-code tool สำหรับ validate templates
สิ่งที่ควรจำ
- InsufficientCapabilitiesException — ต้อง acknowledge CAPABILITY_IAM/CAPABILITY_NAMED_IAM
- Termination Protection — ป้องกันการลบ stack โดยไม่ตั้งใจ