Để tiết kiệnm chi phí cho môi trường dev, thì bạn có thể tắt Database vào buổi tối và bật lại vào sáng hôm sau, trong bài viết này mình xin chia sẽ cách để làm được điều đó một cách tự động thông qua Lambda và Cloudwatch.
Điều kiện tiên quyết
Có kiến thức cơ bản về python, chủ yếu dùng để debug.
máy tính đã cài sẵn docker, phục vụ cho việc testing local.
Một cụm Aurora, nếu cái này bạn có thể tự tạo nếu muốn làm lab mà không ảnh hưởng đến cụm hiện tại.
máy tính cài sẵn SAM, nếu chưa có thì tham khảo ở đây
Kiến trúc
MÌnh sẽ dùng Cloudwatch để trigger hàm Lambda,
Code python
Stop
Start
Để code có thể hoạt động mình cần hai biến môi trường là DB_IDENTIFIER và REGION
biến DB_IDENTIFIER là tên của cụm DB.
SAM template
Tiêp theo mình sẽ sùng SAM (một phiên bản nâng cấp của Cloudformation) để deploy function này, cùng xem qua phần cấu hình.
Đầu tiên là cấu hình run time, do mình dùng python, nên mình chọn run time là python 3.7, phần này mình sẽ để ở cấu hình global.
Về phần cấu hình biến môi trường thì mình sử dụng parameter để truyền vào, tùy thuộc vào tài khoảng của mỗi người mà giá trị này sẽ khác nhau.
Tiếp đến là phần cấu hình của hàm stop
Trong phần cấu hình này bao gồm cả phân quyền cho làmbda có thể stop DB instance và event trigger từ Cloudwatch, mình lên lịch là cứ mỗi 11 giờ đêm sẽ tắt cluster.
Cấu hình của hàm start
Cũng tương tự như hàm stop, mình lên lịch sẽ bật DB instance vào mỗi 7 giờ sáng.
File hoàn chỉnh.
Testing Local
Chuẩn bị thư mục dự án như hình sau
File template dùng để deploy, mặc định khi run SAM command, nó sẻ tự tìm đến file này. File này có nội dung như sau.
Mình dùng command sau để chạy lambda ở local thông qua docker, lưu ý cần thay biến Region bằng tên thực tế, vì khi chạy local biến này không tự gán được.
Command chạy function stop DB.
Command start DB.
Deoploy lên môi trường Cloud
Sau khi testing, đãm bảo code đã hoạt động đúng, bây giờ bạn sẽ deploy lên cloud, sử dụng command như sau. Lưu ý bạn cần tạo bucket để lưu code.