Lồng nhau nếu lambda python
Hiện tại, tôi sử dụng AWS Lambda cho hầu hết tất cả các dự án của mình - từ ứng dụng Flask và bot Slack cho đến các công cụ giám sát và công việc định kỳ. Tôi thích việc triển khai thứ gì đó có giá trị rẻ và dễ dàng như thế nào Python là ngôn ngữ yêu thích của tôi, nhưng việc xử lý các gói Python trong Lambda có thể khó khăn. Nhiều gói quan trọng cần biên dịch các tiện ích mở rộng C, như psycopg2 để truy cập Postgres hoặc numpy, scipy, pandas hoặc sklearn để phân tích số. Nếu biên dịch chúng trên hệ thống Mac hoặc Windows, bạn sẽ gặp lỗi khi Lambda cố tải chúng Đường dẫn nhập khẩu cũng cần sự khéo léo. Bạn có thể cài đặt các phụ thuộc trực tiếp vào thư mục cấp cao nhất của mình, nhưng điều đó làm lộn xộn không gian làm việc của bạn. Nếu bạn cài đặt chúng vào một thư mục con như 2 hoặc 3, bạn sẽ phải làm phiền với 4 của mình khi bắt đầu chức năng của mìnhNhưng có một cách tốt hơn nhiều. Trong bài đăng này, tôi sẽ chỉ cho bạn cách sử dụng plugin 5 cho Serverless FrameworkThiết lập ban đầuHãy chuẩn bị sẵn sàng cho môi trường của chúng ta. Nếu bạn đã cài đặt Node và NPM, hãy cài đặt Serverless Framework trên toàn cầu với
Bạn cũng sẽ cần định cấu hình môi trường của mình bằng thông tin đăng nhập AWS Ghi chú. nếu bạn cần xem lại cách cài đặt Framework hoặc nhận thông tin đăng nhập AWS, hãy xem phần Điều kiện tiên quyết ở đầu Hướng dẫn bắt đầu nhanh của chúng tôi Đối với bản trình diễn nhanh này, chúng tôi sẽ triển khai hàm Lambda sử dụng gói NumPy phổ biến Chúng tôi có thể tạo một dịch vụ từ một mẫu. Tôi sẽ sử dụng Python 3, nhưng nó cũng hoạt động với Python 2
Thao tác này sẽ tạo một dự án mẫu Serverless Python 3 tại đường dẫn đã cho ( 6) với tên dịch vụ là 7. Bạn sẽ cần thay đổi thư mục đó và tạo một môi trường ảo để phát triển cục bộ(Ghi chú. đọc thêm tại đây về cách thức và lý do sử dụng môi trường ảo với Python. ) ________số 8Hãy thiết lập chức năng chúng tôi muốn triển khai. Chỉnh sửa nội dung của 8 để nó chứa nội dung sau 0Đây là một chức năng cực kỳ đơn giản sử dụng một ví dụ từ NumPy Quick Start. Khi làm việc với Lambda, bạn sẽ cần xác định một hàm chấp nhận hai đối số. 9 và 0. Bạn có thể đọc thêm tại AWS về Trình xử lý hàm Lambda cho PythonLưu ý hai dòng cuối cùng của tệp, cung cấp cho chúng tôi cách nhanh chóng kiểm tra chức năng cục bộ. Nếu chúng ta chạy 1, nó sẽ chạy hàm 2 của chúng ta. Hãy cho nó một shot 5À, chúng tôi chưa cài đặt 3 trong môi trường ảo của chúng tôi. Hãy làm điều đó ngay bây giờ và lưu các phiên bản gói của môi trường của chúng ta vào tệp 4 8Nếu chúng ta chạy lệnh cục bộ ngay bây giờ, chúng ta sẽ thấy đầu ra mà chúng ta muốn 9Hoàn hảo Triển khai dịch vụ của bạnHàm của chúng tôi đang hoạt động cục bộ và đã sẵn sàng để chúng tôi triển khai lên Lambda. Chỉnh sửa tệp 5 để trông giống như sau 1Đây là một dịch vụ cơ bản được gọi là 7. Nó sẽ triển khai một Python 3 duy nhất. 6 có tên là 3 tới AWS và điểm bắt đầu cho hàm 3 là hàm 9 trong mô-đun 8Bước cuối cùng của chúng tôi trước khi triển khai là thêm plugin 5. Tạo một gói. json để lưu các phụ thuộc nút của bạn. Chấp nhận các giá trị mặc định, sau đó cài đặt plugin 8Để định cấu hình tệp 5 của chúng tôi để sử dụng plugin, chúng tôi sẽ thêm các dòng sau vào tệp 5 của chúng tôi 1Ghi chú. một phiên bản trước của bài viết này thiết lập 04 thay vì 05. Bạn sẽ cần 5 v3. 0. 5 hoặc cao hơn cho tùy chọn này
Phần 50 đăng ký plugin với Framework. Trong phần 51, chúng tôi yêu cầu plugin sử dụng Docker khi cài đặt các gói bằng pip. Nó sẽ sử dụng bộ chứa Docker tương tự như môi trường Lambda để các tiện ích mở rộng được biên dịch sẽ tương thích. Bạn sẽ cần cài đặt Docker để làm việc nàyPlugin hoạt động bằng cách nối vào Framework trên lệnh triển khai. Trước khi gói của bạn được nén, nó sử dụng Docker để cài đặt các gói được liệt kê trong tệp 4 của bạn và lưu chúng vào thư mục 53. Sau đó, nó liên kết tượng trưng nội dung của 53 vào thư mục cấp cao nhất của bạn để quá trình nhập Python hoạt động như mong đợi. Sau khi triển khai xong, nó sẽ dọn sạch các liên kết tượng trưng để giữ cho thư mục của bạn sạch sẽ 0Tuyệt quá. Hãy gọi hàm 3 của chúng ta và đọc nhật ký 1Và nó đây rồi. Bạn đã có NumPy trong Lambda của mình Hãy chắc chắn kiểm tra repo để biết chức năng bổ sung, bao gồm tự động nén thư viện trước khi triển khai, điều này có thể giúp ích rất nhiều cho các thư viện số lớn hơn trong Python Xin chân thành cảm ơn nhóm United Income và đặc biệt là Daniel Schep đã tạo ra gói 5. Nếu bạn muốn làm việc toàn thời gian không có máy chủ, hãy xem United Income. Họ sử dụng kiến trúc 100% không có máy chủ cho mọi thứ, từ phục vụ ứng dụng web của họ đến chạy hàng triệu mô phỏng tài chính và họ luôn tìm kiếm các kỹ sư tài năng để tham gia vào nhóm đang phát triển của họ ở Washington, DC |