Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Come posso utilizzare i livelli per integrare la versione più recente dell'SDK AWS per JavaScript nella mia funzione Lambda Node.js?
L'ambiente runtime di AWS Lambda non include alcune funzionalità dell'ultima versione di un AWS SDK. Desidero integrare l'ultima versione di AWS SDK per JavaScript nella mia funzione Lambda Node.js.
Breve descrizione
Per integrare la versione più recente di un AWS SDK nel pacchetto di implementazione di una funzione Lambda, crea un livello Lambda. Quindi aggiungi il livello alla funzione.
Nota: per le versioni 16 e successive di Node.js, il runtime di Lambda Node.js include AWS SDK per JavaScript versione 2. Per le versioni 18 e successive di Node.js, il runtime di Lambda Node.js include AWS SDK per JavaScript versione 3. Per ulteriori informazioni, consulta Documentazione di AWS SDK per JavaScript.
Per un elenco completo dei runtime e delle versioni di AWS SDK utilizzate da Lambda, consulta Runtime Lambda.
Nota: la seguente risoluzione aumenta le dimensioni del pacchetto di implementazione della funzione. Per informazioni sulle quote di archiviazione Lambda, consulta la pagina Quote di Lambda.
Risoluzione
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
(Facoltativo) Verifica la versione di AWS SDK utilizzata dalla funzione
Completa i passaggi seguenti:
Nota: utilizza questo metodo solo per le versioni 16 e precedenti di Node.js.
-
Aggiorna il codice della funzione per restituire la versione dell'SDK AWS utilizzata dalla funzione quando questa viene richiamata:
const AWS = require('aws-sdk') exports.handler = async (event) => { return AWS.VERSION; };
-
Confronta la versione di AWS SDK restituita dalla funzione con l'ultima versione di AWS SDK elencata nella documentazione per AWS SDK.
Installa e implementa la versione più recente di AWS SDK
Nota: i pacchetti di implementazione devono essere compatibili con il runtime di Lambda utilizzato. Per il runtime, è consigliabile utilizzare lo stesso sistema operativo specificato in Runtime Lambda.
In un ambiente di sviluppo locale compatibile con Lambda, completa i seguenti passaggi:
-
Esegui questo comando per creare una directory:
mkdir -p aws-sdk-layer/nodejs
-
Esegui questo comando per passare alla directory:
cd aws-sdk-layer/nodejs
-
Installa l'AWS SDK per la versione del runtime Node.js in uso:
Node.js 16 e versioni precedenti (AWS SDK versione 2)
Per installare l'ultima versione di AWS SDK versione 2, utilizza un'istanza compatibile con Amazon Linux 2 per eseguire questo comando:npm install aws-sdk
Per ulteriori informazioni, consulta Tutorial: configurazione di Node.js su un' istanza Amazon EC2.
Nota: per lo sviluppo di risorse Lambda, è consigliabile utilizzare un ambiente Amazon Linux 2.
-oppure-
Se utilizzi un sistema operativo Windows o macOS per lo sviluppo, utilizza Docker per eseguire questo comando:docker run --entrypoint "" -v "$PWD":/var/task "public.ecr.aws/lambda/nodejs:<version>" /bin/sh -c "npm install aws-sdk; exit"
Nota: prima di eseguire il comando, assicurati di utilizzare la versione più recente di Docker sul sito web di Docker.
Node.js 18 e versioni successive (AWS SDK versione 3)
Per installare la versione più recente di AWS SDK versione 3, consulta Installa l'SDK per JavaScript. -
Crea un file.zip da caricare sul livello Lambda:
zip -r ../package.zip ../
-
(Facoltativo) Verifica la versione di AWS SDK installata:
cat package-lock.json
Esempio di output:
{ "requires": true, "lockfileVersion": 1, "dependencies": { "aws-sdk": { "version": "2.888.0", ...
Utilizza AWS CLI o la console Lambda per creare un livello Lambda e aggiungerlo alla funzione
AWS CLI
-
Per creare un nuovo livello Lambda che includa l'ultima versione di AWS SDK, esegui questo comando publish-layer-version:
aws lambda publish-layer-version --layer-name node_sdk --description "My layer" --license-info "MIT" --compatible-runtimes --zip-file fileb://../package.zip --region
Nota: sostituisci node_sdk con il nome del livello e My layer con una descrizione del livello. Inoltre, sostituisci il valore compatible-runtimes con il runtime che utilizzi e region con la Regione AWS dove si trovano la funzione e il livello.
-
Nell'output, copia il valore LayerVersionArn da utilizzare nel passaggio successivo.
-
Per aggiungere il livello alla funzione, esegui questo comando update-function-configuration:
aws lambda update-function-configuration --function-name my-function --layers arn:aws:lambda:us-east-2:123456789012:layer:node_sdk:1 --region
Nota: sostituisci my-function con il nome della tua funzione, arn:aws:lambda:us-east-2:123456789012:layer:node_sdk:1 con il valore LayerVersionArn dell'output e region con la tua Regione.
Per ulteriori informazioni, consulta Gestione delle dipendenze Lambda con i livelli.
Console Lambda
Per creare un livello Lambda e aggiungerlo alla funzione nella console Lambda, completa i seguenti passaggi:
- Apri la pagina Livelli nella console Lambda.
- Scegli Crea livello.
- In Nome, inserisci un nome per il nuovo livello.
- Scegli Carica un file .zip, quindi scegli il nome del file .zip del pacchetto di implementazione.
- Scegli Crea.
- Apri la pagina Funzioni nella console Lambda, quindi scegli il nome della funzione a cui vuoi aggiungere il livello.
- In Livelli, scegli Aggiungi un livello.
- In Scegli un livello, seleziona Livelli personalizzati.
- Scegli l'elenco a discesa Livelli personalizzati, quindi seleziona il livello personalizzato.
- Scegli Aggiungi.
(Facoltativo) Verifica la configurazione
Completa i passaggi descritti nella sezione (Facoltativo) Verifica la versione di AWS SDK utilizzata dalla funzione per invocare la funzione. La funzione restituisce la versione di AWS SDK in uso.
Informazioni correlate
Best practice per l'utilizzo delle funzioni AWS Lambda
Come posso creare un pacchetto di implementazione Lambda per Node.js?
Come posso creare un livello per la mia funzione Lambda Python?
Video correlati


Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa