Mã của hàm AWS Lambda của bạn bao gồm các tập lệnh hoặc chương trình đã biên dịch và phần phụ thuộc của chúng. 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à. kho lưu trữ tệp zip
Để tạo gói triển khai cho một. zip, bạn có thể sử dụng một tệp lưu trữ tích hợp. tiện ích lưu trữ tệp zip hoặc bất kỳ tiện ích nào khác. tiện ích tệp zip [chẳng hạn như 7zip] cho công cụ dòng lệnh của bạn. Lưu ý các yêu cầu sau để sử dụng một. zip làm gói triển khai của bạn
Các. zip chứa mã chức năng của bạn và mọi phần phụ thuộc được sử dụng để chạy mã chức năng của bạn [nếu có] trên Lambda. Nếu chức năng của bạn chỉ phụ thuộc vào các thư viện tiêu chuẩn hoặc thư viện AWS SDK, thì bạn không cần đưa các thư viện này vào. tập tin zip. Các thư viện này được bao gồm trong môi trường thời gian chạy Lambda được hỗ trợ
Nếu. zip lớn hơn 50 MB, chúng tôi khuyên bạn nên tải tệp đó lên chức năng của mình từ nhóm Amazon Simple Storage Service [Amazon S3]
Nếu gói triển khai của bạn chứa các thư viện gốc, thì bạn có thể xây dựng gói triển khai với AWS Serverless Application Model [AWS SAM]. Bạn có thể sử dụng lệnh AWS SAM CLI
0 vớimy-math-function$ | lambda_function.py
1 để tạo gói triển khai của mình. Tùy chọn này xây dựng gói triển khai bên trong hình ảnh Docker tương thích với môi trường thực thi Lambdamy-math-function$ | lambda_function.py
Để biết thêm thông tin, hãy xem bản dựng sam trong Hướng dẫn dành cho nhà phát triển mô hình ứng dụng AWS Serverless
Bạn cần xây dựng gói triển khai để tương thích với kiến trúc tập lệnh này của chức năng
Lambda sử dụng quyền truy cập tệp POSIX, vì vậy bạn có thể cần đặt quyền cho thư mục gói triển khai trước khi tạo tệp. kho lưu trữ tệp zip
Gói python có thể chứa mã khởi tạo trong __init__. tập tin py. Trước Python 3. 9, Lambda không chạy __init__. mã py cho các gói trong thư mục xử lý hàm hoặc thư mục mẹ. Trong Trăn 3. 9 trở lên, Lambda chạy mã khởi tạo cho các gói trong các thư mục này trong quá trình khởi chạy
Lưu ý rằng Lambda chỉ chạy mã init khi môi trường thực thi được khởi tạo lần đầu, chứ không chạy cho mỗi lệnh gọi hàm trong môi trường được khởi tạo đó
điều kiện tiên quyết
Bạn cần AWS Command Line Interface [AWS CLI] để gọi các hoạt động API dịch vụ. Để cài đặt AWS CLI, hãy xem Cài đặt AWS CLI trong Hướng dẫn sử dụng giao diện dòng lệnh AWS
một phụ thuộc thời gian chạy là gì?
Cần có gói triển khai để tạo hoặc cập nhật hàm Lambda có hoặc không có phụ thuộc thời gian chạy. Gói triển khai đóng vai trò là gói nguồn để chạy mã chức năng của bạn và các thành phần phụ thuộc [nếu có] trên Lambda
Phần phụ thuộc có thể là bất kỳ phần phụ thuộc gói, mô-đun hoặc tập hợp nào khác không được bao gồm trong môi trường thời gian chạy Lambda cho mã chức năng của bạn
Phần sau đây mô tả hàm Lambda không phụ thuộc vào thời gian chạy
Nếu mã chức năng của bạn bằng Python 3. 8 trở lên và nó chỉ phụ thuộc vào các thư viện nhật ký và toán học tiêu chuẩn của Python, bạn không cần đưa các thư viện này vào. tập tin zip. Các thư viện này được bao gồm trong thời gian chạy Python
Nếu mã chức năng của bạn phụ thuộc vào AWS SDK dành cho Python [Boto3], thì bạn không cần đưa thư viện boto3 vào. tập tin nén. Các thư viện này được bao gồm trong Python3. 8 và thời gian chạy mới hơn
Ghi chú. Lambda cập nhật định kỳ các thư viện Boto3 để kích hoạt bộ tính năng và cập nhật bảo mật mới nhất. Để có toàn quyền kiểm soát các phần phụ thuộc mà hàm của bạn sử dụng, hãy đóng gói tất cả các phần phụ thuộc với gói triển khai của bạn
Gói triển khai không có phụ thuộc
tạo. zip cho gói triển khai của bạn
Để tạo gói triển khai
Mở dấu nhắc lệnh và tạo thư mục dự án
2. Ví dụ: trên macOSmy-math-function$ | lambda_function.py
mkdir my-math-function
Điều hướng đến thư mục dự án
2my-math-function$ | lambda_function.py
cd my-math-function
Sao chép nội dung của mã Python mẫu từ GitHubvà lưu nó vào một tệp mới có tên
4. Cấu trúc thư mục của bạn sẽ trông như thế nàymy-math-function$ | lambda_function.py
my-math-function$ | lambda_function.py
Thêm tệp
4 vào thư mục gốc của. tập tin zipmy-math-function$ | lambda_function.py
zip my-deployment-package.zip lambda_function.py
Điều này tạo ra một tệp
6 trong thư mục dự án của bạn. Lệnh tạo ra đầu ra saumy-math-function$ | lambda_function.py
adding: lambda_function.py [deflated 50%]
Gói triển khai với các phụ thuộc
tạo. zip cho gói triển khai của bạn
Để tạo gói triển khai
Mở dấu nhắc lệnh và tạo thư mục dự án
7. Ví dụ: trên macOSmy-math-function$ | lambda_function.py
mkdir my-sourcecode-function
Điều hướng đến thư mục dự án
7my-math-function$ | lambda_function.py
cd my-sourcecode-function
Sao chép nội dung của mã Python mẫu sau và lưu nó vào một tệp mới có tên
4my-math-function$ | lambda_function.py
import requests def lambda_handler[event, context]: response = requests.get["//www.example.com/"] print[response.text] return response.text
Cấu trúc thư mục của bạn sẽ trông như thế này
my-sourcecode-function$ | lambda_function.py
Cài đặt thư viện yêu cầu vào thư mục
0 mớizip my-deployment-package.zip lambda_function.py
pip install --target ./package requests
Tạo gói triển khai với thư viện đã cài đặt ở thư mục gốc
0cd my-math-function
Điều này tạo ra một tệp
6 trong thư mục dự án của bạn. Lệnh tạo ra đầu ra saumy-math-function$ | lambda_function.py
1cd my-math-function
Thêm tệp
4 vào thư mục gốc của tệp zipmy-math-function$ | lambda_function.py
2cd my-math-function
Để cập nhật hàm Python bằng môi trường ảo
Kích hoạt môi trường ảo. Ví dụ
3cd my-math-function
Cài đặt thư viện với pip
4cd my-math-function
Vô hiệu hóa môi trường ảo
5cd my-math-function
Tạo gói triển khai với các thư viện đã cài đặt ở gốc
6cd my-math-function
Lệnh cuối cùng lưu gói triển khai vào thư mục gốc của thư mục
3zip my-deployment-package.zip lambda_function.py
Một thư viện có thể xuất hiện trong
4 hoặczip my-deployment-package.zip lambda_function.py
5 và thư mục đầu tiênzip my-deployment-package.zip lambda_function.py
6 hoặczip my-deployment-package.zip lambda_function.py
7. Bạn có thể sử dụng lệnhzip my-deployment-package.zip lambda_function.py
8 để định vị một gói cụ thểzip my-deployment-package.zip lambda_function.py
Thêm các tệp mã chức năng vào thư mục gốc của gói triển khai của bạn
7cd my-math-function
Sau khi bạn hoàn thành bước này, bạn sẽ có cấu trúc thư mục sau
8cd my-math-function
Triển khai của bạn. zip vào hàm
Để triển khai mã mới cho chức năng của bạn, bạn tải mã mới lên. gói triển khai tệp zip. Bạn có thể sử dụng để tải lên một. zip vào hàm hoặc bạn có thể sử dụng lệnh UpdateFunctionCode CLI
Ví dụ sau tải lên một tệp có tên my-deployment-package. khóa kéo. Sử dụng tiền tố tệp để tải tệp nhị phân lên. zip sang Lambda