Come posso creare un pacchetto di implementazione Lambda per Node.js?

4 minuti di lettura
0

Voglio creare un pacchetto di implementazione per una funzione AWS Lambda in Node.js, ma ricevo l'errore "Cannot find module" durante la chiamata.

Breve descrizione

L'errore Cannot find module di solito è causato da uno di questi tre motivi:

  • Il pacchetto di implementazione della funzione Lambda non dispone della struttura di cartelle corretta per consentire al servizio Lambda di caricare i moduli e le librerie richiesti.
  • Il pacchetto di implementazione non dispone delle autorizzazioni di file corrette.
  • Il pacchetto di implementazione non contiene il modulo da importare.

Nota: Lambda richiede autorizzazioni di lettura globali.

Soluzione

Per creare un pacchetto di implementazione con il codice della funzione nella cartella principale del file .zip e quindi applicare le autorizzazioni di lettura ed esecuzione per tutti i file, procedi come segue.

Nota: Se ricevi errori durante l'esecuzione dell'Interfaccia della riga di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

Per Linux e macOS

Installa le dipendenze nella cartella del progetto della funzione

Nota: La maggior parte dei moduli Node.js è indipendente dalla piattaforma, ma alcuni sono compilati in ambienti di sistema operativo specifici. Lambda viene eseguita in un ambiente Linux. Quando si installano moduli con npm, è consigliabile creare il file .zip in un ambiente Linux per assicurarsi che siano incluse le dipendenze della piattaforma corrette.

1.    Nella riga di comando, cambia le directory nella cartella del tuo progetto. Ad esempio:

cd /project-folder-name

Importante: Assicurati di sostituire project-folder-name con il nome della cartella effettiva del progetto.

2.    Installa le tue dipendenze localmente nella cartella del progetto della funzione eseguendo il seguente comando per ogni modulo richiesto per la tua funzione:

Nota: Includi anche il file sorgente del gestore.

npm install package-name

Importante: Assicurati di sostituire package-name con il nome effettivo del pacchetto. C'è anche un limite di 250 MB alle dimensioni della funzione per i file decompressi. Includi solo le librerie necessarie per l'operatività della funzione.

Ad esempio, per installare i moduli AWS SDK per JavaScript nella cartella principale di una cartella di progetto, esegui il seguente comando:

npm install aws-sdk

Nota: Lambda include le librerie AWS SDK per JavaScript come parte della configurazione di base del container. Per utilizzare una diversa versione della libreria, puoi includere anche una copia locale. Per ulteriori informazioni sull'ambiente Lambda corrente e sulle librerie supportate, consulta Runtime Lambda.

Crea il pacchetto di implementazione

Nella riga di comando, esegui il seguente comando:

zip -r ../function-name.zip .

Nota: Sostituisci function-name con il nome del file che vuoi assegnare al pacchetto di implementazione. Questo inserisce tutti i file della cartella del progetto in un file .zip situato nella cartella principale.

Verifica il pacchetto di implementazione

1.    Nella riga di comando, esegui il seguente comando:

zipinfo ../function-name.zip

Nota: Sostituisci function-name con il nome file effettivo del tuo pacchetto di implementazione. Oppure, puoi eseguire unzip -l sul file .zip per elencarne il contenuto, ma l'output non sarà molto dettagliato.

2.    Controlla l'output per verificare che il file sorgente del gestore delle funzioni si trovi nella cartella principale del file .zip.

3.    Controlla l'output per verificare che i tuoi file dispongano di autorizzazioni di lettura globali. Per ulteriori informazioni, vedi Come posso risolvere gli errori "permission denied" o "unable to import module" durante il caricamento di un pacchetto di implementazione Lambda?

Per Windows

Crea il pacchetto di implementazione

1.    In Esplora file, apri la cartella del progetto.

2.    Seleziona tutti i file del progetto, quindi fai clic con il pulsante destro del mouse per aprire il menu contestuale.

3.    Scegli Invia a, quindi seleziona Cartella compressa (zip).

4.    Immetti un nome per il file .zip.

Carica e verifica il pacchetto di implementazione

1.    Nella console Lambda, scegli la tua funzione.

2.    In Codice funzione, per Tipo di immissione del codice, scegli Carica un file .zip.

3.    In Pacchetto della funzione, scegli Carica.

4.    Seleziona il file .zip che hai creato, quindi scegli Apri.

5.    Nella parte superiore della console, scegli Salva.

Suggerimento: Puoi anche eseguire update-function-code da AWS CLI per caricare il tuo file .zip.

6.    Al termine del caricamento, scegli Test.

Suggerimento: Puoi usare anche 7-Zip dalla riga di comando per verificare le autorizzazioni dei file del tuo pacchetto di implementazione. Scaricalo dal sito web 7-Zip.


Informazioni correlate

Implementare le funzioni Lambda di Node.js con archivi di file .zip

Pacchetti di implementazione Lambda

Creazione di funzioni Lambda con Node.js

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa