Configurar la simultaneidad reservada para una función
En Lambda, la simultaneidad es la cantidad de solicitudes en tránsito que la función administra en la actualidad. Hay dos tipos de controles de concurrencia disponibles:
-
Simultaneidad reservada: representa la cantidad máxima de instancias simultáneas asignadas a la función. Cuando una función ha reservado simultaneidad, ninguna otra función puede usarla. La simultaneidad reservada es útil para garantizar que las funciones más importantes siempre tengan suficiente simultaneidad para manejar las solicitudes entrantes. No hay ningún cargo adicional por configurar la concurrencia reservada para una función.
-
Simultaneidad aprovisionada: es la cantidad de entornos de ejecución preinicializados asignados a la función. Estos entornos de ejecución están listos para responder de forma inmediata a las solicitudes de funciones entrantes. La simultaneidad aprovisionada es útil para reducir las latencias de arranque en frío de las funciones. La configuración de la simultaneidad aprovisionada genera cargos adicionales para su Cuenta de AWS.
En este tema se detalla cómo administrar y configurar la simultaneidad reservada. Para obtener una descripción general conceptual de estos dos tipos de controles de simultaneidad, consulte Simultaneidad reservada y simultaneidad aprovisionada. Para obtener información sobre la configuración de la simultaneidad aprovisionada, consulte Configuración de simultaneidad aprovisionada para una función.
nota
Las funciones de Lambda enlazadas a una asignación de orígenes de eventos de Amazon MQ tienen una simultaneidad máxima predeterminada. Para Apache Active MQ, el número máximo de instancias simultáneas es 5. Para Rabbit MQ, el número máximo de instancias simultáneas es 1. Establecer una simultaneidad reservada o aprovisionada para su función no cambia estos límites. Para solicitar un aumento de la simultaneidad máxima predeterminada al utilizar Amazon MQ, póngase en contacto con AWS Support.
Secciones
Configuración de la simultaneidad reservada
Puede configurar la simultaneidad reservada de una función a través la consola o la API de Lambda.
Para reservar la simultaneidad de una función (consola)
Abra la página de Funciones
en la consola de Lambda. -
Elija la función para la que desea reservar la simultaneidad.
-
Elija Configuración y, a continuación, elija Simultánea.
-
En Simultaneidad, elija Editar.
-
Seleccione Simultaneidad de reserva. Escriba la cantidad de simultaneidad que reservar para la función.
-
Seleccione Guardar.
Puede reservar hasta el valor de Simultaneidad de cuenta sin reserva menos 100. Las 100 unidades restantes son para funciones que no utilizan la simultaneidad reservada. Por ejemplo, si la cuenta tiene un límite de simultaneidad de 1000, no puede reservar las 1000 unidades de simultaneidad para una sola función.
![Se produce un error si intenta reservar demasiada simultaneidad.](images/concurrency-reserve-over-limit.png)
Reservar simultaneidad para una función puede afectar al grupo de simultaneidad que está disponible para otras funciones. Por ejemplo, si reserva 100 unidades de simultaneidad para function-a
, otras funciones de su cuenta deberán compartir las 900 unidades restantes, incluso si function-a
no utiliza las 100 unidades de simultaneidad reservadas.
Para aplicar la limitación controlada a una función de forma intencional, establezca la simultaneidad reservada en 0. Esto impide que la función pueda procesar los eventos hasta que elimine el límite.
Para configurar la simultaneidad reservada con la API de Lambda, use las siguientes operaciones de la API.
Para configurar la simultaneidad reservada con la AWS Command Line Interface (CLI), use el comando put-function-concurrency
. El siguiente comando reserva 100 unidades de simultaneidad para una función llamada my-function
:
aws lambda put-function-concurrency --function-name my-function \ --reserved-concurrent-executions 100
Debería ver una salida con un aspecto similar al siguiente:
{ "ReservedConcurrentExecutions": 100 }
Estimar con precisión la simultaneidad reservada requerida para una función
Si actualmente la función atiende el tráfico, puede ver fácilmente sus métricas de simultaneidad mediante las métricas de CloudWatch. En concreto, la métrica ConcurrentExecutions
muestra la cantidad de invocaciones simultáneas para cada función de la cuenta.
![Gráfico que muestra la simultaneidad de una función a lo largo del tiempo.](images/concurrency-concurrent-executions-metrics.png)
Según el gráfico anterior, esta función atiende un promedio de 5 a 10 solicitudes simultáneas en cualquier momento y alcanza un máximo de 20 solicitudes en un día normal. Supongamos que hay muchas otras funciones en la cuenta. Si esta función es esencial para la aplicación y no quiere descartar ninguna solicitud, utilice un número igual o mayor a 20 como configuración de la simultaneidad reservada.
Como alternativa, recuerde que también puede calcular la simultaneidad mediante la siguiente fórmula:
Concurrency = (average requests per second) * (average request duration in seconds)
Al multiplicar el promedio de solicitudes por segundo por la duración promedio de las solicitudes en segundos, obtendrá una estimación aproximada de la cantidad de simultaneidad que necesita reservar. Puede estimar el promedio de solicitudes por segundo mediante la métrica de Invocation
y la duración promedio de las solicitudes en segundos mediante la métrica de Duration
. Consulte Uso de métricas de funciones de Lambda para obtener más detalles.