java - 获取具有发布权限的 AWS 账户的 SNS 主题列表

标签 java amazon-web-services amazon-sns

有没有办法找到给定 AWS 账户 ID 具有发布(或任何其他)权限的 SNS 主题列表?

我的用例如下:

  1. 服务器程序允许不同的客户端将消息发布到其拥有的 SNS 主题上。服务器程序在各个 AWS 区域都有这些 SNS 主题。
  2. 在每个 AWS 区域中,每个客户端都被授予对 SNS 主题的“发布”权限。
  3. 客户端获得主题名称,并根据区域派生主题 ARN 并发布消息。

我想避免按 AWS 区域维护这些主题的 ARN,并将它们分发到客户端配置中,并且想知道客户端是否有办法根据主题名称和 AWS 区域派生主题 ARN ,通过 AWS 提供的一些 API(而不是将 ARN 形成为 aws:${region}:sns:${topicName}

最佳答案

我假设 ListTopicsResult 将仅返回您可以访问的主题的主题 arns。

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
             */
        }
    }
}

关于java - 获取具有发布权限的 AWS 账户的 SNS 主题列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20106702/

相关文章:

amazon-web-services - 基于用户通知偏好的 AWS SNS 移动推送

java - 具有路径变量的多个值的 RequestMapping - Spring 3.0

aws-cloudformation - 无法通过 LocalStack 中的 Cloudformation 创建对 SNS 主题的 SQS 订阅

node.js - 来自 Node.js 的 Amazon SNS 的 CERT_UNTRUSTED 错误响应

python - 每次添加新的 Google Sheet 行时都会触发 AWS Lambda

amazon-web-services - 亚马逊 Kinesis 模拟器

amazon-web-services - 通过 kinesis 触发跨账户 lambda

java - 每次滑动刷新后,如何阻止 WebView 应用程序进入主页?

java - 如何在java中获取客户端 key 到期日期

java - 数组项至少等于另一个数组中的一项