Gói mặc định AWS Lambda Python

AWS Lambda là dịch vụ điện toán serverless cho phép bạn chạy mã mà không cần cung cấp hoặc quản lý máy chủ, tạo logic thay đổi quy mô cụm theo khối lượng công việc, duy trì tích hợp sự kiện hoặc quản lý thời gian chạy. Bạn có thể viết các hàm Lambda bằng ngôn ngữ yêu thích của mình (Node. js, Python, Go, Java, v.v.) và sử dụng cả công cụ serverless và container, chẳng hạn như AWS SAM hoặc Docker CLI, để xây dựng, thử nghiệm và triển khai các chức năng của bạn

Trường hợp sử dụng của chúng tôi

Theo mặc định, Lambda cung cấp một số mô-đun bổ sung (như json, boto3, botocore, pip, python-dateutil, v.v.) ngoài Thư viện Python chuẩn. Tuy nhiên, điều này không phải lúc nào cũng đủ và chúng tôi có thể cần một vài gói khác như mô-đun Pandas, mysql, bông tuyết, v.v.

Để phục vụ cho việc này, người dùng cần áp dụng các lớp trong hàm Lambda

Giả sử chúng ta muốn sử dụng mô-đun Pandas trong hàm Lambda, hãy tiếp tục và áp dụng các lớp cho hàm Lambda để sử dụng Pandas trong mã của chúng ta

Các bước cấp cao

  1. Tạo phiên bản Amazon Linux và kiểm tra phiên bản Python trên phiên bản Ec2 này. [ Tùy chọn — Nâng cấp hoặc hạ cấp xuống phiên bản Python cụ thể dựa trên nhu cầu của bạn ]
  2. Tải xuống các gói cần thiết (gấu trúc cho trường hợp sử dụng của chúng tôi) và tạo một tệp zip
  3. Tải zip lên vùng chứa S3
  4. Tạo hàm Lambda (Chọn cùng phiên bản Python được sử dụng trên phiên bản Amazon Linux)
  5. Áp dụng lớp cho hàm Lambda
  6. Nhập thư viện Pandas vào mã và chạy thử
Trình diễn —

Bước 1. Tạo phiên bản Amazon Linux và đăng nhập vào phiên bản EC2 để chạy các lệnh bên dưới

mkdir python
cd python

Cài đặt các gói cần thiết trong thư mục Python bằng lệnh bên dưới

pip3 install pandas -t .
rm -rf *.dist-info

Bước 2. Di chuyển đến thư mục mẹ và nén thư mục Python. (Ghi chú. Zip phải có một thư mục Python)

zip -r pandas_layer.zip .

Bước 3. Tạo bộ chứa S3 (nếu chưa có) và tải tệp zip đã tạo ở Bước 2 lên. (Ghi chú. Đối với trường hợp sử dụng của chúng tôi, chúng tôi đã tạo một nhóm S3 có tên là các lớp demo nơi chúng tôi sẽ tải tệp zip này lên)

aws s3 cp pandas_layer.zip s3://demo-layers/

Nhóm S3 nơi pandas_layer. zip đã được tải lên

Bước 4. Tạo hàm lambda từ Bảng điều khiển AWS và chọn đúng phiên bản Python cũng được sử dụng trong phiên bản Amazon Linux. Điều này là do đôi khi các mô-đun không tương thích và bạn có thể gặp sự cố khi sử dụng các mô-đun này trong chức năng Lambda

Bước 5. Tạo lớp cho Lambda từ Bảng điều khiển AWS

Chuyển đến hàm Lambda mà lớp phải được áp dụng. Nhấp vào các lớp (được tô sáng trong hộp đen trong ảnh chụp màn hình bên dưới) sẽ chuyển hướng đến phần mà bạn có thể thêm các lớp

Nhấp vào nút 'Thêm lớp' để thêm lớp

Chọn 'Lớp tùy chỉnh' và từ trình đơn thả xuống, hãy chọn lớp của bạn ('pandas_layer')

Bước 6. Nhập thư viện pandas vào mã và chạy thử để xem nó có hoạt động tốt không

Thực hiện kiểm tra thành công, điều này cho biết lớp đã được áp dụng chính xác. Làm tốt lắm, bạn đã làm được

Tương tự, bạn có thể làm theo các bước trên để sử dụng các mô-đun khác trong Lambda. Một số tổ chức cũng tạo một mã zip chứa một số mã phổ biến để quy trình/thủ tục tiêu chuẩn của họ được tuân theo trong mỗi mã thay vì có một mã trùng lặp

AWS Lambda là giải pháp phù hợp khi tạo quy trình công việc ngắn hoặc lên lịch cho các công việc CRON đơn giản có thể chạy trong tối đa 15 phút. Phần tốt nhất về nó là người ta không cần phải lo lắng về việc thiết lập môi trường máy tính vì tất cả đều không có máy chủ. Bạn thậm chí có thể sử dụng nó làm công cụ điều phối để kích hoạt các tác vụ ECS hoặc AWS Batch của mình. Có thể còn rất nhiều thứ khác nữa nhưng tôi chưa khám phá hết

Thời gian chạy Python trong Lambda đi kèm với bộ thư viện tiêu chuẩn riêng. Rất nhiều thư viện như boto3, yêu cầu, e. t. c đã được cài đặt nên bạn có thể nhập ngay và tạo hàm lambda của mình. Nhưng vấn đề phát sinh khi bạn muốn sử dụng các thư viện không có sẵn (ngay cả Pandas cũng không có 😐)

Vì vậy, bây giờ để giải quyết vấn đề này, người ta có thể làm theo bất kỳ cách tiếp cận nào trong số này

  1. Gói triển khai AWS. Đóng gói mã và tất cả các phần phụ thuộc vào tệp ZIP và tải mã lên AWS. Không thấy điều này hữu ích vì bạn luôn cần tải lên các gói ngay cả khi bạn đang sử dụng cùng một thư viện mỗi lần. Chắc chắn, một chút phản trực giác
  2. Lớp AWS Lambda. Chỉ cần đóng gói các phần phụ thuộc vào tệp ZIP và tải tệp đó lên AWS. Ngoài ra, sau khi một lớp được xác định, tất cả các phần phụ thuộc cơ bản của lớp đó có thể được sử dụng bởi bất kỳ hàm Lambda nào

Tôi cảm thấy cách tiếp cận thứ hai là cách tốt nhất vì nó tiết kiệm rất nhiều thời gian, không gian và thúc đẩy khả năng tái sản xuất. Tôi sẽ chỉ thảo luận về cách tiếp cận này từ bây giờ

Xin lưu ý. Lambda sử dụng môi trường amazon linux làm hệ điều hành của nó. Do đó, tất cả các gói python mà bạn cài đặt trên máy tính xách tay/PC Windows của mình có thể không hoạt động trên đó. Các gói được cài đặt trên các bản phân phối dựa trên Linux như Ubuntu hoạt động. Mac cũng sẽ hoạt động nhưng không chắc chắn. Sử dụng Docker trên máy windows của tôi, tôi sẽ tải các gói được cài đặt trên Ubuntu lên lớp lambda của mình. Vì vậy, tôi cũng khuyên bạn nên cài đặt Docker nếu chưa có

Bây giờ, đây là nơi chúng tôi bắt đầu thêm các gói cần thiết vào Lớp Lambda. Xin lỗi vì tôi đã lạc đề khỏi chủ đề, nhưng tôi nghĩ tốt hơn hết là nên đưa ra một cái nhìn tổng quan. )

Chỉ cần làm theo các bước dưới đây theo thứ tự. Các lệnh được tô sáng sẽ chạy trong CLI của bạn

  1. docker run ubuntu. Kéo hình ảnh nếu không có ở đó và chạy một vùng chứa
  2. apt update. Cập nhật công cụ gói nâng cao
  3. apt install python3.8. Cài đặt Python (cẩn thận với phiên bản. Tôi đang cài đặt 3. số 8)
  4. apt install python3-pip. cài đặt pip
  5. ________số 8_______. Tạo một thư mục nơi bạn sẽ cài đặt các gói (Đảm bảo đường dẫn thư mục giống nhau. Tên thư mục đầu tiên có thể do bạn chọn như là ‘lambda_layer’ trong trường hợp của tôi. Chỉ cần thận trọng với phiên bản python)
  6. pip3 install -t lambda_layer/python/lib/python3.8/site-packages/. Cài đặt các gói python cần thiết vào thư mục đã tạo. Đối với nhiều gói, các gói riêng biệt theo không gian
  7. apt-get install zip. Cài đặt zip nếu chưa có
  8. cd lambda_layer. CD vào thư mục được thực hiện
  9. zip -r python.zip *. Lưu trữ tất cả các gói đã cài đặt vào một tệp ZIP
  10. Mở một phiên nhắc lệnh mới trên máy tính của bạn cạnh nhau
  11. docker ps -a. Liệt kê tất cả các container đang chạy
  12. Sao chép ID CONTAINER của hình ảnh ubuntu của bạn. Đó là một chữ và số, chẳng hạn như 79e37f5ff0db
  13. apt update0 : Copy the zip file from docker container to your PC using this convention — docker cp :
  14. Tải con trăn lên. zip trực tiếp vào lớp lambda nếu nó nhỏ hơn 10 MB, nếu không, trước tiên hãy tải tệp đó lên s3 và nhập đường dẫn khi xác định lớp lambda

Lúc đầu, đây có vẻ như là rất nhiều bước. Tuy nhiên, như tôi đã nói, đây là hoạt động một lần và sau khi tải lên, bất kỳ người dùng nào cũng có thể sử dụng các thư viện này bằng cách thêm lớp tương ứng vào chức năng lambda của họ

Tôi hy vọng rằng bạn thấy bài viết này hữu ích. Tôi đã dành rất nhiều thời gian để cố gắng tìm ra cách thêm thư viện vào các lớp lambda và nghĩ đến việc chia sẻ nó. Vui lòng liên hệ với tôi trong trường hợp có bất kỳ thắc mắc nào. )

AWS Lambda có những mô-đun Python nào?

Nói chung, AWS Lambda có nhiều khả năng hơn, hỗ trợ nhiều ngôn ngữ hơn và đang nhanh chóng trở thành dịch vụ đáng tin cậy để điện toán trong Đám mây AWS. Dành riêng cho Python, AWS Lambda hiện hỗ trợ Python 2. 7 và 3. 6. .
Đám mây AWS9
docker
Phiên bản bản dựng EC2

Những gói nào được bao gồm trong Lambda?

Bạn sử dụng gói triển khai để triển khai mã chức năng của mình cho Lambda. Lambda hỗ trợ hai loại gói triển khai. hình ảnh vùng chứa và. lưu trữ tệp zip .

Tôi có thể sử dụng các gói Python với AWS Lambda không?

Mô tả ngắn. Các gói Python chứa mã đã biên dịch (ví dụ:. NumPy và pandas) không phải lúc nào cũng tương thích với thời gian chạy Lambda theo mặc định . Nếu bạn cài đặt các gói này bằng pip, thì các gói sẽ tải xuống và biên dịch gói tên mô-đun cho kiến ​​trúc của máy cục bộ.

Boto3 có được cài đặt sẵn trong Lambda không?

Chúng được cài đặt sẵn , theo tài liệu chính thức. Mã của bạn chạy trong môi trường bao gồm SDK dành cho Python (Boto3), với thông tin xác thực từ vai trò AWS Identity and Access Management (IAM) mà bạn quản lý.