Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

790
Vistas
Cómo limitar la concurrencia de un paso en funciones de paso

Tengo una máquina de estado en AWS. Quiero limitar la concurrencia de una tarea (creada a través de lambda) para reducir el tráfico a una de mis API descendentes.

Puedo restringir la simultaneidad de lambda, pero la tarea falla con el error "Lambda.TooManyExecutions". ¿Puede alguien compartir un enfoque simple para limitar la concurrencia de una tarea lambda?

Gracias, Vinod.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Dentro de la misma ejecución de la máquina de estado

Puede usar un estado de mapa para ejecutar estas tareas en paralelo y usar la configuración de simultaneidad máxima para reducir las ejecuciones excesivas de lambda.

El estado del mapa ("Tipo": "Mapa") se puede usar para ejecutar un conjunto de pasos para cada elemento de una matriz de entrada. Mientras que el estado Parallel ejecuta múltiples ramas de pasos usando la misma entrada, un estado Map ejecutará los mismos pasos para múltiples entradas de una matriz en la entrada de estado.

  • MaxConcurrency (Opcional) El valor del campo MaxConcurrency es un número entero que proporciona un límite superior sobre cuántas invocaciones del iterador se pueden ejecutar en paralelo. Por ejemplo, un valor MaxConcurrency de 10 limitará su estado de mapa a 10 iteraciones simultáneas que se ejecutan a la vez.

Esto debería reducir la probabilidad de problemas. Dicho esto, aún se beneficiaría de agregar una declaración de reintento para estos casos. Aquí hay un ejemplo :

 { "Retry": [ { "ErrorEquals": ["Lambda.TooManyRequestsException", "Lambda.ServiceException"], "IntervalSeconds": 2, "MaxAttempts": 6, "BackoffRate": 2 } ] }

A través de diferentes ejecuciones

Si desea controlar esta concurrencia en diferentes ejecuciones, deberá implementar algún tipo de control por separado. Una forma de preparar su máquina de estado para eso es solicitar los datos que necesita y luego usar una actividad para esperar una respuesta.

over 4 years ago · Santiago Trujillo Denunciar

0

Puede usar la concurrencia lambda que mencionó, pero luego agregar una cláusula de reintento a su función de paso para que cuando alcance el límite de concurrencia, las funciones de paso administren el reintento de esa tarea que falló.

https://docs.aws.amazon.com/step-functions/latest/dg/concepts-error-handling.html#error-handling-examples

Hay un límite para el número de reintentos, pero puedes definirlo.

Alternativamente, si desea volver a intentarlo sin límite, puede usar catch para pasar a un estado de espera cuando se produzca esa concurrencia. También puede leer sobre la captura en el enlace de arriba. Aquí hay un documento de estado de espera.

https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-wait-state.html

Solo tiene que hacer la transición del estado de espera al estado de la tarea después de que complete su espera.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda