Tự động bật tắt EC2 Instance theo Schedule để tiết kiệm chi phí với Amazon EventBridge Chuyên mục Devops 2024-10-22 8 Lượt xem 7 Lượt thích 0 Bình luận
Trong môi trường phát triển và vận hành, việc quản lý chi phí là điều vô cùng quan trọng, đặc biệt khi sử dụng các tài nguyên như EC2 instance của AWS. Một cách tiết kiệm chi phí hiệu quả là tự động bật và tắt các EC2 instance theo lịch biểu phù hợp với nhu cầu sử dụng. Trong bài viết này, mình sẽ hướng dẫn cách tự động hóa việc bật và tắt EC2 instance vào các giờ cố định bằng Amazon EventBridge.
Tại sao cần tự động bật/tắt EC2 instance?
Khi sử dụng các EC2 instance phục vụ cho việc phát triển, thử nghiệm hoặc môi trường làm việc không liên tục, việc để các instance chạy 24/7 sẽ làm tăng chi phí mà không thực sự cần thiết. Bằng cách thiết lập lịch bật/tắt tự động, bạn có thể giảm thiểu thời gian chạy của instance chỉ khi thực sự cần thiết.
Ví dụ: Bạn có thể thiết lập EC2 bật lúc 7h sáng và tắt lúc 7h tối (giờ Việt Nam - UTC+7). Điều này giúp tối ưu chi phí cho các phiên làm việc ban ngày và tránh lãng phí tài nguyên vào ban đêm.
Công cụ cần thiết
- Amazon EventBridge: Dùng để tạo lịch biểu (schedule) tự động thực thi.
- AWS Lambda hoặc trực tiếp thông qua EventBridge: Để kích hoạt hành động bật/tắt EC2.
- EC2 instance: Server mà bạn muốn tự động bật/tắt.
Thiết lập tự động bật/tắt EC2 với Amazon EventBridge
Bước 1: Tạo các biểu thức cron cho lịch biểu
Amazon EventBridge hỗ trợ sử dụng các biểu thức cron để lập lịch tự động. Vì múi giờ của Việt Nam là Asia/Bangkok (UTC+7), bạn cần tính toán thời gian tương ứng với UTC.
Lịch biểu của chúng ta sẽ như sau:
- Bật EC2 lúc 7h sáng (theo giờ Việt Nam)
- Tắt EC2 lúc 7h tối (theo giờ Việt Nam)
Biểu thức cron tương ứng
Bạn có thể tạo hai rule với biểu thức cron để bật và tắt EC2 instance vào các giờ cố định trong tuần (thứ 2 đến thứ 6):
- Bật EC2 lúc 7h sáng (giờ Việt Nam):
0 7 ? * MON-FRI *
- Tắt EC2 lúc 7h tối (giờ Việt Nam):
0 19 ? * MON-FRI *
Giải thích biểu thức cron:
- 0 là phút (bật tắt vào phút thứ 30).
- 7 và 19 là giờ UTC tương ứng với 7h sáng và 7h tối giờ Việt Nam.
- ? là Day of month
- MON-FRI là từ thứ 2 đến thứ 6.
- * là mọi ngày và mọi tháng.
Bước 2: Tạo EventBridge Rule
- Vào AWS Management Console, tìm Amazon EventBridge.
- Chọn Create schedule.
- Đặt tên cho rule, ví dụ: StartEC2_7AM (cho lịch bật).
- Trong phần Schedule pattern, chọn Occurrence là Recurring schedule và nhập biểu thức cron đã tạo ở trên.
- Trong phần Select target, chọn EC2 và thiết lập hành động StartInstances (cho rule bật) hoặc StopInstances (cho rule tắt).
- Lặp lại các bước trên để tạo rule thứ hai cho việc tắt EC2 vào lúc 7h tối.
Bước 3: Tạo IAM Role cho EventBridge
Bạn cần cấp quyền cho EventBridge để có thể thực thi các hành động liên quan đến EC2 instance. Điều này được thực hiện bằng cách tạo một IAM Role với các quyền cần thiết.
Trust Relationship: Tạo IAM role với trust relationship sau để EventBridge có thể giả lập (assume) vai trò này:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "scheduler.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Permissions: Bạn có thể thêm quyền cho role này để quản lý EC2 và EventBridge nếu thấy cần thiết:
- AmazonEC2FullAccess: Cung cấp quyền điều khiển các instance EC2.
- AmazonEventBridgeFullAccess: Cho phép EventBridge thực hiện các tác vụ.
Lợi ích của việc sử dụng Amazon EventBridge
- Tiết kiệm chi phí: Bạn chỉ phải trả tiền cho thời gian sử dụng thực tế của EC2 instance, thay vì để chúng chạy liên tục.
- Tự động hóa dễ dàng: EventBridge cho phép bạn lên lịch tự động một cách dễ dàng mà không cần viết thêm code phức tạp.
- Tối ưu hóa hiệu suất làm việc: Bật server khi cần và tắt khi không sử dụng giúp bạn tránh lãng phí tài nguyên và chi phí.
Kết luận
Việc sử dụng Amazon EventBridge để tự động bật và tắt EC2 instance không chỉ giúp bạn tiết kiệm chi phí mà còn đơn giản hóa việc quản lý tài nguyên. Với các bước hướng dẫn chi tiết, hy vọng bạn có thể dễ dàng triển khai giải pháp này vào môi trường làm việc của mình. Hãy bắt đầu ngay hôm nay để tối ưu hóa chi phí và quản lý hiệu quả hơn!
Chúc bạn thành công với việc tự động hóa các tác vụ trên AWS!
Bình luận (0)