Comment recréer un abonnement à une rubrique Amazon SNS « Supprimé » pour une file d'attente Amazon SQS sur un autre compte AWS ?

Date de la dernière mise à jour : 02/03/2020

Ma file d'attente Amazon Simple Queue Service (Amazon SQS) d'un compte AWS a été abonnée à une rubrique Amazon Simple Notification Service (Amazon SNS) d'un autre compte. J'ai supprimé l'abonnement inter-comptes et son statut est désormais « Deleted » (Supprimé). Comment puis-je recréer cet abonnement ?

Brève description

Lorsque vous appelez l'API Subscribe Amazon SNS, le compte AWS que vous utilisez devient le propriétaire de l'abonnement. Si vous supprimez l'abonnement en appelant l'API Unsubscribe Amazon SNS à partir d'un autre compte qui ne possède pas l'abonnement, l'abonnement passe à l'état « Deleted » (Supprimé) pendant 72 heures.

Pendant ce temps, le compte propriétaire de l'abonnement ne peut pas réabonner le même point de terminaison à la rubrique SNS correspondante. Après 72 heures, Amazon SNS efface l'abonnement « Deleted » (Supprimé) et vous pouvez vous réabonner comme auparavant.

Remarque : nous vous conseillons une bonne pratique qui consiste à exécuter les appels d'API Subscribe (S'abonner) et Unsubscribe (Se désabonner) à partir du même compte AWS.

Solution

Remarque : cette résolution s'applique également aux abonnés du point de terminaison HTTP/S. Toutefois, elle ne s'applique pas aux abonnés de la fonction AWS Lambda.

Si vous ne souhaitez pas attendre 72 heures, recréez l'abonnement en effectuant l'une des actions suivantes :

  • Dans le message UnsubscribeConfirmation envoyé à la file d'attente SQS après la suppression de l'abonnement, recherchez l'URL SubscribeURL. Envoyez une demande HTTP GET à l'URL SubscribeURL. Par exemple :
curl -X GET "https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=2336412f37fb687f5d51e6e241d09c805a5a57b30d712f794cc5f6a988666d92768dd60a747ba6f3beb71854e285d6ad02428b09ceece29417f1f02d609c582afbacc99c583a916b9981dd2728f4ae6fdb82efd087cc3b7849e05798d2d2785c03b0879594eeac82c01f235d0e717736"
  • Appelez l'API Subscribe (S'abonner) depuis le compte AWS qui possède la rubrique SNS. Faites ensuite en sorte qu'un utilisateur disposant des autorisations nécessaires pour lire les messages à partir de la file d'attente confirme l'abonnement.
  • Créez une nouvelle rubrique SNS pour remplacer la rubrique actuelle, puis abonnez la file d'attente SQS à la nouvelle rubrique.