Creación de funciones de Lambda con Node.js - AWS Lambda

Creación de funciones de Lambda con Node.js

Puede ejecutar código JavaScript con Node.js en AWS Lambda. Lambda proporciona tiempos de ejecución para Node.js que ejecutan su código para procesar eventos. El código se ejecuta en un entorno que incluye AWS SDK para JavaScript, con credenciales de un rol de AWS Identity and Access Management (IAM) que usted administre. Para obtener más información sobre las versiones del SDK incluidas en los tiempos de ejecución de Node.js, consulte Versiones del SDK incluidas en el tiempo de ejecución.

Lambda admite los siguientes tiempos de ejecución de Node.js.

Nombre Identificador Sistema operativo Fecha de baja Bloqueo de la función Crear Bloqueo de la función Actualizar

Node.js 24

nodejs24.x

Amazon Linux 2023

30 de abril de 2028

1 de junio de 2028

1 de julio de 2028

Node.js 22

nodejs22.x

Amazon Linux 2023

30 de abril de 2027

1 de junio de 2027

1 de julio de 2027

Node.js 20

nodejs20.x

Amazon Linux 2023

30 de abril de 2026

1 de junio de 2026

1 de julio de 2026

Para crear una función de Node.js.
  1. Abra la consola de Lambda.

  2. Seleccione Creación de función.

  3. Configure los siguientes ajustes:

    • En Nombre de la función: ingrese el nombre de la función.

    • Tiempo de ejecución: elija Node.js 24.x.

  4. Elija Crear función.

La consola crea una función de Lambda con un único archivo de origen llamado index.mjs. Puede editar este archivo y agregar más archivos en el editor de código integrado. En la sección IMPLEMENTAR, elija Implementar para actualizar el código de la función. A continuación, para ejecutar el código, seleccione Crear evento de prueba en la sección EVENTOS DE PRUEBA.

El archivo index.mjs exporta una función denominada handler que toma un objeto de evento y un objeto context. Esta es la función de controlador a la que llama Lambda cuando se invoca la función. El tiempo de ejecución de la función de Node.js obtiene los eventos de invocación de Lambda y se los pasa al controlador. En la configuración de función, el valor de controlador es index.handler.

Al guardar el código de función, la consola de Lambda crea un paquete de implementación de archivo .zip. Cuando desarrolle el código de función fuera de la consola (mediante un IDE), debe crear un paquete de implementación para cargar el código a la función de Lambda.

El tiempo de ejecución de la función pasa un objeto context al controlador, además del evento de invocación. El objeto context contiene información adicional acerca de la invocación, la función y el entorno de ejecución. Hay más información disponible en las variables de entorno.

Su función de Lambda tiene un grupo de registros de Registros de CloudWatch. El tiempo de ejecución de la función envía detalles de cada invocación a Registros de CloudWatch. Se transmite cualquier registro que su función genere durante la invocación. Si su función devuelve un error, Lambda formatea el error y lo devuelve al invocador.

Versiones del SDK incluidas en el tiempo de ejecución

Todos los tiempos de ejecución de Node.js para Lambda admitidos incluyen una versión secundaria específica de la versión 3 de AWS SDK para JavaScript, no la versión más reciente. La versión secundaria específica incluida en el tiempo de ejecución depende de la versión del tiempo de ejecución y de su Región de AWS. Para encontrar la versión específica del SDK incluida en el tiempo de ejecución que está utilizando, cree una función de Lambda con el código siguiente.

ejemplo index.mjs
import packageJson from '@aws-sdk/client-s3/package.json' with { type: 'json' }; export const handler = async () => ({ version: packageJson.version });

Esta acción devuelve una respuesta con el siguiente formato:

{ "version": "3.632.0" }

Para obtener más información, consulte Uso de la versión 3 del SDK para JavaScript en el controlador.

Uso de keep-alive para conexiones TCP

El agente HTTP o HTTPS predeterminado de Node.js crea una nueva conexión TCP para cada nueva solicitud. Para evitar el costo de establecer nuevas conexiones, la opción keep-alive está habilitada por defecto en todos los tiempos de ejecución de Node.js compatibles. Keep-alive puede reducir los tiempos de solicitud de las funciones de Lambda que realizan varias llamadas a la API mediante el SDK.

Para deshabilitar keep-alive, consulte Reusing connections with keep-alive in Node.js en la Guía para desarrolladores de AWS SDK para JavaScript 3.x. Para obtener más información sobre el uso de keep-alive, consulte HTTP keep-alive is on by default in modular AWS SDK for JavaScript en AWS Developer Tools Blog.

Carga del certificado de la CA

Para las versiones de tiempo de ejecución hasta Node.js 18, Lambda carga automáticamente los certificados de la CA (autoridad de certificación) específicos de Amazon para facilitar la creación de funciones que interactúen con otros Servicios de AWS. Por ejemplo, Lambda incluye los certificados de Amazon RDS necesarios para validar el certificado de identidad del servidor instalado en la base de datos de Amazon RDS. Este comportamiento puede afectar el rendimiento durante los arranques en frío.

A partir de Node.js 20, Lambda ya no carga certificados de la CA adicionales de forma predeterminada. El tiempo de ejecución Node.js 20 contiene un archivo de certificado con todos los certificados de la CA de Amazon ubicados en /var/runtime/ca-cert.pem. Para restaurar el mismo comportamiento de los tiempos de ejecución de Node.js 18 y anteriores, establezca la variable NODE_EXTRA_CA_CERTS del entorno en /var/runtime/ca-cert.pem.

Para obtener un rendimiento óptimo, recomendamos que agrupe solo los certificados que necesite con su paquete de implementación y que los cargue mediante la variable de entorno NODE_EXTRA_CA_CERTS. El archivo de certificados debe constar de uno o más certificados de CA raíz o intermedios de confianza en formato PEM. Por ejemplo, en el caso de RDS, incluya los certificados necesarios junto con el código como certificates/rds.pem. A continuación, cargue los certificados configurando NODE_EXTRA_CA_CERTS como /var/task/certificates/rds.pem.

Características experimentales de Node.js

Las versiones anteriores del lenguaje Node.js habilitan algunas características experimentales de forma predeterminada. Lambda deshabilitan estas características para garantizar la estabilidad del tiempo de ejecución y un rendimiento uniforme. En la siguiente tabla se enumeran las características experimentales que Lambda deshabilita.

Característica experimental Versiones de Node.js compatibles Indicador de Node.js aplicado por Lambda Indicador de Lambda para volver a habilitar

Soporte para importar módulos mediante require en módulos ES

Node.js 20, Node.js 22

--no-experimental-require-module

--experimental-require-module

Soporte para detectar automáticamente los módulos ES frente a CommonJS

Node.js 22

--no-experimental-detect-module

--experimental-detect-module

Para habilitar una característica experimental deshabilitada, establezca el indicador de reactivación en la variable de entorno NODE_OPTIONS. Por ejemplo, para habilitar el soporte require de módulos ES, establezca NODE_OPTIONS en --experimental-require-module. Lambda detecta esta anulación y elimina el indicador de desactivación correspondiente.

importante

El uso de características experimentales puede provocar problemas de inestabilidad y rendimiento. Es posible que estas características se modifiquen o eliminen en futuras versiones de Node.js. Las funciones que utilizan características experimentales no son aptas para el Acuerdo de Nivel de Servicio (SLA) de Lambda o AWS Support.