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 el código para procesar eventos. El código se ejecuta en un entorno que incluye el AWS SDK for JavaScript, con credenciales de un rol de AWS Identity and Access Management (IAM) administrado por usted.

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

Tiempos de ejecución de Node.js
Nombre Identifier SDK para JavaScript Sistema operativo

Node.js 14

nodejs14.x

2.804.0

Amazon Linux 2

Node.js 12

nodejs12.x

2.804.0

Amazon Linux 2

Node.js 10

nodejs10.x

2.804.0

Amazon Linux 2

nota

Para obtener información sobre el fin de soporte de Node.js 10, consulte Política de soporte del tiempo de ejecución.

Las funciones de Lambda utilizan un rol de ejecución para obtener permiso para escribir registros en Amazon CloudWatch Logs y para tener acceso a otros servicios y recursos. Si aún no tiene un rol de ejecución para el desarrollo de funciones, cree uno.

Para crear un rol de ejecución

  1. Abra la página Roles en la consola de IAM.

  2. Elija Create role (Crear rol).

  3. Cree un rol con las propiedades siguientes.

    • Trusted entity (Entidad de confianza)Lambda.

    • PermisosAWSLambdaVPCAccessExecutionRole..

    • Role name (Nombre de rol): lambda-role.

    La política AWSLambdaVPCAccessExecutionRole tiene permisos que la función necesita para escribir registros a CloudWatch Logs.

Puede agregar permisos al rol más tarde o cambiarlo por otro rol específico para una sola función.

Para crear una función de Node.js

  1. Abra la consola de Lambda.

  2. Elija Create function (Crear función).

  3. Configure los siguientes ajustes:

    • Name (Nombre): my-function.

    • Runtime (Tiempo de ejecución): Node.js 14.x.

    • Role (Rol): Choose an existing role (Elija un rol existente).

    • Existing role (Rol existente): lambda-role.

  4. Elija Create function (Crear función).

  5. Para configurar un evento de prueba, seleccione Test (Prueba).

  6. Para Event name (Nombre de evento), escriba test.

  7. Seleccione Create (Crear).

  8. Para invocar la función, elija Test (Probar).

La consola crea una función de Lambda con un único archivo de origen denominado index.js. Puede editar este archivo y agregar más archivos en el editor de código integrado. Para guardar los cambios, elija Save. A continuación, para ejecutar el código, elija Test (Probar).

nota

La consola de Lambda utiliza AWS Cloud9 para proporcionar un entorno de desarrollo integrado en el navegador. También puede utilizar AWS Cloud9 para desarrollar funciones Lambda en su propio entorno. Para obtener más información, consulte Trabajar con funciones Lambda en la Guía del usuario de AWS Cloud9.

El archivo index.js 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.

Cada vez que guarde el código de la función, la consola de Lambda crea un paquete de implementación, que es un archivado mediante archivos .zip que contiene el código de la función. A medida que avanza su función de desarrollo, querrá almacenar su código de función en el control del código fuente, agregar bibliotecas y automatizar las implementaciones. Comience creando un paquete de implementación y actualizando el código en la línea de comandos.

nota

Para comenzar con el desarrollo de aplicaciones en su entorno local, implemente una de las aplicaciones de ejemplo disponibles en el repositorio de GitHub de esta guía.

Aplicaciones de Lambda de ejemplo en Node.js

  • blank-nodejs: una función de Node.js que muestra el uso de registro, las variables de entorno, el seguimiento de AWS X-Ray, las capas, las pruebas de unidad y el SDK de AWS.

  • nodejs-apig: una función con un punto de enlace de API público que procesa un evento desde API Gateway y devuelve una respuesta HTTP.

  • rds-mysql: una función que transmite consultas a una base de datos MySQL para RDS. Este ejemplo incluye una VPC privada y una instancia de base de datos configurada con una contraseña en AWS Secrets Manager.

  • efs-nodejs: una función que utiliza un sistema de archivos de Amazon EFS en una Amazon VPC. Este ejemplo incluye una VPC, un sistema de archivos, objetivos de montaje y un punto de acceso configurados para su uso con Lambda.

  • list-manager: una función procesa eventos de un flujo de datos de Amazon Kinesis y actualiza listas agregadas en Amazon DynamoDB. La función almacena un registro de cada evento en una base de datos MySQL for RDS en una VPC privada. Este ejemplo incluye una VPC privada con un punto de enlace de la VPC para DynamoDB y una instancia de base de datos.

  • error-processor: una función Node.js genera errores para un porcentaje especificado de solicitudes. Una suscripción de CloudWatch Logs invoca una segunda función cuando se registra un error. La función de procesador utiliza el SDK de AWS para recopilar detalles sobre la solicitud y almacenarlos en un bucket de Amazon S3.

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. Más información disponible en las variables de entorno.

La función de Lambda incluye un grupo de registros de CloudWatch Logs. El tiempo de ejecución de la función envía detalles sobre cada invocación a CloudWatch Logs. Retransmite cualquier registro que genere la función durante la invocación. Si la función devuelve un error, Lambda formatea el error y se lo devuelve al invocador.