有没有办法找到给定的AWS账户ID具有PUBLISH(或任何其他)权限的SNS主题列表?
我的用例如下:
我想避免通过AWS区域维护这些主题的ARN并将它们分发到客户端配置中,并且想知道客户端是否有办法根据主题名称和AWS区域派生主题ARN ,通过AWS提供的一些API(而不是将ARN形成为aws:${region}:sns:${topicName}
。
答案 0 :(得分:2)
我假设ListTopics结果只返回您可以访问的主题的主题部分。
import java.util.List;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.sns.AmazonSNSClient;
import com.amazonaws.services.sns.model.ListTopicsRequest;
import com.amazonaws.services.sns.model.ListTopicsResult;
import com.amazonaws.services.sns.model.Topic;
public class TestSNS {
public static void main(String[] args) {
AWSCredentials credentials = new BasicAWSCredentials(args[0], args[1]);
AmazonSNSClient snsClient = new AmazonSNSClient(credentials);
ListTopicsResult listTopicsResult = snsClient.listTopics();
String nextToken = listTopicsResult.getNextToken();
List<Topic> topics = listTopicsResult.getTopics();
// ListTopicResult contains only 100 topics hence use next token to get
// next 100 topics.
while (nextToken != null) {
listTopicsResult = snsClient.listTopics(nextToken);
nextToken = listTopicsResult.getNextToken();
topics.addAll(listTopicsResult.getTopics());
}
// Display all the Topic ARN's
for (Topic topic : topics) {
System.out.println(topic);
/*
* perform your actions here
*/
}
}
}