.zip
Файл необхідний для того , щоб включити НПЕ модулі Lambda. І ви справді не повинні використовувати веб-редактор Lambda для великої кількості нічого, як і будь-якого виробничого коду, ви повинні розвиватися на місцевому рівні, здійснюючи git тощо.
МОЙ ПОТОК:
1) Мої функції Lambda зазвичай є допоміжними програмами для більшого проекту, тому я створюю каталог / aws / lambdas в межах цього, щоб розмістити їх.
2) Кожен окремий каталог лямбда містить файл index.js, що містить код функції, файл package.json, що визначає залежності, і підкаталог / node_modules . (Файл package.json Lambda не використовується, це просто так, щоб ми могли локально запустити npm install
команду.)
package.json:
{
"name": "my_lambda",
"dependencies": {
"svg2png": "^4.1.1"
}
}
3) Я .gitignore всі каталоги node_modules та .zip файли, щоб файли, згенеровані при встановленні npm та блискавці, не захаращували наше репо.
.gitignore:
# Ignore node_modules
**/node_modules
# Ignore any zip files
*.zip
4) Я бігаю npm install
зсередини каталогу, щоб встановити модулі та розробити / протестувати функцію локально.
5) Я .zip ламбда-каталог і завантажую його через консоль.
( ВАЖЛИВО: Не використовуйте для компіляції файлу утиліту "стиснення" Mac із Finder! Ви повинні запустити zip з CLI з кореня каталогу, дивіться тут )
zip -r ../yourfilename.zip *
ПРИМІТКА:
Ви можете зіткнутися з проблемами, якщо локально встановити модулі вузлів на вашому Mac, оскільки деякі модулі, орієнтовані на платформу, можуть вийти з ладу при розгортанні в Linux-середовищі Lambda. (Дивіться https://stackoverflow.com/a/29994851/165673 )
Рішення полягає у компіляції модулів на екземплярі EC2, запущеному з AMI, який відповідає виконуваному Lambda Node.js виконанню (Див. Цей перелік виконуваних програм Lambda та їх відповідних AMI ).
Дивіться також пакет AWS Lambda Deployment Package в Node.js - AWS Lambda