AWS SNS - 如何按主题名称获取主题 arn

2022-09-03 14:14:36

在我的应用程序中,我需要将消息发送到给定的主题名称。该主题已经由其他人创建,并且在配置文件中,他们只给出主题名称。我的工作是推送给定主题名称中的消息。有没有办法在java中按主题名称获取主题ARN?


答案 1

如本答案所述,使用createTopic(topicName)是更直接的方法。如果之前已创建主题,它将仅返回主题 ARN。


答案 2

我通过两种方式之一完成了这项工作。ARN 始终是相同的模式。因此,您可以订阅“arn:aws:sns:<region>:<account>:<name>”,其中:

region 来自 Regions.getCurrentRegion()。请注意这一点,因为它的调用有点昂贵,您需要处理不在EC2 / Elastic Beanstalk实例上。

帐户来自 AmazonIdentityManagementClient.getUser().getUser().getArn()。您必须从中解析帐号。关于不在 EC2 环境中的相同警告。

名字就是你所拥有的。

更简单的方法是遍历主题并在 ARN 中查找所需的名称。您将使用 AmazonSNSClient listTopics 方法来执行此操作。请记住,该方法仅返回前 100 个主题 - 您需要正确循环遍历整个主题列表。


推荐