Compilazione di funzioni Lambda con TypeScript - AWS Lambda

Compilazione di funzioni Lambda con TypeScript

È possibile utilizzare il runtime Node.js per eseguire il codice TypeScript in AWS Lambda. Poiché Node.js non esegue il codice TypeScript in modo nativo, devi prima trasformare il codice TypeScript in JavaScript. Utilizza quindi i file JavaScript per distribuire il codice della funzione a Lambda. Il tuo codice viene eseguito in un ambiente che include AWS SDK per JavaScript con le credenziali di un ruolo AWS Identity and Access Management (IAM) gestito. Per ulteriori informazioni sulle versioni SDK incluse nei runtime di Node.js, consulta Versioni SDK incluse nel runtime.

Lambda supporta i seguenti runtime di Node.js.

Nome Identificatore Sistema operativo Data di ritiro Blocco creazione funzioni Blocco aggiornamento funzioni

Node.js 22

nodejs22.x

Amazon Linux 2023

30 aprile 2027

1 giugno 2027

1 luglio 2027

Node.js 20

nodejs20.x

Amazon Linux 2023

30 aprile 2026

1 giugno 2026

1 luglio 2026

Configurazione di un ambiente di sviluppo TypeScript

Utilizza un ambiente di sviluppo integrato (IDE) locale o un editor di testo per scrivere il codice della funzione TypeScript. Non è possibile creare il codice TypeScript sulla console Lambda.

Puoi usare esbuild o il compilatore TypeScript di Microsoft (tsc) per trasformare il codice TypeScript in JavaScript. AWS Serverless Application Model (AWS SAM) e AWS Cloud Development Kit (AWS CDK) usano entrambi esbuild.

Durante l'utilizzo di esbuild, considera quanto segue:

  • Esistono diverse avvertenze TypeScript.

  • È necessario configurare le impostazioni di trasformazione di TypeScript in modo che corrispondano al runtime Node.js che si prevede di utilizzare. Per ulteriori informazioni, consulta Target nella documentazione esbuild. Per un esempio di file tsconfig.json che dimostra come indirizzare una versione specifica di Node.js supportata da Lambda, fai riferimento al repository GitHub TypeScript.

  • esbuild non esegue controlli di tipo. Per controllare i tipi, utilizza il compilatore tsc. Esegui tsc -noEmit oppure aggiungi un parametro "noEmit" al file tsconfig.json come mostrato nell'esempio seguente. tsc viene configurato per non emettere file JavaScript. Dopo aver controllato i tipi, usa esbuild per convertire i file TypeScript in JavaScript.

Esempio tsconfig.json
{ "compilerOptions": { "target": "es2020", "strict": true, "preserveConstEnums": true, "noEmit": true, "sourceMap": false, "module":"commonjs", "moduleResolution":"node", "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "isolatedModules": true, }, "exclude": ["node_modules", "**/*.test.ts"] }

Definizioni dei tipi per Lambda

Il pacchetto @types/aws-lambda fornisce definizioni dei tipi per le funzioni Lambda. Installa questo pacchetto quando la tua funzione utilizza uno dei seguenti elementi:

Per aggiungere le definizioni dei tipi Lambda alla tua funzione, installa @types/aws-lambda come dipendenza di sviluppo:

npm install -D @types/aws-lambda

Quindi, importa i tipi da aws-lambda:

import { Context, S3Event, APIGatewayProxyEvent } from 'aws-lambda'; export const handler = async (event: S3Event, context: Context) => { // Function code };

L'istruzione import ... from 'aws-lambda' importa le definizioni dei tipi. Non importa il pacchetto npm aws-lambda, che è uno strumento di terzi non correlato. Per ulteriori informazioni, consulta aws-lambda nel repository GitHub DefinitelyTyped.

Nota

Non è necessario @types/aws-lambda quando si utilizzano definizioni di tipo personalizzate. Per una funzione di esempio che definisce il proprio tipo per un oggetto evento, vedi Codice della funzione Lambda TypeScript di esempio.