Verify if a topic exists based on topic name

折月煮酒 提交于 2019-12-10 15:30:14

问题


I'm trying to verify if a topic exists based on topic name.

Do you know if this is possible?

For example I want to verify if topic with name "test" already exist.

Below is what I'm trying but doesn't work because topicsList contains topicArns and not topicNames...

topics = sns.get_all_topics()   
topicsList = topics['ListTopicsResponse']['ListTopicsResult'['Topics']

if "test" in topicsList:
    print("true")

回答1:


This is kind of a hack but it should work:

topics = sns.get_all_topics()   
topic_list = topics['ListTopicsResponse']['ListTopicsResult']['Topics']
topic_names = [t['TopicArn'].split(':')[5] for t in topic_list]

if 'test' in topic_names:
   print(True)



回答2:


This code will work if you have more than 100 topics

def get_topic(token=None):
    topics = self.sns.get_all_topics(token)
    next_token = topics['ListTopicsResponse']['ListTopicsResult']['NextToken']
    topic_list = topics['ListTopicsResponse']['ListTopicsResult']['Topics']
    for topic in topic_list:
        if "your_topic_name" in topic['TopicArn'].split(':')[5]:
            return topic['TopicArn']
    else:
        if next_token:
            get_topic(next_token)
        else:
            return None



回答3:


What if you try to catch An error occurred (NotFound) when calling the GetTopicAttributes operation: Topic does not exist exception?

from botocore.exceptions import ClientError

topic_arn = "arn:aws:sns:us-east-1:999999999:neverFound"

try:
    response = client.get_topic_attributes(
        TopicArn=topic_arn
    )
    print "Exists"
except ClientError as e:
    # Validate if is this:
    # An error occurred (NotFound) when calling the GetTopicAttributes operation: Topic does not exist
    print "Does not exists"


来源:https://stackoverflow.com/questions/30243687/verify-if-a-topic-exists-based-on-topic-name

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!