gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:15:03 27 4
gpt4 key购买 nike

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

我的用例如下:

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

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

最佳答案

我假设 ListTopicsResult 只会返回您可以访问的主题。

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com