When a SNS topic is deleted, subscriptions are not deleted automatically (bug?)

1

According to the documentation (https://docs.aws.amazon.com/sns/latest/dg/sns-delete-subscription-topic.html) when a topic is deleted, all associated subscriptions should be automatically deleted as well.

However this does not seem to be the case. We have an application using SNS for push notifications. When a topic is deleted, associated subscriptions are NOT deleted and must be deleted manually.

Here's a test program to reproduce the problem; in order to run this you must provide a valid AWS key id, secret, and region, and a valid SNS platform endpoint.

import time
import boto3

AWS_KEY_ID = "AKIAIOSFODNN7EXAMPLE"
AWS_KEY_SECRET = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
AWS_REGION = "eu-west-1"
ENDPOINT = "arn:aws:sns:eu-west-1:1234567890:endpoint/GCM/Application/12345678-abcd-9012-efgh-345678901234"

session = boto3.Session(
    aws_access_key_id=AWS_KEY_ID,
    aws_secret_access_key=AWS_KEY_SECRET,
    region_name=AWS_REGION,
)
sns_client = session.client("sns")

# Create topic, add subscription
topic_arn = sns_client.create_topic(Name="Test_bug")["TopicArn"]
subscription = sns_client.subscribe(
    TopicArn=topic_arn, Protocol="application", Endpoint=ENDPOINT
)["SubscriptionArn"]

# Delete topic
sns_client.delete_topic(TopicArn=topic_arn)
time.sleep(60)

# Check if subscription was deleted
try:
    sns_client.get_subscription_attributes(SubscriptionArn=subscription)
    print("Unexpected behaviour -- subscription still exists")
except sns_client.exceptions.NotFoundException:
    print("Expected behaviour -- subscription deleted")

Running this shows that the subscription is not deleted automatically when the topic is deleted.

Is this a bug in AWS ?

已提問 9 個月前檢視次數 295 次
2 個答案
0

Hi,

re:Post is not the right place to report bugs: AWS service teams usually do not monitor this site to get aware of those reports.

The right place to go is the AWS service console, which has features to open such tickets for any service. So, please, go there to announce this issue. Additionally, you will be able to assign it to the right priority level to raise more attention if needed.

Best,

Didier

profile pictureAWS
專家
已回答 9 個月前
  • "Technical support is unavailable under the Basic Support plan", so no luck.

  • If there is a way to submit a bug report other than creating a "support case" (which I apparently cannot do) please let me know..

0

Hello.

I have confirmed its operation as well.
Indeed, the subscriptions did not disappear, but remained.
The following shell script can be used to delete subscriptions not associated with SNS topics.

#!/bin/bash

# Get a list of SNS topics
topics=$(aws sns list-topics | jq -r '.Topics[].TopicArn')

# Get a list of SNS subscriptions
subscriptions=$(aws sns list-subscriptions)

# Remove subscriptions not tied to a topic
echo $subscriptions | jq -c '.Subscriptions[]' | while read subscription; do
  subscriptionArn=$(echo $subscription | jq -r '.SubscriptionArn')
  topicArn=$(echo $subscription | jq -r '.TopicArn')

  # If the topicArn of the subscription is not included in the topics, delete it.
  if ! echo $topics | grep $topicArn > /dev/null
  then
    aws sns unsubscribe --subscription-arn $subscriptionArn
    echo "delete it: $subscriptionArn"
  fi
done
profile picture
專家
已回答 9 個月前
profile pictureAWS
專家
已審閱 9 個月前
  • Note that aws sns list-subscriptions will only return a limited set of subscriptions (up to 100). Thus this script will not work as expected when there is a large number of subscriptions.

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南