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.
Amazon SNS define una política de entrega para cada protocolo de entrega. En la política de entrega, se define cómo Amazon SNS reintenta la entrega de mensajes cuando se producen errores en el servidor (cuando el sistema que aloja el punto de enlace suscrito deja de estar disponible). Cuando se agota la política de entrega, Amazon SNS deja de intentar la entrega y descarta el mensaje, a menos que se adjunte una cola de mensajes fallidos a la suscripción. Para obtener más información, consulte Colas de mensajes fallidos de Amazon SNS.
Protocolos y políticas de entrega
nota
-
Con la excepción de las políticas personalizadas que admite. HTTP/S, you can't change Amazon SNS-defined delivery policies. Only HTTP/S Consulte Creación de una política de entrega HTTP/S.
-
Amazon SNS aplica la fluctuación de retardo a los reintentos de entrega. Para obtener más información, consulte la publicación Retroceso exponencial y fluctuación de retardo
del blog de arquitectura de AWS . -
El tiempo total de reintentos de la política para un punto de conexión HTTP/S no puede ser superior a 3600 segundos. Se trata de un límite codificado y no se puede aumentar.
Tipo de punto de conexión | Protocolos de entrega | Fase de reintento inmediato (sin retraso) | Fase previa a la regresión | Fase de regresión | Fase posterior a la regresión | Total de intentos |
---|---|---|---|---|---|---|
AWS puntos finales gestionados | Amazon Data Firehose¹ | 3 veces, sin retraso | 2 veces, 1 segundo de diferencia | 10 veces, con retardo exponencial, de 1 segundo a 20 segundos | 100 000 veces, con 20 segundos de diferencia | 100 015 veces, durante 23 días |
AWS Lambda | ||||||
Amazon SQS | ||||||
Puntos de enlace administrados por el cliente | SMTP | 0 veces, sin demora | 2 veces, 10 segundos de diferencia | 10 veces, con retardo exponencial, de 10 segundos a 600 segundos (10 minutos) | 38 veces, 600 segundos (10 minutos) de diferencia | 50 intentos, durante 6 horas |
SMS | ||||||
Inserción en móvil |
¹ Para los errores de limitación controlada con el protocolo de Firehose, Amazon SNS utiliza la misma política de entrega que para los puntos de conexión administrados por el cliente.
Fases de la política de entrega
En el siguiente diagrama, se muestran las fases de una política de entrega.

Cada política de entrega se compone de cuatro fases.
-
Fase de reintento inmediato (sin demora): esta fase se produce inmediatamente después del intento de entrega inicial. No hay un plazo de tiempo entre los reintentos de esta fase.
-
Fase previa al retraso: esta fase sigue a la fase de reintento inmediato. Amazon SNS utiliza esta fase para intentar realizar un conjunto de reintentos antes de aplicar una función de respaldo. En esta fase se especifica el número de reintentos y el tiempo de retraso entre ellos.
-
Fase de espera: esta fase controla el retraso entre los reintentos mediante la función de retroceso. En esta fase, se establece el retraso mínimo, el retraso máximo y la función retry-backoff, que define con qué rapidez van a ir aumentando los retrasos desde el valor mínimo hasta alcanzar el retraso máximo. La función de retardo puede ser aritmética, exponencial, geométrica o lineal.
-
Fase posterior al retroceso: esta fase sigue a la fase de espera. Especifica un número de reintentos y el tiempo de retraso entre ellos. Esta es la fase final.
Creación de una política de entrega HTTP/S
Puede definir la forma en que Amazon SNS reintenta la entrega de mensajes a los puntos de enlace HTTP/S mediante una política de entrega con cuatro fases: sin demoras, previa a la demora, retrasada y posterior a la demora. Esta política le permite anular la configuración de reintentos predeterminada y personalizarla para que se adapte a la capacidad de su servidor HTTP.
Puedes definir tu política de entrega de HTTP/S como un objeto JSON a nivel de tema o de suscripción:
-
Política a nivel de tema: se aplica a todas las suscripciones a HTTP/S vinculadas al tema. Usa la acción
CreateTopic
o la acción de laSetTopicAttributes
API para configurar esta política. -
Política de nivel de suscripción: se aplica solo a una suscripción específica. Usa la acción
Subscribe
o laSetSubscriptionAttributes
API para configurar esta política.
Como alternativa, también puedes usar el AWS::SNS::Subscriptionrecurso en tus AWS CloudFormation plantillas.
Debe personalizar su política de entrega en función de la capacidad de su servidor HTTP/S:
-
Un solo servidor para todas las suscripciones: si todas las suscripciones a HTTP/S de un tema utilizan el mismo servidor, defina la política de entrega como un atributo del tema para garantizar la coherencia en todas las suscripciones.
-
Diferentes servidores para las suscripciones: si las suscripciones se dirigen a servidores diferentes, cree una política de entrega única para cada suscripción, adaptada a la capacidad del servidor específico.
También puedes configurar el Content-Type
encabezado en la política de solicitudes para especificar el tipo de medio de la notificación. De forma predeterminada, Amazon SNS envía todas las notificaciones a los puntos de enlace HTTP/S con el tipo de contenido establecido en. text/plain; charset=UTF-8
Sin embargo, puede anular este valor predeterminado mediante el headerContentTypecampo de la política de solicitudes.
El siguiente objeto JSON define una política de entrega con reintentos estructurados en cuatro fases:
-
Fase sin demoras: vuelve a intentarlo 3 veces de forma inmediata.
-
Fase previa al retraso: vuelva a intentarlo 2 veces con un intervalo de 1 segundo.
-
Fase de espera: vuelva a intentarlo 10 veces con retrasos exponenciales que oscilan entre 1 y 60 segundos.
-
Fase posterior al retraso: vuelva a intentarlo 35 veces con un intervalo fijo de 60 segundos.
Amazon SNS realiza un total de 50 intentos para entregar un mensaje antes de descartarlo. Para conservar los mensajes que no se puedan entregar después de todos los intentos, configure su suscripción para transferir los mensajes que no se puedan entregar a una cola de mensajes sin entregar (DLQ). Para obtener más información, consulte Colas de mensajes fallidos de Amazon SNS.
nota
Esta política de entrega utiliza la maxReceivesPerSecond
propiedad para limitar el tráfico de entrega a una media de 10 mensajes por segundo por suscripción. Si bien este mecanismo ayuda a evitar que su terminal HTTP/S se vea abrumado por el alto tráfico, está diseñado para mantener una tasa de entrega media y no impone un límite estricto. De vez en cuando, se pueden producir picos de tráfico de entrega por encima del límite especificado, especialmente si tu tasa de publicación es significativamente superior al límite límite.
Cuando el tráfico de publicación (entrante) supera la velocidad de entrega (saliente), puede provocar una acumulación de mensajes pendientes y una mayor latencia de entrega. Para evitar estos problemas, asegúrese de que el maxReceivesPerSecond
valor se ajuste a los requisitos de capacidad y carga de trabajo de su servidor HTTP/S.
nota
Esta política de entrega anula el tipo de contenido predeterminado para la notificación HTTP/S a application/json
.
{
"healthyRetryPolicy": {
"minDelayTarget": 1,
"maxDelayTarget": 60,
"numRetries": 50,
"numNoDelayRetries": 3,
"numMinDelayRetries": 2,
"numMaxDelayRetries": 35,
"backoffFunction": "exponential"
},
"throttlePolicy": {
"maxReceivesPerSecond": 10
},
"requestPolicy": {
"headerContentType": "application/json"
}
}
La política de entrega se compone de una política de reintentos, una política de aceleración y una política de solicitudes. En total, hay 9 atributos en una política de entrega.
Política | Descripción | Constraint |
---|---|---|
minDelayTarget |
Retraso mínimo de un reintento. Unidad: segundos |
Entre 1 y el retraso máximo Valor predeterminado: 20 |
maxDelayTarget |
Retraso máximo de un reintento. Unidad: segundos |
Entre el retraso mínimo y 3600 Valor predeterminado: 20 |
numRetries |
Número total de reintentos, incluidos los reintentos inmediatos, los reintentos previos al retardo y los reintentos posteriores al retardo. | Entre 0 y 100 Predeterminado: 3 |
numNoDelayRetries |
Número de reintentos que se van a realizar inmediatamente, sin retraso entre ellos. | 0 o más Predeterminado: 0 |
numMinDelayRetries |
Número de reintentos en la fase previa al retardo, con el retraso mínimo especificado entre ellos. | 0 o más Predeterminado: 0 |
numMaxDelayRetries |
Número de reintentos en la fase posterior al retardo, con el retraso máximo entre ellos. | 0 o más Predeterminado: 0 |
backoffFunction |
Modelo de retardo entre reintentos. |
Una de las cuatro opciones:
Valor predeterminado: lineal |
maxReceivesPerSecond
|
El número medio máximo de envíos de mensajes por segundo y por suscripción. | 1 o más Predeterminado: sin limitaciones (sin límite en la tasa de entrega) |
headerContentType
|
El tipo de contenido de la notificación que se envía a los puntos de conexión HTTP/S. |
Si no está definida la política de solicitudes, el tipo de contenido será Cuando la entrega de mensajes sin procesar está desactivada para una suscripción (valor predeterminado), o cuando la política de entrega está definida en el nivel de tema, los tipos de contenido de encabezado admitidos son Cuando se activa la entrega de mensajes sin procesar para una suscripción, se admiten los siguientes tipos de contenido:
|
Amazon SNS utiliza la siguiente fórmula para calcular la cantidad de reintentos en la fase de retardo:
numRetries - numNoDelayRetries - numMinDelayRetries - numMaxDelayRetries
Puede controlar la frecuencia de los reintentos durante la fase de espera mediante tres parámetros:
-
minDelayTarget
— Establece el retraso del primer reintento de la fase de espera. -
maxDelayTarget
— Establece el retraso del último reintento en la fase de espera. -
backoffFunction
— Determina el algoritmo que Amazon SNS utiliza para calcular los retrasos de todos los reintentos entre el primer y el último intento. Puede elegir entre cuatro funciones de retroceso disponibles.
El siguiente diagrama ilustra cómo las diferentes funciones de retraso de los reintentos afectan a los retrasos entre los reintentos durante la fase de retraso. La política de entrega utilizada en este ejemplo incluye la siguiente configuración: 10 reintentos en total, un retraso mínimo de 5 segundos y un retraso máximo de 260 segundos.
-
El eje vertical muestra el retraso (en segundos) de cada reintento.
-
El eje horizontal representa la secuencia de reintentos, que va desde el primer intento hasta el décimo.
