¿Por qué no es óptimo el escalado de mi función de Lambda con un origen de eventos de Amazon SQS?

5 minutos de lectura
0

Quiero que mi función de AWS Lambda tenga una simultaneidad óptima en el caso de mi origen de eventos de cola de Amazon Simple Queue Service (Amazon SQS).

Solución

Nota: Cuando se configura una cola de Amazon SQS como origen de eventos, las funciones de Lambda pueden escalar de forma óptima hasta 300 instancias más por minuto. El número máximo de invocaciones simultáneas es de 1000 en el caso de las colas estándar. Si utiliza la asignación de orígenes de eventos FIFO, las funciones podrán realizar un desescalado horizontal simultáneo hasta alcanzar, como máximo, el número de grupos de mensajes activos. Para obtener más información, consulte Scaling and processing.

Identificación y solución de los errores de invocación en una función de Lambda

Para evitar errores de escalado, Lambda limita el escalado de las funciones cuando se producen errores de invocación. Una vez solucionados los errores, Lambda continúa con el escalado de la función. Para obtener más información, consulte Backoff strategy for failed invocations. Para obtener recomendaciones sobre cómo solucionar los errores de invocación de una función de Lambda, consulte Troubleshooting issues in Lambda y ¿Cómo puedo solucionar los errores en la función de Lambda?

Configuración de la función de Lambda con una simultaneidad óptima para su caso práctico

Simultaneidad reservada

Si ha configurado la simultaneidad reservada para una función, Lambda limitará dicha función cuando alcance el valor reservado. Las asignaciones de orígenes de eventos no tienen en cuenta la simultaneidad reservada y pueden procesar más mensajes de la cola de los que se pueden enviar a la función.

El grado de simultaneidad reservada para la función debe tener los siguientes valores mínimos:

  • En el caso de las colas estándar de Amazon SQS: 1000
  • En el caso de las colas FIFO: El número de grupos de mensajes activos

Se desaconseja tener una simultaneidad reservada inferior al número de grupos de mensajes en la cola FIFO. Una simultaneidad reservada menor puede provocar retrasos en el procesamiento de la cola FIFO y una limitación de la función.

Importante: Para limitar el número de invocaciones simultáneas, utilice la configuración de la simultaneidad máxima para los orígenes de eventos de Amazon SQS en lugar de la simultaneidad reservada.

Simultaneidad no reservada

Si no configura la simultaneidad reservada para la función, esta tendrá una cuota de simultaneidad no reservada predeterminada de 1000. Esta cuota predeterminada se aplicará a otras funciones de la misma cuenta y región de AWS. Si tiene al menos una simultaneidad no reservada de 1000 disponible en la región de la función, esta se escalará hasta alcanzar la simultaneidad máxima disponible. Cuando se esté utilizando toda la simultaneidad de la cuenta, Lambda limitará las invocaciones.

Nota: Las funciones de Lambda se escalan inicialmente en función de la tasa de escalado de la simultaneidad.

Para evitar un escalado excesivo debido a picos repentinos de tráfico, Lambda puede limitar la velocidad de escalado de las funciones. La tasa de escalado de la simultaneidad define el límite máximo de velocidad de incremento de las funciones en una cuenta en respuesta al aumento de las solicitudes.

Importante: La tasa de escalado de la simultaneidad es un límite que se aplica en el nivel de función. Cada función de una cuenta se puede escalar por separado de las demás funciones. Así pues, la tasa de escalado de la simultaneidad difiere del límite de simultaneidad en el nivel de cuenta, que proporciona la cantidad total de simultaneidad disponible para las funciones.

Configuración de la simultaneidad máxima

La configuración de la simultaneidad máxima limita el número máximo de ejecuciones simultáneas de la función de Lambda de modo que no se supere un valor configurado. Cuando se establece la simultaneidad máxima para un origen de eventos, el valor solo se aplica a ese origen de eventos en cuestión. Los demás orígenes de eventos sin simultaneidad máxima utilizarán la cuota de simultaneidad restante de la cuenta o la simultaneidad reservada.

La simultaneidad reservada y la configuración de la simultaneidad máxima se pueden utilizar conjuntamente. Se recomienda no definir un valor para la configuración de la simultaneidad máxima superior a la simultaneidad reservada de la función, ya que podría provocar una limitación.

Confirmación de si hay suficientes mensajes en la cola de Amazon SQS para permitir el escalado de la función de Lambda

Si se ha configurado una cola de Amazon SQS de modo que invoque una función de Lambda, Lambda solo escalará las invocaciones cuando haya mensajes en la cola.

Para comprobar cuántos mensajes de la cola de Amazon SQS se deben procesar, revise la métrica ApproximateNumberOfMessagesVisible.

Si la métrica es baja o su valor es 0, no se podrá escalar la función.

Si la métrica es alta y no hay errores de invocación, aumente el tamaño del lote en la notificación de eventos. Incremente el tamaño del lote hasta que la métrica que mide la duración aumente más rápido que la que mide el tamaño del lote. Para obtener más información, consulte Monitoring functions on the Lambda console.

Nota: El tamaño máximo de lote en el caso de una cola estándar de Amazon SQS es de 10 000 registros. En el caso de las colas FIFO, el tamaño máximo de lote es de 10 registros. Para obtener más información, consulte ReceiveMessage.

Información relacionada

Using Lambda with Amazon SQS

Managing AWS Lambda function concurrency

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un mes