Saltar al contenido

¿Cómo soluciono los errores "ThrottlingException Rate exceeded" en Amazon SNS?

3 minutos de lectura
0

Quiero solucionar los errores "ThrottlingException Rate exceeded" en Amazon Simple Notification Service (Amazon SNS).

Descripción corta

Si las solicitudes de la API de Amazon SNS superan la cuota de limitación de la API, Amazon SNS devolverá el error "ThrottlingException Rate exceeded" similar al siguiente:

"An error occurred (ThrottlingException) when calling the API operation: Rate exceeded"

Nota: Amazon SNS reduce las llamadas a la API para mejorar el rendimiento del servicio. Para más información sobre las cuotas de limitación de la API de Amazon SNS, consulta Puntos de enlace y cuotas de Amazon Simple Notification Service.

Resolución

Identificación de la API limitada

Cuando el límite de la tasa de solicitudes supere el límite asignado para una llamada a la API, recibirás una respuesta de error. Comprueba el mensaje de error o la pila de errores para identificar la acción de la API que se ha limitado.

Usa los registros de AWS CloudTrail para comprobar la llamada a la API en el evento. Los eventos compatibles se registran en un evento de CloudTrail, junto con otros eventos del servicio de AWS, como parte del historial de eventos. Para obtener más información, consulta Registro de llamadas a la API de AWS SNS mediante AWS CloudTrail.

También puedes ver las métricas de Amazon CloudWatch para Amazon SNS. Utiliza las métricas de uso de Amazon SNS para identificar las llamadas a la API de SNS que han alcanzado el límite de la tasa.

Comprobación de la cuota de limitación de la API de Amazon SNS

La cuota de limitación de la API de Amazon SNS varía según la región de AWS. La cuota de mensajes por segundo se basa en la cantidad de mensajes publicados en una región de SNS y combina las solicitudes de la API Publish y PublishBatch. Si superas la cuota de mensajes por segundo de tu región, es posible que recibas errores de limitación. Para obtener más información, consulta Limitación de API de Amazon SNS.

Nota: Una vez activados los registros de CloudTrail, las solicitudes de la API Publish y PublishBatch de SNS se registran en CloudTrail. Sin embargo, CloudTrail no registra el tipo de recurso de SNS AWS::SNS::PhoneNumber.

Uso del retroceso exponencial y reintentos

Para evitar errores de limitación, se recomienda utilizar el retroceso exponencial y reintentos al realizar una llamada a la API para escalonar los intervalos. Asegúrate de distribuir las llamadas a la API a lo largo del tiempo. Programa las acciones con aleatorización para que se distribuyan a lo largo del tiempo. Para obtener más información, consulta Retroceso exponencial y fluctuación y Comportamiento de reintento.

Utiliza el siguiente pseudocódigo de ejemplo de alto nivel para el retroceso exponencial y los reintentos:

MakeSDKRequest() {  attempts = 0
  loop {
    GetSendToken()
    response = SNSAPIRequest()
    RequestBookkeeping(response)
    if not Retryable(response)
      return response
    attempts += 1
    if attempts >= MAX_ATTEMPTS:
      return response
    if not HasRetryQuota(response)
      return response
    delay = ExponentialBackoff(attempts)
    sleep(delay)
  }
}

Solicitud de un aumento de cuota

Si implementaste un retroceso exponencial y los reintentos, pero sigues recibiendo errores "ThrottlingException Rate exceeded", envía una solicitud de aumento de la cuota de SNS.

Nota: Puedes solicitar un aumento del límite flexible, pero no puedes aumentar el límite de la cuota fija. Para más información, consulta Service Quotas.

OFICIAL DE AWSActualizada hace 5 meses