Một .zip
tệp được yêu cầu để bao gồm các mô-đun npm trong Lambda. Và bạn thực sự không nên sử dụng trình soạn thảo web Lambda cho bất kỳ điều gì - như với bất kỳ mã sản xuất nào, bạn nên phát triển cục bộ, cam kết git, v.v.
DONG CHAY CUA TOI:
1) Các hàm Lambda của tôi thường là các tiện ích trợ giúp cho một dự án lớn hơn, vì vậy tôi tạo một thư mục / aws / lambdas trong đó để chứa chúng.
2) Mỗi thư mục lambda cá nhân chứa một index.js tập tin chứa mã chức năng, một package.json tập tin xác định phụ thuộc, và / node_modules thư mục con. (Tệp pack.json không được Lambda sử dụng, nó chỉ để chúng ta có thể chạy npm install
lệnh cục bộ .)
gói.json:
{
"name": "my_lambda",
"dependencies": {
"svg2png": "^4.1.1"
}
}
3) Tôi .gitignore tất cả các thư mục node_modules và các tệp .zip để các tệp được tạo từ cài đặt npm và nén không làm lộn xộn repo của chúng tôi.
.gitignore:
# Ignore node_modules
**/node_modules
# Ignore any zip files
*.zip
4) Tôi chạy npm install
từ trong thư mục để cài đặt các mô-đun và phát triển / kiểm tra chức năng cục bộ.
5) Tôi .zip thư mục lambda và tải nó qua bàn điều khiển.
( QUAN TRỌNG: Không sử dụng tiện ích 'nén' của Mac từ Finder để nén tệp! Bạn phải chạy zip từ CLI từ bên trong thư mục gốc - xem tại đây )
zip -r ../yourfilename.zip *
GHI CHÚ:
Bạn có thể gặp sự cố nếu bạn cài đặt các mô-đun nút cục bộ trên máy Mac của mình, vì một số mô-đun dành riêng cho nền tảng có thể không thành công khi được triển khai vào môi trường dựa trên Linux của Lambda. (Xem https://stackoverflow.com/a/29994851/165673 )
Giải pháp là biên dịch các mô-đun trên phiên bản EC2 được khởi chạy từ AMI tương ứng với thời gian chạy Lambda Node.js mà bạn đang sử dụng (Xem danh sách thời gian chạy Lambda và AMI tương ứng của chúng ).
Xem thêm Gói triển khai AWS Lambda trong Node.js - AWS Lambda