¿Cómo puedo crear un paquete de despliegue de Lambda para Node.js?

5 minutos de lectura
0

Quiero crear un paquete de despliegue para una función de AWS Lambda en Node.js, pero me aparece el error «No se puede encontrar el módulo» durante la invocación.

Breve descripción

El error «No se puede encontrar el módulo» normalmente aparece por uno de estos tres motivos:

  • El paquete de despliegue de la función de Lambda no tiene la estructura de carpetas correcta para permitir que el servicio Lambda cargue los módulos y bibliotecas necesarios.
  • El paquete de despliegue no tiene los permisos de archivo correctos.
  • El paquete de despliegue no contiene el módulo que se está importando.

Nota: Lambda requiere permisos de lectura globales.

Resolución

Para crear un paquete de despliegue con el código de función en la carpeta raíz del archivo .zip y, a continuación, aplicar los permisos de lectura y ejecución a todos los archivos, haga lo siguiente.

Nota: Si recibe errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de utilizar la versión más reciente de AWS CLI.

Para Linux y macOS

Instalación de las dependencias en la carpeta del proyecto de la función

Nota: La mayoría de módulos de Node.js son independientes de la plataforma, pero algunos se compilan en entornos de sistemas operativos específicos. Lambda se ejecuta en un entorno Linux. Al instalar módulos con npm, se recomienda crear el archivo .zip en un entorno Linux para asegurarse de que se incluyen las dependencias de plataforma correctas.

1.    En la línea de comandos, cambie los directorios a la carpeta de su proyecto. Por ejemplo:

cd /project-folder-name

Importante: Asegúrese de reemplazar project-folder-name por el nombre de la carpeta del proyecto real.

2.    Instale sus dependencias localmente en la carpeta del proyecto de su función ejecutando el siguiente comando para cada módulo necesario para su función:

Nota: Incluya también el archivo fuente del controlador.

npm install package-name

Importante: Asegúrese de reemplazar package-name por el nombre del paquete real. También hay un límite de 250 MB en el tamaño de la función para los archivos descomprimidos. Incluya solo las bibliotecas que necesite para que se ejecute la función.

Por ejemplo, para instalar los módulos de AWS SDK para JavaScript en la raíz de una carpeta de proyecto, ejecute el siguiente comando:

npm install aws-sdk

Nota: Lambda incluye las bibliotecas de AWS SDK para JavaScript como parte de la configuración del contenedor base. Para usar una versión diferente de la biblioteca, también puede incluir una copia local. Para obtener más información sobre el entorno Lambda actual y las bibliotecas compatibles, consulte las versiones ejecutables de Lambda.

Creación del paquete de despliegue

En la línea de comandos, ejecute el siguiente comando:

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

**Nota:**Sustituya function-name por el nombre de archivo que desee asignar al paquete de despliegue. Esto coloca todos los archivos de la carpeta del proyecto en un archivo .zip ubicado en la carpeta principal.

Verificación del paquete de despliegue

1.    En la línea de comandos, ejecute el siguiente comando:

zipinfo ../function-name.zip

Nota: Sustituya function-name por el nombre de archivo real del paquete de despliegue. También puede ejecutar unzip -l en el archivo .zip para mostrar su contenido, pero el resultado no será tan detallado.

2.    Compruebe el resultado para asegurarse de que el archivo fuente del controlador de funciones se encuentra en la raíz del archivo .zip.

3.    Compruebe el resultado para verificar si los archivos tienen permisos de lectura globales. Para obtener más información, consulte ¿Cómo soluciono los errores de «permiso denegado» o «no se puede importar el módulo» al cargar un paquete de despliegue de Lambda?

Para Windows

Creación del paquete de despliegue

1.    En el explorador de archivos, abra la carpeta del proyecto.

2.    Seleccione todos los archivos del proyecto y, a continuación, haga clic con el botón derecho para abrir el menú contextual.

3.    Elija Enviar a y, a continuación, seleccione Carpeta comprimida (en zip).

4.    Introduzca un nombre para el archivo .zip.

Carga y verificación del paquete de despliegue

1.    En la consola de Lambda, seleccione su función.

2.    En Código de la función, para Tipo de entrada de código, elija Cargar un archivo .zip.

3.    En Paquete de funciones, seleccione Cargar.

4.    Elija el archivo .zip que ha creado y, a continuación, seleccione Abrir.

5.    En la parte superior de la consola, seleccione Guardar.

Consejo: También puede ejecutar update-function-code desde AWS CLI para cargar el archivo .zip.

6.    Una vez finalizada la carga, seleccione Probar.

Consejo: También puede usar 7-Zip desde la línea de comandos para verificar los permisos de archivo de su paquete de despliegue. Descárguelo del sitio web de 7-Zip.


Información relacionada

Desplegar funciones de Lambda de Node.js con ficheros de archivo .zip

Paquetes de despliegue de Lambda

Creación de funciones de Lambda con Node.js

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año