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 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 AWS 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 usar una cola de Amazon SQS cifrada como cola de mensajes muertos, debe usar un KMS personalizado con una política de claves que otorgue al servicio Amazon SNS acceso principal a las acciones de la API. AWS KMS Para obtener más información, consulte Protección de los datos de Amazon SNS con cifrado del servidor esta guía y la Protección de los datos de Amazon SQS mediante el Server-Side cifrado (SSE) y la Guía para desarrolladores de Amazon Simple AWS KMS 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.
Client-side errores
Client-side pueden producirse errores cuando Amazon SNS tiene metadatos de suscripción obsoletos. 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 enviar los mensajes que fallan debido a un error del lado del cliente.
Server-side errores
Server-side pueden producirse errores cuando el sistema responsable del punto final suscrito deja de estar disponible o devuelve una excepción que indica que no puede procesar una solicitud válida 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 AWS Lambda Amazon SNS reintenta la entrega hasta 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 en la misma región que su suscripción a Amazon Cuenta de AWS 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 o el AWS SDK de Amazon SQS o AWS CLI para escribir una lógica de consumo personalizada para sondear, procesar y eliminar los mensajes de la cola de mensajes muertos.
¿Cómo puedo monitorizar y registrar las colas de mensajes fallidos?
Puede utilizar CloudWatch las métricas de Amazon para monitorizar las colas de correo incobrable asociadas a sus suscripciones de Amazon SNS. Todas las colas de Amazon SQS emiten métricas en intervalos de un minuto. CloudWatch 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 de Amazon SNS con colas de mensajes sin respuesta también emiten métricas. CloudWatch Para obtener más información, consulte Supervisar los temas de Amazon SNS mediante CloudWatch.
Para recibir notificaciones sobre la actividad de sus listas de espera, puede usar 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 un DLQ debido a intentos de procesamiento fallidos. En su lugar, utilice la métrica ApproximateNumberOfMessagesVisible, que captura todos los mensajes actualmente disponibles en la DLQ, incluidos los que se han movido debido a errores de procesamiento.
Ejemplo de configuración CloudWatch de alarma
-
Crea una CloudWatch alarma para la
ApproximateNumberOfMessagesVisiblemétrica. -
Establezca el umbral de alarma en 1 (u otro valor adecuado en función de sus expectativas y del tráfico de la DLQ).
-
Especifique el tema de Amazon SNS al que se enviará la notificación cuando la alarma se desactive. 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 los registros para investigar las excepciones que provocan que los envíos de Amazon SNS fallen y que los mensajes se envíen a las colas de espera. Amazon SNS puede registrar tanto las entregas exitosas como las fallidas. CloudWatch Para obtener más información, consulte Atributos de aplicaciones móviles de Amazon SNS.