Boto удаляет только 100 записей в теме SNS и не все - PullRequest
0 голосов
/ 10 мая 2019

В моем аккаунте 700 тем SNS.Я удаляю их все с помощью boto.Код удаляет их, но я вижу, что каждый раз удаляется только 100 тем.Я выполнил код 7 раз, чтобы удалить все 700 тем.Я хочу, чтобы все они были удалены за один раз

Пробовал GUI также вручную, но та же проблема

def delete_topic(self, topic):
        params = {'ContentType' : 'JSON',
                  'TopicArn' : topic}
        response = self.make_request('DeleteTopic', params, '/', 'GET')
        body = response.read()
        if response.status == 200:
            return json.loads(body)
        else:
            boto.log.error('%s %s' % (response.status, response.reason))
            boto.log.error('%s' % body)
            raise self.ResponseError(response.status, response.reason, body)

endpoint = boto.sqs.regioninfo.RegionInfo(name=region,endpoint='sns.'+str(region)+'.amazonaws.com')

sns = boto.connect_sns(aws_access_key_id=aKey, aws_secret_access_key=aSecret,region=endpoint)

topics = sns.get_all_topics()

dict_topic = topics[u'ListTopicsResponse']['ListTopicsResult']['Topics']

i=0

for  key in  dict_topic:
    topic=topics[u'ListTopicsResponse']['ListTopicsResult']['Topics'][i]['TopicArn']
    delete_topic(sns,topic)
    print "Deleted the topic"+str(topic)
    i = i + 1

1 Ответ

0 голосов
/ 10 мая 2019

Вы должны использовать paramater next_token, поскольку его вложенный диктат разбит на страницы:

get_all_topics(next_token=None)                                           
     Parameters:    next_token (string) – Token returned by the previous call to this method.

Документация Boto v2

Также вы можете проверить этот пост:

Проверьте, существует ли тема по названию темы

...