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

795
Vistas
¿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 Respuestas
Responde la pregunta

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 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