Solución de problemas en las implementaciones de Lambda - AWS Lambda

Solución de problemas en las implementaciones de Lambda

Al actualizar su función, Lambda implementa el cambio iniciando nuevas instancias de la función con el código o la configuración actualizados. Los errores de implementación impiden que se utilice la nueva versión y pueden deberse a problemas con el paquete de implementación, el código, los permisos o las herramientas.

Cuando implementa actualizaciones en su función directamente con la API de Lambda o con un cliente como la AWS CLI, puede ver errores de Lambda directamente en la salida. Si utiliza servicios como AWS CloudFormation, AWS CodeDeploy o AWS CodePipeline, busque la respuesta de Lambda en los registros o en la secuencia de eventos del servicio.

Los temas siguientes proporcionan consejos para solucionar problemas de errores y problemas que puedan surgir al utilizar la API de Lambda, la consola o las herramientas. Si se encuentra con un problema que no aparezca en esta lista, puede utilizar el botón Comentarios de esta página para notificarlo.

Para obtener más consejos sobre la resolución de problemas y respuestas a preguntas comunes de soporte, visite el Centro de conocimientos de AWS.

Para obtener más información acerca de la depuración y la resolución de problemas de las aplicaciones de Lambda, consulte Debugging en Serverless Land.

General: Se deniega el permiso/No se puede cargar dicho archivo

Error: EACCES: permission denied, open '/var/task/index.js'

Error: cannot load such file -- function

Error: [Errno 13] Permission denied: '/var/task/function.py'

El tiempo de ejecución de Lambda necesita permiso para leer los archivos del paquete de implementación. En la notación octal de permisos de Linux, Lambda necesita 644 permisos para archivos no ejecutables (rw-r--r--) y 755 permisos (rwxr-xr-x) para directorios y archivos ejecutables.

En Linux y macOS, utilice el comando chmod para cambiar los permisos de los archivos y directorios del paquete de implementación. Por ejemplo, para brindarle a un archivo ejecutable los permisos correctos, ejecute el siguiente comando.

chmod 755 <filepath>

Para cambiar los permisos de los archivos en Windows, consulte Set, View, Change, or Remove Permissions on an Object en la documentación de Microsoft Windows.

General: se produce un error al llamar al UpdateFunctionCode

Error: An error occurred (RequestEntityTooLargeException) when calling the UpdateFunctionCode operation

Cuando carga un paquete de implementación o un archivo de capa directamente en Lambda, el tamaño del archivo ZIP está limitado a 50 MB. Para cargar un archivo más grande, almacénelo en Amazon S3 y utilice los parámetros S3Bucket y S3Key.

nota

Cuando carga un archivo directamente con la AWS CLI, el SDK de AWS o de otro modo, el archivo ZIP binario se convierte a base64, que aumenta su tamaño en aproximadamente un 30 %. Para permitir esto y el tamaño de otros parámetros de la solicitud, el límite de tamaño de solicitud real que aplica Lambda es mayor. Por este motivo, el límite de 50 MB es aproximado.

Amazon S3: Código de error PermanentRedirect.

Error: se produjo un error mientras GetObject. Código de error S3: PermanentRedirect. Mensaje de error S3: el bucket está en esta región: us-east-2. Utilice esta región para volver a intentar la solicitud

Cuando carga el paquete de implementación de una función desde un bucket Amazon S3, el bucket debe estar en la misma Región que la función. Este problema puede producirse cuando especifica un objeto Amazon S3 en una llamada a UpdateFunctionCode, o utiliza el paquete y los comandos de implementación en la CLI de AWS CLI o en la CLI de AWS SAM. Cree un bucket de artefactos de implementación para cada Región donde desarrolle aplicaciones.

General: No se puede encontrar, no se puede cargar, no se puede importar, clase no encontrada, ningún archivo o directorio

Error: Cannot find module 'function'

Error: cannot load such file -- function

Error: Unable to import module 'function'

Error: Class not found: function.Handler

Error: fork/exec /var/task/function: no such file or directory

Error: Unable to load type 'Function.Handler' from assembly 'Function'.

El nombre del archivo o clase en la configuración del controlador de su función no coincide con su código. Consulte la siguiente sección para obtener más información.

General: controlador de método no definido

Error: index.handler is undefined or not exported

Error: Handler 'handler' missing on module 'function'

Error: undefined method `handler' for #<LambdaHandler:0x000055b76ccebf98>

Error: No public method named handleRequest with appropriate method signature found on class function.Handler

Error: Unable to find method 'handleRequest' in type 'Function.Handler' from assembly 'Function'

El nombre del método de controlador en la configuración del controlador de su función no coincide con su código. Cada motor de ejecución define una convención de nomenclatura para los controladores, como nombredearchivo.nombredelmétodo. El controlador es el método en el código de su función ejecutado por el motor de ejecución cuando se invoca la función.

En algunos idiomas, Lambda proporciona una biblioteca con una interfaz que espera que un método de controlador tenga un nombre específico. Para obtener información detallada sobre la nomenclatura de controladores para cada idioma, consulte los temas siguientes.

Lambda: error de conversión de la capa

Error: error de conversión de la capa de Lambda. Para obtener consejos sobre cómo resolver este problema, consulte la página Solucionar problemas de implementación en Lambda en la Guía del usuario de Lambda.

Al configurar una función de Lambda con una capa, Lambda la fusiona con el código de la función. Si este proceso no se completa, Lambda devuelve este error. Si encuentra este error, siga estos pasos:

  • Eliminar cualquier archivo no utilizado de la capa

  • Eliminar cualquier enlace simbólico de la capa

  • Cambie el nombre de cualquier archivo que tenga el mismo nombre que un directorio en cualquiera de las capas de la función

Lambda: InvalidParameterValueException o RequestEntityTooLargeException

Error: InvalidParameterValueException: Lambda no pudo configurar las variables de entorno porque las variables de entorno que ha proporcionado han excedido el límite de 4 KB. Cadena medida: {"A1":"uSFeY5cyPiPn7AtnX5BsM...

Error: RequestEntityTooLargeException: la solicitud debe ser menor de 5120 bytes para la operación UpdateFunctionConfiguration

El tamaño máximo del objeto de variables que se almacena en la configuración de la función no debe exceder los 4096 bytes. Esto incluye nombres clave, valores, comillas, comas y corchetes. El tamaño total del cuerpo de la solicitud HTTP también es limitado.

{ "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Runtime": "nodejs20.x", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Environment": { "Variables": { "BUCKET": "DOC-EXAMPLE-BUCKET", "KEY": "file.txt" } }, ... }

En este ejemplo, el objeto tiene 39 caracteres y ocupa 39 bytes cuando se almacena (sin espacios en blanco) como la cadena {"BUCKET":"DOC-EXAMPLE-BUCKET","KEY":"file.txt"}. Los caracteres ASCII estándar en valores de variables de entorno utilizan un byte cada uno. Los caracteres ASCII y Unicode extendidos pueden usar entre 2 y 4 bytes por carácter.

Lambda: InvalidParameterValueException

Error: InvalidParameterValueException: Lambda no pudo configurar las variables de entorno porque las variables de entorno que ha proporcionado contienen claves reservadas que actualmente no se admiten para su modificación.

Lambda reserva algunas claves de variables de entorno para uso interno. Por ejemplo, el motor de ejecución usa AWS_REGION para determinar la región actual y no se puede reemplazar. Otras variables, como PATH, son usadas por el tiempo de ejecución, pero se pueden extender en la configuración de su función. Para obtener una lista completa, consulte Variables definidas de entorno de tiempo de ejecución.

Lambda: cuotas de simultaneidad y memoria

Error: ConcurrentExecutions especificada para la función reduce UnreservedConcurrentExecution de la cuenta por debajo de su valor mínimo

Error: el valor ‘MemorySize’ no cumplió con la restricción de seguridad: el miembro debe tener un valor menor o igual a 3008

Estos errores se producen cuando se supera la simultaneidad o las cuotas de memoria para su cuenta. Las nuevas cuentas de AWS tienen cuotas de simultaneidad y memoria reducidas. Para resolver errores relacionados a la simultaneidad, puede solicitar un aumento de cuota. No puede solicitar aumentos de cuota.

  • Simultaneidad: puede que se produzca un error si intenta crear una función mediante simultaneidad reservada o aprovisionada, o si la solicitud de simultaneidad por función (PutFunctionConcurrency) supera la cuota de simultaneidad de su cuenta.

  • Memoria: se producen errores si la cantidad de memoria asignada a la función supera la cuota de memoria de la cuenta.