.zip
Plik jest wymagane w celu włączenia NPM modułów Lambda. I naprawdę nie powinieneś używać edytora WWW Lambda do niczego - tak jak w przypadku każdego kodu produkcyjnego, powinieneś programować lokalnie, angażować się w git itp.
MÓJ PRZEPŁYW:
1) Moje funkcje Lambda są zwykle narzędziami pomocniczymi dla większego projektu, więc tworzę w nim katalog / aws / lambdas , aby je pomieścić.
2) Każdy katalog lambda zawiera plik index.js zawierający kod funkcji, plik package.json definiujący zależności oraz podkatalog / node_modules . (Plik package.json nie jest używany przez Lambdę, służy tylko do lokalnego uruchomienia npm install
polecenia).
package.json:
{
"name": "my_lambda",
"dependencies": {
"svg2png": "^4.1.1"
}
}
3) .gitignore wszystkie katalogi node_modules i pliki .zip, aby pliki wygenerowane podczas instalacji npm i skompresowania nie zaśmiecały naszego repozytorium.
.gitignore:
# Ignore node_modules
**/node_modules
# Ignore any zip files
*.zip
4) Uruchamiam npm install
z katalogu, aby zainstalować moduły i lokalnie opracować / przetestować funkcję.
5) Rozpakuj katalog lambda i wgrywam go przez konsolę.
( WAŻNE: nie używaj narzędzia `` kompresuj '' Maca z Findera do spakowania pliku! Musisz uruchomić zip z CLI z poziomu katalogu głównego - patrz tutaj )
zip -r ../yourfilename.zip *
UWAGA:
Możesz napotkać problemy, jeśli zainstalujesz moduły węzłów lokalnie na swoim Macu, ponieważ niektóre moduły specyficzne dla platformy mogą się nie powieść po wdrożeniu w środowisku opartym na systemie Linux Lambda. (Zobacz https://stackoverflow.com/a/29994851/165673 )
Rozwiązaniem jest skompilowanie modułów na instancji EC2 uruchomionej z AMI, która odpowiada używanemu środowisku wykonawczemu Lambda Node.js (zobacz tę listę środowisk wykonawczych Lambda i odpowiadających im AMI ).
Zobacz także pakiet wdrożeniowy AWS Lambda w Node.js - AWS Lambda