AWS Lambda Desencadenada por SQS SQS aumenta solicitud de recuento

votos
3

Tengo una función de AWS Lambda que se desencadena por SQS. Esta función se activa aproximadamente 100 veces al día, pero el recuento solicitud a la cola SQS es aproximadamente 20.000 veces al día. No entiendo por qué el número de solicitudes presentadas a la SQS es demasiado alto. Mi expectativa es que el número de peticiones hechas al SQS debe ser el mismo con la invocación Lambda.

Sólo tengo una función lambda y una cola SQS en mi cuenta.

Puede estar relacionado con el sondeo de la cola de SQS? He intentado cambiar el intervalo de sondeo de SQS desde la configuración de la cola, pero nada cambió. Otra posibilidad es cambiar intervalo de sondeo desde la configuración de la función Lambda. Sin embargo, no puedo encontrar cualquier parámetro relacionado.

Briefy, Quiero reducir el número de solicitud de SQS, ¿cómo puedo hacer que mientras se invoca la función Lmabda con SQS?

Publicado el 20/10/2018 a las 10:26
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
9

Cuando se utiliza como una fuente de SQS caso de AWS Lambda, AWS Lambda periódicamente encuestas a los SQS configurados hacen cola para ir a buscar nuevos mensajes. Mientras que la documentación oficial no está claro realmente acerca de eso, el blog anunciando que la función entra en los detalles:

Cuando una asignación de origen evento SQS se crea inicialmente y activado, o cuando aparecen los primeros mensajes después de un período sin tráfico, entonces el servicio Lambda se inicie el sondeo de la cola SQS utilizando cinco conexiones de votación a largo paralelas.

De acuerdo con la documentación de AWS , la duración predeterminada de una larga encuesta de AWS Lambda de SQS es de 20 segundos.

Eso da lugar a cinco solicitudes de SQS cada 20 segundos para funciones AWS Lambda sin carga significativa, que resume a la ~ 21.600 por día, que está cerca del 20000 que está experimentando.

Al tiempo que aumenta la duración sondeo larga parece una manera fácil de reducir el número de solicitudes, eso no es posible, ya que los 20 segundos AWS Lambda está utilizando de forma predeterminada ya es la duración máxima posible para una cola de SQS . Me temo que no hay una manera fácil de reducir las peticiones a SQS, cuando se utiliza como fuente de eventos de AWS Lambda. En lugar dependiendo podría valer la pena evaluar si otra fuente de eventos, como SNS, encajaría su caso de uso también.

Respondida el 20/10/2018 a las 12:18
fuente por usuario

votos
2

Aquí es cómo se implementó originalmente cuando no hay gatillo SQS.

Crear un disparador SNS con el SQS CloudWatch Métricas

ApproximateNumberOfMessagesVisible> 0

Desencadenar una Lambda del SNS, leer los mensajes de SQS y entregarlo a cualquiera que sea el lambda necesita el mensaje.

Como alternativa, puede utilizar Kinesis para entregarlo a Lambda.

SQS -> CloudWatch (Trigger Lambda) -> Lambda (lee los mensajes) -> Kinesis (Set Tamaño de lote) -> Lambda (Handle mensaje real)

También se puede utilizar directamente Kinesis pero no hay retraso en la entrega.

Espero eso ayude.

Respondida el 21/10/2018 a las 18:33
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more