¿Cómo puedo solucionar los errores en la función de Lambda?

8 minutos de lectura
0

Cuando intento invocar mi función de AWS Lambda, falla y devuelve un error.

Solución

Para solucionar errores en las funciones de Lambda, determine la causa del error mediante uno o varios de los servicios y funciones de AWS que se enumeran en este artículo. A continuación, siga los enlaces proporcionados para revisar las prácticas recomendadas de solución de problemas para cada problema.

Identificación y solución de cualquier error de red

Si hay problemas con la configuración de red de Lambda, aparecen muchos tipos de errores. A continuación se muestran algunos de los errores más habituales relacionados con las redes de Lambda:

Si la función no está en una nube virtual privada (VPC) y ha intentado acceder a los recursos con un nombre de DNS privado, aparece el siguiente error:

UnknownHostException
Error: getaddrinfo ENOTFOUND

Si la función está en una VPC y, a continuación, pierde el acceso a Internet o se agota el tiempo de espera, aparece el siguiente error:

connect ETIMEDOUT 176.32.98.189:443
Task timed out after 10.00 seconds

Si la VPC en la que se encuentra la función alcanza su límite de interfaz de red elástica, aparece el siguiente error:

ENILimitReachedException: The elastic network interface limit was reached for the function's VPC.

Si se interrumpe la conexión del protocolo de control de transmisión (TCP), aparece el siguiente error:

Connection reset by peer
ECONNRESET
ECONNREFUSED

Solución de errores de red de Lambda

1.    Confirme que su Amazon Virtual Private Cloud (VPC) cuente con una ruta de red válida hasta el punto de enlace al que su función intenta llegar. Para obtener más información, consulte Configuring a Lambda Function to Access Resources in a VPC.

2.    Confirme que la función tenga acceso a Internet. Para obtener más información, consulte ¿Cómo doy acceso a Internet a una función de Lambda que está conectada a una Amazon VPC? Consulte también ¿Cómo soluciono los problemas de tiempo de espera con una función de Lambda que se encuentra en una Amazon VPC?

3.    Para solucionar problemas relacionados con la resolución de DNS, asegúrese de que la VPC esté configurada para el acceso a recursos privados. Si no utiliza el DNS proporcionado por AWS, use una instancia de EC2 para asegurarse de que la opción DHCP personalizada que se ha proporcionado resuelve el nombre de DNS correctamente. Para obtener más información, consulte How does DNS work and how do I troubleshoot partial or intermittent DNS failures?

Nota: Si no puede determinar por qué el código de la función no llega a un punto de enlace público después de revisar la configuración de la VPC, active los registros de flujo de VPC. Los registros de flujo de VPC le permiten ver todo el tráfico de red que fluye hacia una VPC y desde esta. Los registros de flujo de VPC también le permiten determinar por qué una solicitud específica se denegó o no se envió. Para obtener más información, consulte Troubleshoot networking issues in Lambda.

Identificación y solución de cualquier error de permisos

Si los permisos de seguridad del paquete de despliegue de Lambda son incorrectos, aparece uno de los siguientes errores:

  • EACCES: permission denied, open '/var/task/index.js'
  • cannot load such file -- function
  • [Errno 13] Permission denied: '/var/task/function.py'

La versión ejecutable de Lambda necesita permiso para leer los archivos del paquete de despliegue. Puede usar el comando chmod para cambiar el modo del archivo. Los siguientes comandos de ejemplo hacen que cualquier usuario pueda leer todos los archivos y carpetas del directorio actual:

chmod -R o+rX .

Para obtener más información, consulte Troubleshoot deployment issues in Lambda.

Si sus identidades de AWS Identity and Access Management (IAM) no tienen permiso para invocar una función, se mostrará el siguiente error:

User: arn:aws:iam::123456789012:user/developer is not authorized to perform: lambda:InvokeFunction on resource: my-function

Solución de errores de permisos de Lambda

Revise las entradas del archivo de registro de Lambda en AWS CloudTrail. El solicitante que hace llamadas a Lambda debe tener los permisos de IAM necesarios para invocar su función. Para conceder los permisos necesarios, actualice los permisos de la función de Lambda.

Para más información, consulte los siguientes artículos:

Identificación y solución de cualquier error de código

Si hay problemas con su código de Lambda, verá muchos tipos de errores. A continuación se muestran algunos de los errores más habituales relacionados con el código de Lambda:

  • Unable to marshal response: Object of type AttributeError is not JSON serializable
  • Issue: The AWS SDK included on the runtime is not the latest version
  • (Node.js) Function returns before code finishes executing
  • KeyError

Solución de errores de código de Lambda

1.    Revise los registros de Amazon CloudWatch para Lambda.

Puede usar CloudWatch para ver todos los registros generados por el código de su función e identificar posibles problemas. Para obtener más información, consulte Accessing Amazon CloudWatch Logs for AWS Lambda. Para obtener más información sobre el registro de funciones, consulte las siguientes instrucciones de registro de funciones de Lambda para el lenguaje de programación que esté utilizando:

Nota: Si la función devuelve un rastreo de la pila, el mensaje de error del rastreo de la pila especifica la causa del error.

2.    Utilice AWS X-Ray para identificar cualquier obstáculo en el rendimiento del código. Si la función de Lambda usa recursos, microservicios, bases de datos o API web HTTP posteriores a AWS, puede usar AWS X-Ray para solucionar problemas de rendimiento del código. Para obtener más información, consulte Using AWS Lambda with AWS X-Ray.

3.    Confirme que el paquete de despliegue de la función pueda importar cualquier dependencia necesaria. Siga las instrucciones de los paquetes de despliegue de Lambda para el lenguaje de programación que esté utilizando:

Nota: También puede utilizar capas de Lambda para agregar dependencias que estén fuera de su paquete de despliegue.

4.    (Para el código desplegado como imagen de contenedor) Confirme que está instalando el cliente de la interfaz de la versión ejecutable y que está desplegando la imagen correctamente. Siga las instrucciones de la imagen de contenedor para el lenguaje de programación que esté utilizando:

Identificación y solución de cualquier error de limitación

Si la función se limita, aparece el siguiente error:

Rate exceeded
429 TooManyRequestsException

Solución de errores de limitación de Lambda

Revise las métricas de CloudWatch para Lambda. Para obtener más información, consulte Working with Lambda function metrics.

Métricas clave que se deben supervisar:

  • ConcurrentExecutions
  • UnreservedConcurrentExecutions
  • Throttles

Nota: Si las solicitudes para invocar la función llegan más rápido de lo que la función puede escalar o superar el límite de simultaneidad, las solicitudes fallan y se produce un error de limitación 429. Para obtener más información, consulte Lambda function scaling. También ¿Cómo soluciono los problemas de limitación de la función de Lambda con los errores «Rate exceeded» y 429 «TooManyRequestsException»?

Identificación y solución de cualquier error de Invoke API 500 y 502

Si se produce un error en la solicitud de invocación, aparecerá alguno de los siguientes errores 502 o 500 del lado del servidor:

  • InvalidRuntimeException
  • InvalidSecurityGroupIDException
  • InvalidZipFileException
  • KMSAccessDeniedException
  • KMSNotFoundException
  • You have exceeded the maximum limit for Hyperplane ENIs for your account
  • SubnetIPAddressLimitReachedException

Solución de los errores de Lambda Invoke API 500 y 502

Siga las instrucciones de ¿Cómo soluciono los errores de los códigos de estado HTTP 502 y HTTP 500 (del lado del servidor) de AWS Lambda?Para obtener una lista de los posibles errores y sus descripciones, consulte la referencia Errores en la API de invocación de Lambda.

Identificación y solución de cualquier error en la imagen del contenedor

Si utiliza imágenes de contenedor y hay un problema con una imagen de contenedor, se mostrará alguno de los siguientes errores:

  • "errorType": "Runtime.InvalidEntrypoint"
  • Error: You are using an AWS CloudFormation template, and your container ENTRYPOINT is being overridden with a null or empty value.

Solución de errores de imagen de contenedor de Lambda

Siga las instrucciones de Troubleshoot container image issues in Lambda.


Información relacionada

Monitoring and troubleshooting Lambda applications

Error handling and automatic retries in Lambda

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año