Aws lambda chạy tập lệnh python trên ec2

Người quản lý đang phàn nàn về chi phí tăng cao của phòng thí nghiệm phát triển của chúng tôi và cần tiết kiệm tiền bằng cách dừng (ví dụ này) 3 phiên bản ec2 của chúng tôi sau khi tất cả các kỹ sư đã hết giờ

Khách quan

Đây là hướng dẫn mở rộng nhưng thân thiện với người mới bắt đầu về cách sử dụng python & lambda để tự động khởi động và dừng các phiên bản EC2. Nhưng trước khi đến sự kiện chính, chúng tôi có một số vật dụng vệ sinh mà trước tiên chúng tôi phải vượt qua

con trăn. Theo trang Câu hỏi thường gặp về python. org, Python là ngôn ngữ lập trình hướng đối tượng, thông dịch, tương tác. Python mạnh mẽ, linh hoạt và thường được khuyến nghị là ngôn ngữ lập trình đầu tiên để học vì cú pháp dễ đọc của nó. Python được sử dụng nhiều trong DevOps để tự động hóa các tác vụ, chẳng hạn như tác vụ trong mục tiêu của chúng tôi

Lambda. một dịch vụ do AWS cung cấp cho phép các nhà phát triển chạy các chức năng hoặc đoạn mã trên đám mây. Lambda không có máy chủ nghĩa là không cần cung cấp các phiên bản EC2 hoặc quản lý bất kỳ máy chủ nào

Bây giờ chúng ta đã xem qua những điều thú vị, hãy bắt đầu với dự án của chúng ta

Bước 1. Khởi chạy EC2 theo cách thủ công

Bước đầu tiên trong dự án này là khởi chạy thủ công 3 phiên bản EC2. Các trường hợp này sẽ chỉ được sử dụng như một phương tiện để kiểm tra các chức năng lambda của chúng tôi

Trong bảng điều khiển AWS, hãy chuyển đến thanh tìm kiếm và nhập “EC2”. EC2 cũng có thể được tìm thấy trong các dịch vụ trong menu con “Tính toán”

Khi bảng điều khiển EC2 được hiển thị, ở phía bên trái, hãy nhấp vào tiêu đề nút màu cam “Launch Instance”

Với mục đích của dự án này, việc sử dụng các thẻ là cần thiết vì nó sẽ có ích sau này. Để các cài đặt còn lại làm mặc định. (Xem hình bên dưới)

Bây giờ chúng ta đã thiết lập và chạy các phiên bản của mình, hãy chuyển sang bước tiếp theo

Bước 2. Chính sách & Sáng tạo IAM

Bước thứ hai trong dự án này là tạo một chính sách và một vai trò sẽ được hàm lambda của chúng ta sử dụng

Trong bảng điều khiển AWS, hãy chuyển đến thanh tìm kiếm và nhập “IAM”. Bạn cũng có thể tìm thấy IAM trong các dịch vụ trong menu con “Bảo mật, Danh tính & Tuân thủ”

Khi bảng điều khiển IAM được hiển thị, ở phía bên trái, nhấp vào “Chính sách” rồi nhấp vào tiêu đề nút màu xanh lam “Tạo chính sách”

Trong menu “Select Service” và chọn EC2. Trang tiếp theo sẽ nhắc bạn chọn “Cấp độ truy cập”

Đối với quyền truy cập Đọc, hãy chọn “DecscribeTags”

Đối với quyền truy cập Danh sách, hãy chọn “DecscribeInstance,DescribeInstanceStatus,DescribeInstanceTypes”

Đối với quyền ghi, hãy chọn “StartInstances, StopInstances”

Trong phần “Tài nguyên”, chọn “tất cả tài nguyên”. Sau đó nhấp vào “Thêm quyền bổ sung”

Trong menu “Chọn dịch vụ”, nhập và chọn Nhật ký Cloudwatch

Trong phần “Hành động”, vui lòng chọn tất cả các hành động trong nhật ký đám mây trong danh mục con “hành động thủ công”. Danh mục này cấp cho chúng tôi tất cả quyền truy cập đọc và ghi

Trong phần “Tài nguyên”, chọn “tất cả tài nguyên”

(Xem hình bên dưới)

Bây giờ, hãy nhấp vào JSON để có biểu diễn trực quan về chính sách của chúng tôi. (Xem hình bên dưới)

Xin lưu ý rằng trong môi trường sản xuất, bạn sẽ muốn tuân thủ các nguyên tắc về đặc quyền tối thiểu. Có nghĩa là chỉ giới hạn quyền truy cập của người dùng đối với những gì cần thiết để họ hoàn thành nhiệm vụ công việc của mình

Sau đó click vào next để tạo tên và click vào “Create policy”

Khi chính sách của chúng tôi đã được tạo, ở phía bên trái, hãy nhấp vào “Vai trò” và sau đó nhấp vào tiêu đề nút màu xanh lam “Tạo vai trò”

Trên trang tiếp theo, chọn “Dịch vụ AWS” cho “Loại thực thể đáng tin cậy” và “Lambda” cho “Trường hợp sử dụng”, sau đó nhấp vào “tiếp theo”. (Xem hình bên dưới)

Trên trang tiếp theo, tìm kiếm và chọn chính sách đã tạo ở các bước trên, sau đó nhấp vào tiếp theo. (Xem hình bên dưới)

Sau đó bấm vào tiếp theo để tạo tên và bấm vào “Tạo vai trò”

Bây giờ chính sách và vai trò của chúng tôi đã được tạo, chúng tôi có thể đánh dấu bước này là hoàn thành và chuyển sang bước tiếp theo

Bước 3. Tạo Hàm Lambda

Bước thứ ba trong dự án này là tạo hàm lambda của chúng ta. Chúng tôi cũng sẽ chỉ định vai trò mà chúng tôi đã tạo ở bước trên để chức năng của chúng tôi có thể bắt đầu và dừng các phiên bản của chúng tôi khi cần

Trong bảng điều khiển AWS, hãy chuyển đến thanh tìm kiếm và nhập “Lambda”. Bạn cũng có thể tìm thấy Lambda trong các dịch vụ trong menu con “Tính toán”

Khi bảng điều khiển Lambda được hiển thị, ở phía bên tay phải, hãy nhấp vào nút màu cam có tiêu đề “Tạo chức năng”

Trên trang sau

1. nhấp vào “Tác giả từ đầu”

2. Tạo một tên cho chức năng của chúng tôi

3. Chọn “Trăn 3. 9” cho thời gian chạy của chúng tôi

4. Chọn vai trò mà chúng ta đã tạo trước đó trong tùy chọn “Thay đổi vai trò thực thi mặc định”

5. Sau đó bấm vào “Tạo chức năng”

Dưới đây là mã python cần thiết để bắt đầu phiên bản ec2 của chúng tôi

Bước 4. Tạo quy tắc EventBridge để kích hoạt phiên bản EC2

Trong bước này, chúng ta sẽ tạo Quy tắc EventBridge kích hoạt các phiên bản EC2 của chúng ta. Vì Lambda được kích hoạt bởi các sự kiện, nên bất cứ khi nào một phiên bản EC2 bị dừng, nó sẽ gửi một sự kiện sẽ kích hoạt chức năng của chúng tôi

Trong bảng điều khiển AWS, hãy chuyển đến thanh tìm kiếm và nhập “EventBridge”. Khi trang được hiển thị, ở phía bên tay phải, nhấp vào tiêu đề nút màu cam “Tạo quy tắc”

Cung cấp tên và mô tả và bên dưới loại quy tắc, hãy chọn “quy tắc có mẫu sự kiện”

Trong trang sau, cuộn xuống mẫu sự kiện

1. Đối với nguồn sự kiện, hãy chọn Dịch vụ AWS

2. Đối với Dịch vụ AWS, chọn EC2

3. Đối với loại Sự kiện, chọn thông báo thay đổi trạng thái EC2

4. Chọn một trạng thái cụ thể và nhấp vào dừng

(Xem hình bên dưới)

Nhấp vào tiếp theo và trên trang sau

5. Chọn dịch vụ AWS cho các loại mục tiêu

6. Hàm Lambda để chọn mục tiêu

7. Chọn chức năng đã tạo ở các bước trước

Ở trang tiếp theo, hãy để mặc định như vậy rồi tiến hành “tạo quy tắc”

Bước 5. Kích hoạt sự kiện để tạo sự kiện thử nghiệm Lambda

Trong bước này, chúng ta sẽ kích hoạt một sự kiện để tạo sự kiện thử nghiệm Lambda

  1. Chọn phiên bản Dev, sau đó nhấp vào trạng thái phiên bản và chọn dừng phiên bản

2. Truy cập Cloudwatch, nhấp vào nhóm nhật ký và chọn nhật ký được tạo bởi các phiên bản của chúng tôi đã dừng sự kiện

3. Chọn trình đơn thả xuống thứ hai và sao chép mã JSON

4. Quay trở lại chức năng Lambda của bạn, nhấp vào kiểm tra, trong phần thả xuống, chọn định cấu hình sự kiện kiểm tra, sau đó dán mã JSON ở trên vào trang tiếp theo rồi lưu lại

Thực hiện theo các bước trên sẽ hữu ích khi chúng tôi sửa đổi mã chức năng của mình, vì chúng tôi sẽ không cần kích hoạt lại sự kiện kiểm tra để đảm bảo mã của chúng tôi hoạt động bình thường. Đồng thời xem xét id phiên bản được liên kết với phiên bản nhà phát triển của chúng tôi sẽ khớp với mã của chúng tôi

Bước 6. Sửa đổi quy tắc EventBridge

Trong bước này, chúng tôi sẽ sửa đổi Quy tắc EventBridge của mình từ trước đó. Làm như vậy sẽ đưa nó vào một lịch trình, do đó tự động hóa quá trình bắt đầu các phiên bản của chúng tôi

Quay trở lại EventBridge và nhấp vào “xem quy tắc”. Sau đó, trên trang tiếp theo, hãy chọn quy tắc đã tạo trước đó từ các bước ở trên và nhấp vào chỉnh sửa

Lịch trình chọn rồi nhấn next

Trong trang tiếp theo, hãy xác định mẫu lịch trình bằng cách sử dụng biểu thức cron. Nhấp để được trợ giúp. Nhấp vào tiếp theo để tiếp tục

Bước 7. Lặp lại Bước 3

Thực hiện theo các bước tương tự trong bước # 3 để tạo một chức năng hiện sẽ dừng các phiên bản EC2 của chúng tôi

Dưới đây là mã python của chúng tôi để dừng các phiên bản của chúng tôi

Bước 8. Lặp lại Bước 4

Thực hiện theo các bước tương tự trong bước # 4 để tạo EventBridge sẽ dừng các phiên bản EC2 của chúng tôi dựa trên một lịch trình cụ thể

Chọn chức năng được tạo mới nhất rồi chuyển sang bước tiếp theo

Bước 9. Kiểm tra tự động hóa

Với mục đích của hướng dẫn này, tôi sẽ lên lịch cho “Dev instance” của mình để tự động bắt đầu từ 1. 20 giờ sáng EST và tắt máy lúc 1 giờ. 25 giờ sáng. (Xem hình ảnh bên dưới)

Như bạn có thể thấy, phiên bản Dev hiện đang ở trạng thái "đã dừng"

Và lúc 1. 20 giờ sáng Đợi nó Et Voila. phép thuật đã xảy ra

Và lúc 1. 25 giờ sáng Đợi nó Et Voila. Phép màu lại xảy ra

Nếu bạn đã đi xa đến mức này và đã làm theo các bước ở trên thì bạn đã thành công và nên biết cách tận dụng python và lambda để tự động khởi động và dừng các phiên bản của bạn

Ngoài ra, vui lòng theo dõi tôi trên LinkedIn (nhấp vào liên kết), vì tôi đang tìm cách kết nối với những cá nhân có cùng chí hướng