Diperlukan .zip
file untuk memasukkan modul npm di Lambda. Dan Anda benar-benar tidak boleh menggunakan editor web Lambda untuk banyak hal - karena dengan kode produksi apa pun, Anda harus mengembangkan secara lokal, berkomitmen untuk git, dll.
ALIRAN SAYA:
1) Fungsi Lambda saya biasanya adalah utilitas pembantu untuk proyek yang lebih besar, jadi saya membuat direktori / aws / lambdas di dalamnya untuk menampungnya.
2) Setiap direktori lambda berisi file index.js yang berisi kode fungsi, file package.json yang menentukan dependensi, dan subdirektori / node_modules . (File package.json tidak digunakan oleh Lambda, hanya supaya kita dapat menjalankan npm install
perintah secara lokal .)
package.json:
{
"name": "my_lambda",
"dependencies": {
"svg2png": "^4.1.1"
}
}
3) Saya .gitignore semua direktori node_modules dan file .zip sehingga file yang dihasilkan dari npm terpasang dan zip tidak akan mengacaukan repo kami.
.gitignore:
# Ignore node_modules
**/node_modules
# Ignore any zip files
*.zip
4) Saya menjalankan npm install
dari dalam direktori untuk menginstal modul, dan mengembangkan / menguji fungsi secara lokal.
5) Saya .zip direktori lambda dan mengunggahnya melalui konsol.
( PENTING: Jangan gunakan utilitas 'kompres' Mac dari Finder untuk meng-zip file! Anda harus menjalankan zip dari CLI dari dalam root direktori-lihat di sini )
zip -r ../yourfilename.zip *
CATATAN:
Anda mungkin mengalami masalah jika memasang modul simpul secara lokal di Mac Anda, karena beberapa modul khusus platform mungkin gagal saat digunakan ke lingkungan berbasis Linux Lambda. (Lihat https://stackoverflow.com/a/29994851/165673 )
Solusinya adalah mengkompilasi modul pada instance EC2 yang diluncurkan dari AMI yang sesuai dengan runtime Lambda Node.js yang Anda gunakan (Lihat daftar runtime Lambda dan AMI masing-masing ).
Lihat juga Paket Penerapan AWS Lambda di Node.js - AWS Lambda