如何使用主题名称获取 SNS 主题 ARN 以通过 Boto3 在 Python 中发布 SNS 消息?
How can I get the SNS topic ARN using the topic name to publish a SNS message in Python via Boto3?
Python
方法运行查询
def function(run_query)
//topic = arn return from topic name
topic.publish(message)
pass
我正在使用 boto3 资源方法。有很多使用 boto3.client 的示例和使用 boto3 资源方法实现 sns 方法的有限示例。
似乎没有预期的 get_topic_arn(topic_name)
方法可以通过 Boto3 SNS 客户端或资源使用主题名称获取 AWS 主题 ARN。
但是,一个聪明的解决方法是使用 create_topic
方法:
This action is idempotent, so if the requester already owns a topic with the specified name, that topic's ARN is returned without creating a new topic.
使用现有主题名称调用 create_topic
,这将检索主题 sub-resource 上的 SNS.Topic
sub-resource, and then call the publish
方法。
import boto3
sns = boto3.resource('sns')
topic = sns.create_topic(Name='MyTopicName')
topic_arn = topic.arn
response = topic.publish(Message='MyMessage')
...
Python
方法运行查询
def function(run_query)
//topic = arn return from topic name
topic.publish(message)
pass
我正在使用 boto3 资源方法。有很多使用 boto3.client 的示例和使用 boto3 资源方法实现 sns 方法的有限示例。
似乎没有预期的 get_topic_arn(topic_name)
方法可以通过 Boto3 SNS 客户端或资源使用主题名称获取 AWS 主题 ARN。
但是,一个聪明的解决方法是使用 create_topic
方法:
This action is idempotent, so if the requester already owns a topic with the specified name, that topic's ARN is returned without creating a new topic.
使用现有主题名称调用 create_topic
,这将检索主题 sub-resource 上的 SNS.Topic
sub-resource, and then call the publish
方法。
import boto3
sns = boto3.resource('sns')
topic = sns.create_topic(Name='MyTopicName')
topic_arn = topic.arn
response = topic.publish(Message='MyMessage')
...