CloudFormation

CloudFormation là gì
- CloudFormation là một cách tiếp cận declarative (khai báo) để mô tả hạ tầng AWS của bạn, cho bất kỳ loại tài nguyên nào (hầu hết các loại tài nguyên đều được hỗ trợ).
- Ví dụ, trong một template CloudFormation, bạn có thể định nghĩa:
- Tôi muốn một security group
- Tôi muốn hai EC2 instances sử dụng security group này
- Tôi muốn một S3 bucket
- Tôi muốn một load balancer (ELB) đặt phía trước các máy này
- Sau đó, CloudFormation sẽ tạo ra các tài nguyên này cho bạn, theo đúng thứ tự, và với đúng cấu hình mà bạn đã chỉ định.
Lợi ích của AWS CloudFormation
- Infrastructure as Code (IaC)
- Không có tài nguyên nào được tạo thủ công, điều này rất tốt cho việc kiểm soát.
- Mọi thay đổi đối với hạ tầng đều được rà soát thông qua mã nguồn.
- Chi phí (Cost)
- Mỗi tài nguyên trong stack đều được gắn tag định danh, giúp bạn dễ dàng xác định stack đó tiêu tốn bao nhiêu chi phí.
- Bạn có thể ước tính chi phí tài nguyên của mình thông qua CloudFormation template.
- Chiến lược tiết kiệm chi phí: Trong môi trường Dev, bạn có thể tự động xóa template lúc 5 giờ chiều và tái tạo lại lúc 8 giờ sáng hôm sau một cách an toàn.
- Tăng năng suất (Productivity)
- Có thể hủy và tạo lại toàn bộ hạ tầng trên cloud một cách linh hoạt (on-the-fly).
- Tự động tạo sơ đồ (Diagram) từ template của bạn.
- Lập trình theo kiểu khai báo (Declarative programming) – không cần phải xử lý thủ công thứ tự tạo tài nguyên hoặc orchestration logic.
- Don’t re-invent the wheel)
- Tận dụng các template có sẵn trên internet.
- Tận dụng tài liệu chính thức để tiết kiệm thời gian và effort.
- Hỗ trợ (gần như) tất cả tài nguyên AWS
- Mọi dịch vụ được dùng trong khóa học này đều được hỗ trợ.
- Bạn có thể dùng “custom resources” cho những tài nguyên chưa được CloudFormation hỗ trợ trực tiếp.
CloudFormation + Application Composer
- Ví dụ: Stack CloudFormation triển khai WordPress
- Chúng ta có thể:
- Nhìn thấy tất cả các tài nguyên (all the resources)
- Nhìn thấy các mối quan hệ giữa các thành phần (relations between the components)

CloudFormation – Service Role
- IAM Role cho phép CloudFormation thực hiện thao tác create/update/delete tài nguyên trong stack thay mặt bạn.
- Cho phép user tạo/cập nhật/xóa stack mà không cần có quyền trực tiếp với các tài nguyên bên trong stack.
- Use cases:
- Khi bạn muốn đảm bảo nguyên tắc "least privilege" – user chỉ cần quyền tối thiểu.
- Nhưng bạn không muốn cấp toàn bộ quyền tạo tài nguyên AWS cho user – thì để CloudFormation thực hiện thay thông qua Service Role.
- Yêu cầu:
- User phải có quyền
iam:PassRoleđể cho phép CloudFormation assume (nhận) role này. - Minh họa đơn giản:
- Giả sử bạn là user
dev-user, và bạn chạy lệnh:aws cloudformation create-stack --template-body file://ec2.yml --role-arn arn:aws:iam::123456789012:role/MyServiceRole
- Role này (
MyServiceRole) có quyền tạo EC2. - Bạn chỉ là dev, bạn không có ec2:RunInstances, bạn chỉ submit CloudFormation stack thôi.
- Giả sử bạn là user
- 🔐 Nhưng AWS cần biết:
- ❓ Bạn có được phép giao cái role
MyServiceRoleđó cho CloudFormation không?
→ Đây chính là tác dụng củaiam:PassRole. - Nếu bạn có
iam:PassRolecho cái role đó, CloudFormation được phép assume cái role đó để chạy.
- ❓ Bạn có được phép giao cái role
- User phải có quyền
Bạn thấy bài này thế nào?