Mi función de AWS Lambda devuelve los errores de limitación «Rate exceeded» y «TooManyRequestsException».
Resolución
Verificar qué recurso está limitado
Es posible que los errores de aceleración no provengan de la función de Lambda. También se pueden producir limitaciones en las llamadas a la API en la invocación de tu función.
Para confirmar qué recurso está limitado, consulta las métricas y los registros de Amazon CloudWatch para ver si hay errores de limitación. Si no hay métricas de limitaciones de Lambda, la limitación se produce en las llamadas a la API en el código de la función de Lambda.
Comprobar el código y los registros de la función para ver si hay alguna llamada a la API limitada
Si las llamadas a la API están limitadas, asegúrate de utilizar un retraso exponencial en tu código para volver a intentar realizar las llamadas a la API.
Nota: Si necesita una cuota de transacciones por segundo (TPS) más alta para una llamada a la API, solicite un aumento de la cuota de servicio. No todas las cuotas son ajustables.
Comprobar las métricas de simultaneidad de las funciones de CloudWatch
Comprueba la métrica de Ejecuciones simultáneas de tu función en la región de AWS en la que se produce una limitación.
Ve la estadística Máxima para Ejecuciones simultáneas y la estadística de Suma para Limitaciones. Comprueba si las Ejecuciones simultáneas máximas están cerca de tu cuota de simultaneidad a nivel de cuenta en la región, junto con los puntos de datos correspondientes en el gráfico de Limitaciones.
Comprobar la cuota de simultaneidad
Comprueba si has superado la tasa de escalamiento de simultaneidad para la región de tu función. Tu tasa de escalamiento de simultaneidad es de 1000 instancias del entorno de ejecución cada 10 segundos. Para obtener más información, consulta ](https://docs.aws.amazon.com/lambda/latest/dg/scaling-behavior.html)Comportamiento de escalamiento de Lambda[.
En la página de métricas de Lambda en la consola de CloudWatch, reduce el intervalo de tiempo del gráfico a 1 minuto. Si la escala de ráfagas te limita, verás un pico de Limitaciones que corresponde a un patrón escalonado de Ejecuciones simultáneas en el gráfico.
Para evitar los límites de simultaneidad de ráfagas, puedes configurar la simultaneidad aprovisionada. También puedes solicitar un aumento del límite de simultaneidad para una función de Lambda.
Comprueba si hay picos en las métricas de duración de tu función
La simultaneidad depende de la duración de la función. Si el código de la función tarda demasiado en completarse, es posible que no haya suficientes recursos informáticos.
Revisa el campo Memoria máxima utilizada en tus registros de ejecución y compara el valor con la configuración de memoria configurada para la función. Si la memoria máxima utilizada está cerca de la memoria configurada, la función suele estar vinculada a la memoria. Para obtener más información, consulta Determinar la configuración de memoria adecuada para una función de Lambda.
Configuración de la simultaneidad reservada
Confirma que has configurado la simultaneidad reservada en tu función. La simultaneidad reservada actúa como límite de simultaneidad para la función y también la protege de otras funciones que podrían consumir la simultaneidad no reservada. Si bien la simultaneidad reservada puede mitigar la limitación de funciones, también puedes limitarla inadvertidamente.
Utiliza la consola de Lambda para comprobar la configuración de simultaneidad reservada. Si la simultaneidad reservada no está configurada, la función utiliza la simultaneidad no reservada. Cuando las invocaciones con funciones superan la simultaneidad no reservada, se produce una limitación.
Nota: Si has configurado una función con una simultaneidad reservada de cero, la función está limitada porque no puede procesar ningún evento. Asegúrate de aumentar el valor a un número mayor que cero.
Para configurar o aumentar la simultaneidad reservada, consulta Configuración de la simultaneidad reservada para una función. Para solucionar problemas de simultaneidad reservada, consulta ¿Cómo soluciono los problemas de simultaneidad reservada de Lambda?
Uso del retroceso exponencial
Para evitar errores de limitación, utiliza el retroceso exponencial y los reintentos cuando realices una llamada a la API. Se recomienda utilizar un retroceso exponencial en la aplicación para realizar llamadas a la API para la función de Lambda.
Para obtener más información, consulta Retroceso exponencial y fluctuación y Comportamiento de reintento. Asegúrate de distribuir las llamadas a la API a lo largo del tiempo. Programa las acciones con aleatorización para que se distribuyan a lo largo del tiempo.
Uso de una cola de mensajes fallidos
Para los orígenes de eventos asincrónicos, como Amazon Simple Storage Service (Amazon S3) y el Programador de Amazon EventBridge, configura la función con una cola de mensajes fallidos. A continuación, comprueba la gestión de errores para la configuración de invocación asíncrona. La cola de mensajes fallidos detecta cualquier evento que se descarte debido a las limitaciones constantes y puedes proteger tus datos.
Nota: Para los orígenes de eventos de Amazon Simple Queue Service (Amazon SQS), debes configurar la cola de mensajes fallidos en la cola de Amazon SQS.
Solicitud de un aumento de la cuota de servicio
Si tu carga de trabajo requiere una cuota de servicio más alta para las ejecuciones simultáneas, solicita un aumento de la cuota de servicio.
Información relacionada
Prácticas recomendadas para trabajar con funciones de Lambda
Solución de problemas de invocación en Lambda
Comprender el comportamiento de reintento en Lambda