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 misma región y cuenta de AWS.

  • 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 mensajes fallidos, debe utilizar una KMS personalizada con una política de clave con la que se otorgue a la entidad principal de servicio Amazon SNS acceso a las acciones de la API de 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. Cuando los errores del servidor se deben a puntos de enlace administrados por AWS que cuentan con el respaldo de Amazon SQS o AWS Lambda, Amazon SNS intenta entregarlos un máximo de 100 015 veces durante 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 de la misma región y cuenta de Cuenta de AWS que la suscripción de 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.

  • Escribir la lógica del consumidor de Amazon SQS: utilice la API de Amazon SQS, el SDK de AWSo AWS CLI para escribir la lógica de consumidor personalizada para el sondeo, el procesamiento y la eliminación de los mensajes de la cola de mensajes fallidos.

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

Puede utilizar métricas de Amazon CloudWatch para monitorear las colas de mensajes fallidos asociadas a las suscripciones de Amazon SNS. Todas las colas de Amazon SQS emiten métricas de CloudWatch a intervalos de un minuto. Para obtener más información, consulte Métricas de CloudWatch disponibles para Amazon SQS en la Guía para desarrolladores de Amazon Simple Queue Service. Todas las suscripciones de Amazon SNS con colas de mensajes fallidos también emiten métricas de CloudWatch. Para obtener más información, consulte Monitoreo de los temas de Amazon SNS mediante Amazon CloudWatch.

Para recibir notificaciones sobre la actividad de las colas de mensajes fallidos, puede utilizar las métricas y alarmas de CloudWatch. Por ejemplo, si espera que la cola de mensajes fallidos esté siempre vacía, puede crear una alarma de CloudWatch con la métrica NumberOfMessagesSent. Puede establecer el umbral de la alarma en 0 y especificar un tema de Amazon SNS al que se enviarán notificaciones cuando esta se active. 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).

Puede utilizar CloudWatch Logs para investigar las excepciones que provocan que las entregas de Amazon SNS no se realicen de forma correcta y para que los mensajes se envíen a las colas de mensajes fallidos. Amazon SNS puede registrar entregas correctas y fallidas en CloudWatch. Para obtener más información, consulte Estado de entrega de mensajes de Amazon SNS.