Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

798
Views
¿Cuándo SNS vuelve a intentar enviar un mensaje a Lambda? ¿Puedo forzarlo?

He configurado un Lambda así:

 exports.handler = async (event) => { throw new Error('I AM SAD'); };

Se puede invocar tanto desde un tema de SNS como desde API Gateway.

También configuré un tema de SNS con dos suscripciones; uno envía mensajes directamente a Lambda (usando el protocolo Lamba); el otro lo envía a través de API Gateway (HTTPS). Me gustaría que SNS vuelva a intentar enviar el mensaje cuando falle la lambda. Pero solo parece funcionar a través de API Gateway. Cuando Lambda se invoca directamente, SNS solo lo intenta una vez (e informa SUCCESS).

Sé que existe algún tipo de política de reintento incluso para SNS -> Lambda, pero ¿cuándo se activa esto? Para SNS -> HTTP, parece activarse cuando recibe un código de error HTTP.

De Amazon SNS Dead-Letter Queues - Amazon Simple Notification Service :

Los errores del lado del cliente pueden ocurrir cuando Amazon SNS tiene metadatos de suscripción obsoletos. Estos errores suelen ocurrir cuando un propietario elimina el punto de enlace (por ejemplo, una función de Lambda suscrita a un tema de Amazon SNS) o cuando un propietario cambia la política adjunta al punto de enlace suscrito de manera que evita que Amazon SNS entregue mensajes al punto de enlace. Amazon SNS no vuelve a intentar la entrega del mensaje que falla como resultado de un error del lado del cliente.

¿Una lambda fallida (como la anterior) se considera un error del lado del cliente? ¿Puedo forzar un error del lado del servidor?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Una excepción lanzada por una función de Lambda no es un error del lado del cliente. Esos ocurren debido a una mala configuración, no a excepciones en el código de función.

SNS solo lo intenta una vez (y reporta ÉXITO).

Esto es como fue diseñado. SNS pasó correctamente una solicitud al servicio de Lambda para invocar de forma asíncrona su función de Lambda con la carga del mensaje que publicó en SNS.

Cuando SNS invoca una función Lambda, entrega esa solicitud al servicio Lambda solo una vez. La única vez que SNS volverá a intentarlo es si no logra comunicarse con el servicio de Lambda o si la solicitud no está autorizada, lo que sucedería si una interrupción dentro de Lambda o SNS o entre los servicios impidiera que se comunicaran, o si los permisos no son correctos.

Amazon SNS invoca su función de forma asíncrona con un evento que contiene un mensaje y metadatos.

...

Para la invocación asíncrona, Lambda pone en cola el mensaje y maneja los reintentos. Si Amazon SNS no puede comunicarse con Lambda o se rechaza el mensaje, Amazon SNS vuelve a intentarlo a intervalos crecientes durante varias horas. Para obtener más información, consulte Confiabilidad en las preguntas frecuentes de Amazon SNS.

https://docs.aws.amazon.com/lambda/latest/dg/with-sns.html

Una vez que se ha entregado la solicitud de invocación, SNS no tiene más participación en el evento.

Es el servicio de Lambda el que vuelve a intentar las invocaciones fallidas.

Varios servicios de AWS, como Amazon Simple Storage Service (Amazon S3) y Amazon Simple Notification Service (Amazon SNS), invocan funciones de forma asíncrona para procesar eventos. Cuando invoca una función de forma asincrónica, no espera una respuesta del código de la función. Le pasa el evento a Lambda y Lambda se encarga del resto. Puede configurar cómo Lambda maneja los errores y puede enviar registros de invocación a un recurso descendente para encadenar componentes de su aplicación.

https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html

De forma predeterminada, debería ver registros que indican que Lambda invocó su función de generación de excepciones 3 veces en total, después de un reintento de 1 minuto y luego de 2 minutos.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!