如何提取主题的ARN numb

2024-10-01 11:33:47 发布

您现在位置:Python中文网/ 问答频道 /正文

创建AWS SNS主题时:

a = conn.create_topic(topicname)

或获取已创建的主题:

^{pr2}$

结果是:

{u'CreateTopicResponse': {u'ResponseMetadata': {u'RequestId': u'42b46710-degf-52e6-7d86-2ahc8e1c738c'}, u'CreateTopicResult': {u'TopicArn': u'arn:aws:sns:eu-west-1:467741034465:exampletopic'}}}

问题是如何获得主题的ARN作为字符串:arn:aws:sns:eu-west-1:467741034465:exampletopic?在


Tags: aws主题topiccreateconnarnwesteu
2条回答
import boto

def get_account_id():
    # suggested by https://groups.google.com/forum/#!topic/boto-users/QhASXlNBm40
    return boto.connect_iam().get_user().arn.split(':')[4]

def topic_arn_from_name(self, region, name):
    return ":".join(["arn", "aws", "sns", region, get_account_id(), name])

当您创建一个新主题时,boto将返回一个包含您上面描述的数据的Python字典。要将主题ARN作为字符串,只需在字典中引用该键,如下所示:

a = conn.create_topic(topicname)
a_arn = a['CreateTopicResponse']['CreateTopicResult']['TopicArn']

虽然有点笨重,但很管用。在

list_topics调用返回一个不同的结构,基本如下:

^{pr2}$

在这种情况下,如果您想获得第一个主题的ARN,您可以使用:

a = conn.list_topics()
a_arn = a['ListTopicsResponse']['ListTopicsResult']['Topics'][0]['TopicArn']

相关问题 更多 >