¿Cómo soluciono los errores de «ThrottlingException» y «Tasa de solicitud superada» en Amazon SNS?

5 minutos de lectura
0

Quiero solucionar los errores de «ThrottlingException» y «Tasa de solicitud superada» en Amazon Simple Notification Service (Amazon SNS).

Descripción breve

Las llamadas a la API de Amazon SNS no pueden superar la tasa máxima de solicitudes de API permitida para cada cuenta y región de AWS. Si las solicitudes de API superan esta cuota de limitación de API, se limitarán más llamadas a la API y Amazon SNS devolverá un error de ThrottlingException.

Ejemplos de mensaje de error ThrottlingException de Amazon SNS:

  • «Se ha producido un error (ThrottlingException) al llamar a la operación de suscripción: Se ha superado la tasa de solicitudes»
  • «Se ha producido un error (ThrottlingException) al llamar a la operación ListOriginationNumbers: Se ha superado la tasa de solicitudes»
  • «Se ha producido un error (ThrottlingException) al llamar a la operación ListPhoneNumbersOptedOut: Se ha superado la tasa de solicitudes»
  • «Se ha producido un error (ThrottlingException) al llamar a la operación de publicación: Se ha superado la tasa de solicitudes»
  • «Se ha producido un error (ThrottlingException) al llamar a la operación GetSMSAttributes: Se ha superado la tasa de solicitudes»

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

Resolución

Identifique la API limitada

Identifique la acción de la API que provoca el error

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

Use los registros de CloudTrail para comprobar la llamada a la API en el evento

Amazon SNS se integra con AWS CloudTrail. CloudTrail captura las llamadas a la API de Amazon SNS como eventos. Estos eventos incluyen las llamadas desde la consola de Amazon SNS y las llamadas de código a las operaciones de la API de Amazon SNS. 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 más información sobre los eventos de CloudTrail, consulte la información sobre Amazon SNS en CloudTrail.
Nota: No se admite una solicitud de la API Publish o PublishBatch para el registro como eventos en CloudTrail.

Examine las cuotas regionales

Incluso si utiliza la API PublishBatch en lugar de la API Publish para enviar los mensajes, las cuotas regionales pueden provocar una limitación. Por ejemplo, si su cuota regional es de 30 000 mensajes por segundo, puede superar el límite de tasa de solicitudes de las siguientes maneras:

  • Ha utilizado la acción Publicar a una frecuencia de 30 000 solicitudes de API por segundo para publicar 30 000 mensajes (un mensaje por solicitud de API).
  • Ha utilizado la acción PublishBatch a una frecuencia de 3 000 solicitudes de API por segundo para publicar 30 000 mensajes (10 mensajes por solicitud de API por lotes).
  • Ha utilizado la acción Publicar a una frecuencia de 10 000 solicitudes de API por segundo para publicar 10 000 mensajes (un mensaje por solicitud de API). También ha utilizado la acción PublishBatch a una frecuencia de 2 000 solicitudes de API por segundo para publicar 20 000 mensajes (10 mensajes por solicitud de API por lotes). Y, al hacerlo, ha creado un total de 30 000 mensajes publicados por segundo.

La cuota de mensajes por segundo se basa en la cantidad de mensajes publicados en una región de Amazon SNS y combina las solicitudes de la API Publish y PublishBatch. Para más información, consulte Limitación de la API Publish y Otras limitaciones de la API en Puntos de conexión y cuotas de Amazon Simple Notification Service.

Prácticas recomendadas para prevenir los errores de ThrottlingException

Escalone los intervalos de las llamadas a la API

Cuando utilice puntos de conexión de la API de AWS, utilice el retroceso exponencial y los reintentos para reducir el número de llamadas a la API que se realizan. Utilice 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)
  }
}

Solicite un aumento de cuota de servicio

Si sigue recibiendo errores de ThrottlingException después de implementar el retroceso exponencial y los reintentos, solicite un aumento de la cuota de servicio para la API que crea el error. En la descripción del caso de uso, incluya el período en el que se produjo la limitación y el motivo por el que solicita un aumento de cuota.

También puede consultar el panel de cuotas de servicio para conocer la cuota actual del servicio de SNS.
Nota: Asegúrese de solicitar el aumento de la cuota de servicio para su región de AWS.

Importante: Puede solicitar aumentos de cuota de servicio únicamente para las cuotas de Amazon SNS con límite flexible. No puede aumentar las cuotas de Amazon SNS con límite fijo. Para más información, consulte Cuotas de servicio.

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 9 meses