2015-11-13 3 views
0

У меня есть очередь sqs, которая подписана на тему sns, используя метод boto.sns.subscribe(). Что делать, чтобы отменить подписку на эту тему? Я попробовал метод boto sns отменить подписку (подписку), как показано ниже, но это дает мне ошибку.Как отказаться от подписки sqs queue from sns in boto

BotoServerError: BotoServerError: 400 Bad Request 
{"Error":{"Code":"InvalidParameter","Message":"Invalid parameter: SubscriptionId","Type":"Sender"},"RequestId":"41db2d5b-5ab8-561a-9846-63e4d0c1e795"} 

код Я попробовал:

arn = str(self._sqs_connection_obj.get_queue_attributes(queue, attribute='QueueArn')['QueueArn']) 
SNSHandler()._sns_connection_obj.unsubscribe(arn) 

очередь - это мой объект очереди SQS.

ответ

1

Метод unsubscribe() для SNS принимает ARN подписки (а не ARN очереди SQS).

Используйте метод SNS get_all_subscriptions() для получения информации о подписках SNS, затем извлеките ARN абонента для удаления.

Это будет выглядеть примерно так:

'SubscriptionArn': 'arn:aws:sns:ap-southeast-2:743112987576:my-topic:5644ff1b-56df-486d-8317-e8889616aa7c' 

Вот ответ от get_all_subscriptions() вызова:

>>> import boto.sns 
>>> import boto.sqs 
>>> sns=boto.sns.connect_to_region('ap-southeast-2') 
>>> sns.get_all_subscriptions() 
{u'ListSubscriptionsResponse': {u'ListSubscriptionsResult': {u'NextToken': u'AAFZ4NK21b0q15BrHPHV9fYxNWD16pSk2A7dvMEIWe1LWQ==', u'Subscriptions': [{u'Owner': u'743112987576', u'Endpoint': u'arn:aws:sqs:ap-southeast-2:743112987576:stack-queue', u'Protocol': u'sqs', u'TopicArn': u'arn:aws:sns:ap-southeast-2:743112987576:my-topic', u'SubscriptionArn': u'arn:aws:sns:ap-southeast-2:743112987576:my-topic:5644ff1b-56df-486d-8317-e8889616aa7c'}]}, u'ResponseMetadata': {u'RequestId': u'641f5f6a-ea0f-51e7-929b-11a8c304fd62'}}} 

Таким образом, лучший выбор, чтобы просмотреть список подписок, чтобы найти один с Конечная точка равна вашей очереди ARN.

+0

Спасибо за ответ. Как я могу извлечь ARN подписчика из 'get_all_subscription()', если у меня есть объект очереди? –

Смежные вопросы