Colas de mensajes fallidos (DLQ) de Amazon SNS - Amazon Simple Notification Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Colas de mensajes fallidos (DLQ) de Amazon SNS

Una cola de mensajes fallidos es una cola de Amazon SQS a la que una suscripción de Amazon SNS puede enviar mensajes que no se pueden entregar de manera correcta a los suscriptores. Los mensajes que no se pueden entregar debido a errores del cliente o errores del servidor se mantienen en la cola de mensajes fallidos para su posterior análisis o reprocesamiento. Para obtener más información, consulte Configuración de una cola de mensajes fallidos de Amazon SNS para una suscripción y Reintento de entrega de mensajes de Amazon SNS.

nota
  • La suscripción a Amazon SNS y la cola de Amazon SQS deben estar en la AWS misma cuenta y región.

  • En un tema FIFO, puede usar una cola FIFO de Amazon SQS como una cola de mensajes fallidos para la suscripción de Amazon SNS. Las suscripciones a temas FIFO utilizan colas FIFO y las suscripciones a temas estándar utilizan colas estándar.

  • Para utilizar una cola de Amazon SQS cifrada como cola de letra muerta, debe utilizar un KMS personalizado con una política de claves que conceda al servicio Amazon SNS el acceso principal a las acciones de la API. AWS KMS Para obtener más información, consulte Cifrado en reposo en esta guía y Protección de datos de Amazon SQS con el cifrado del lado del servidor (SSE) y AWS KMS en la Guía para desarrolladores de Amazon Simple Queue Service.

¿Por qué no se pueden entregar los mensajes?

En general, la entrega de mensajes falla cuando Amazon SNS no puede obtener acceso a un punto de enlace suscrito por un error en el lado del cliente o del servidor. Cuando Amazon SNS recibe un error del lado del cliente o continúa recibiendo un error en el lado del servidor de un mensaje que supera la cantidad de reintentos especificada por la política de reintentos correspondiente, descarta el mensaje, a menos que se adjunte una cola de mensajes fallidos a la suscripción. Las entregas fallidas no cambian el estado de las suscripciones. Para obtener más información, consulte Reintento de entrega de mensajes de Amazon SNS.

Errores del cliente

Los errores del lado del cliente pueden producirse cuando Amazon SNS tiene metadatos obsoletos de la suscripción. Estos errores suelen producirse cuando un propietario elimina el punto de enlace (por ejemplo, una función Lambda suscrita a un tema de Amazon SNS) o cuando un propietario cambia la política asociada al punto de enlace suscrito de forma que impide 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.

Errores del servidor

Los errores del servidor pueden producirse cuando el sistema responsable del punto de enlace suscrito deja de estar disponible o devuelve una excepción que indica que no puede procesar una solicitud válida procedente de Amazon SNS. Cuando se producen errores en el lado del servidor, Amazon SNS reintenta las entregas fallidas mediante una función de retroceso exponencial o lineal. En el caso de los errores del servidor causados por puntos de enlace AWS gestionados respaldados por Amazon SQS o Amazon SNS, Amazon AWS Lambda SNS vuelve a intentar la entrega hasta 100 015 veces, en un plazo de 23 días.

Los puntos de enlace administrados por el cliente (como HTTP, SMTP, SMS o inserción móvil) también pueden causar errores en el lado del servidor. Amazon SNS reintenta también la entrega a estos tipos de puntos de enlace. Aunque los puntos de enlace HTTP son compatibles con las políticas de reintentos definidas por el cliente, Amazon SNS establece una política interna de 50 reintentos de entrega durante 6 horas para los puntos de enlace SMTP, SMS e inserción móvil.

¿Cómo funcionan las colas de mensajes fallidos?

Como las entregas de mensajes se producen en el nivel de la suscripción, se adjunta una cola de mensajes fallidos a la suscripción de Amazon SNS (y no al tema). De este modo, puede identificar más fácilmente el punto de enlace de destino original de cada mensaje.

Las colas de mensajes fallidos que se adjuntan a las suscripciones de Amazon SNS son colas de Amazon SQS normales. Para obtener más información acerca del período de retención de mensajes, consulte Cuotas relacionadas con los mensajes en la Guía para desarrolladores de Amazon Simple Queue Service. Puede cambiar el período de retención de los mensajes con la acción SetQueueAttributes de la API de Amazon SQS. Para que las aplicaciones sean más resistentes, le recomendamos que establezca el período máximo de retención de las colas de mensajes fallidos en 14 días.

¿Cómo se transfieren los mensajes a una cola de mensajes fallidos?

Los mensajes se transfieren a la cola de mensajes fallidos a través de una política de redireccionamiento. Una política de redireccionamiento es un objeto JSON que hace referencia al ARN de la cola de mensajes fallidos. El atributo deadLetterTargetArn especifica el ARN. El ARN debe apuntar a una cola de Amazon SQS en la Cuenta de AWS misma región y región que su suscripción a Amazon SNS. Para obtener más información, consulte Configuración de una cola de mensajes fallidos de Amazon SNS para una suscripción.

El siguiente objeto JSON es un ejemplo de una política de redireccionamiento asociada a una suscripción de SNS.

{ "deadLetterTargetArn": "arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue" }

¿Cómo puedo sacar los mensajes de una cola de mensajes fallidos?

Los mensajes se pueden sacar de la cola de mensajes fallidos de dos formas:

  • Evitar escribir lógica de consumo de Amazon SQS: establezca la cola de mensajes fallidos como fuente de eventos en la función Lambda para drenar dicha cola.

  • Escriba la lógica de consumo de Amazon SQS: utilice la API AWS o el SDK de Amazon SQS AWS CLI o escriba una lógica de consumo personalizada para sondear, procesar y eliminar los mensajes de la cola de letra muerta.

¿Cómo puedo monitorizar y registrar las colas de mensajes fallidos?

Puedes usar CloudWatch las métricas de Amazon para monitorear las colas de cartas muertas asociadas a tus suscripciones de Amazon SNS. Todas las colas de Amazon SQS emiten CloudWatch métricas a intervalos de un minuto. Para obtener más información, consulte CloudWatch las métricas disponibles para Amazon SQS en la Guía para desarrolladores de Amazon Simple Queue Service. Todas las suscripciones a Amazon SNS con colas de letra muerta también emiten métricas. CloudWatch Para obtener más información, consulte Supervisión de temas de Amazon SNS mediante CloudWatch.

Para recibir notificaciones sobre la actividad en sus colas de espera, puede utilizar métricas y alarmas. CloudWatch No es adecuado configurar una alarma para la NumberOfMessagesSent métrica porque esta métrica no captura los mensajes enviados a una DLQ como resultado de intentos de procesamiento fallidos. En su lugar, utilice la NumberOfMessagesReceived métrica, que captura todos los mensajes recibidos por la DLQ, incluidos los que se han trasladado debido a errores de procesamiento.

Ejemplo de configuración CloudWatch de alarma
  1. Cree una CloudWatchalarma para la NumberOfMessagesReceived métrica.

  2. Establezca el umbral de alarma en 1 (u otro valor adecuado en función de sus expectativas y del tráfico de DLQ).

  3. Especifique un tema de Amazon SNS para que se le notifique cuando suene la alarma. Este tema de Amazon SNS puede enviar la notificación de alarma a cualquier tipo de punto de enlace final (como una dirección de correo electrónico, un número de teléfono o una aplicación de localización móvil).

Puedes usar CloudWatch los registros para investigar las excepciones que provocan el error en las entregas de Amazon SNS y para que los mensajes se envíen a colas de letra muerta. Amazon SNS puede registrar tanto las entregas correctas como las fallidas. CloudWatch Para obtener más información, consulte Atributos de aplicaciones móviles .