Comment résoudre les erreurs « ThrottlingException » et « Taux dépassé » dans Amazon SNS ?

Lecture de 5 minute(s)
0

Je souhaite résoudre les erreurs « ThrottlingException » et « Rate exceeded » dans Amazon Simple Notification Service (Amazon SNS).

Brève description

Les appels d'API Amazon SNS ne peuvent pas dépasser le taux de demandes d'API maximal autorisé pour chaque compte AWS et chaque région. Si les demandes d'API dépassent ce quota de limitation d'API, les autres appels d'API sont limités et Amazon SNS renvoie une erreur ** ThrottlingException**.

Exemples de messages d'erreur Amazon SNS ThrottlingException :

  • « Une erreur s'est produite (ThrottlingException) lors de l'appel à l'opération Souscrire : Taux dépassé »
  • « Une erreur s'est produite (ThrottlingException) lors de l'appel à l'opération ListOriginationNumbers : Taux dépassé »
  • « Une erreur s'est produite (ThrottlingException) lors de l'appel à l'opération ListPhoneNumbersOptedOut : Taux dépassé »
  • « Une erreur s'est produite (ThrottlingException) lors de l'appel à l'opération de publication : Taux dépassé »
  • « Une erreur s'est produite (ThrottlingException) lors de l'appel à l'opération GetSMSSAttributes : Taux dépassé »

Remarque : les appels d'API Amazon SNS sont limités afin d'améliorer les performances du service. Pour plus d'informations sur les quotas de limitation des API Amazon SNS, consultez la section Points de terminaison et quotas Amazon Simple Notification Service.

Résolution

Identifier l'API limitée

Identifiez l'action d'API à l'origine de l'erreur

Lorsque la limite de débit dépasse la limite allouée pour un appel d'API, vous recevez un message d'erreur. Vérifiez le message d'erreur ou la pile d'erreurs pour identifier l'action de l'API qui est limitée.

Utilisez les journaux CloudTrail pour vérifier l'événement associé à l'appel d'API

Amazon SNS est intégré à AWS CloudTrail. CloudTrail capture les appels d'API pour Amazon SNS sous forme d'événements. Ces événements incluent les appels depuis la console Amazon SNS et les appels de code vers les opérations de l'API Amazon SNS. Les événements pris en charge sont enregistrés dans un événement CloudTrail, avec d'autres événements de services AWS, dans le cadre de l'historique des événements. Pour plus d'informations sur les événements CloudTrail, consultez les informations Amazon SNS dans CloudTrail.
Remarque : une demande d'API PublishBatch ou PublishBatch n'est pas prise en charge pour la journalisation en tant qu'événements dans CloudTrail.

Examinez les quotas régionaux

Même si vous utilisez l'API PublishBatch au lieu de l'API Publish pour envoyer les messages, les quotas régionaux peuvent entraîner une limitation. Par exemple, si votre quota régional est de 30 000 messages par seconde, vous pouvez toujours dépasser la limite de débit des manières suivantes :

  • Vous avez utilisé l'action Publier à raison de 30 000 demandes d'API par seconde pour publier 30 000 messages (un message par demande d'API).
  • Vous avez utilisé l'action PublishBatch à raison de 3 000 demandes d'API par seconde pour publier 30 000 messages (10 messages par demande d'API par lot).
  • Vous avez utilisé l'action Publier à raison de 10 000 demandes d'API par seconde pour publier 10 000 messages (un message par demande d'API). Vous avez également utilisé l'action PublishBatch à raison de 2 000 demandes d'API par seconde pour publier 20 000 messages (10 messages par demande d'API par lot). Ce faisant, vous avez créé un total de 30 000 messages publiés par seconde.

Le quota de messages par seconde est basé sur le nombre de messages publiés dans une région Amazon SNS et combine les demandes d'API PublishBatch et PublishBatch. Pour plus d'informations, consultez les sections Limitation des API de publication et **Autres restrictions des AP ** dans les points de terminaison et quotas Amazon Simple Notification Service.

Bonnes pratiques pour prévenir les erreurs ThrottlingException

Étalez les intervalles des appels d'API

Lorsque vous utilisez des points de terminaison d'API AWS, utilisez un ralentissement exponentiel et de nouvelles tentatives pour réduire le nombre d'appels d'API effectués. Utilisez l'exemple de pseudocode de haut niveau suivant pour un retour en arrière exponentiel et de nouvelles tentatives :

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)
  }
}

Demander une augmentation du quota de service

Si vous continuez à recevoir des erreurs ThrottlingException après avoir mis en œuvre de nouvelles tentatives et interruptions exponentielles, demandez une augmentation du quota de service pour l'API à l'origine de l'erreur. Dans la description du cas d'utilisation, indiquez la période pendant laquelle l'accélérateur s'est produit et la raison pour laquelle vous demandez une augmentation du quota.

Vous pouvez également consulter le tableau de bord des quotas de service pour connaître le quota actuel du service SNS.
Remarque : Assurez-vous de demander l'augmentation du quota de service pour votre région AWS.

Important : vous pouvez demander des augmentations de quotas de service pour les quotas Amazon SNS à limite souple uniquement. Vous ne pouvez pas augmenter les quotas Amazon SNS à limite stricte. Pour plus d'informations, consultez la section Limites des service.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 9 mois