Intereting Posts
Проверьте, нравится ли пользователю фан-страница Ошибка SSL не может измениться на TLS Сделать точки между числами в php Есть ли способ петли через многомерный массив, не зная его глубины? PHP Imagick не может установить цвет фона фона Как использовать специальные символы в имени получателей при использовании почтовой функции PHP symfony2: событие presetdata не работает, когда форма является службой Не удалось загрузить Zend / Loader.php. Попытка разобраться, почему? Использование конфигурации apache для указания директории PHP include для каждого сайта Текстуры с динамически назначенным именем бросают мой код Как запустить программу в фоновом режиме (без блокировки) с помощью php? Почему Firebug притворяется, что моя таблица стилей вызывает мой xmlrpc? Контактная форма не отправляется, если есть пробел в названии Когда использовать интерфейсы в PHP Страница невыполнения LARAVEL не загружается – Ошибка 324 – ERR_EMPTY_RESPONSE

AWS SNS получить тему по названию

Я начал работать с AWS SNS для отправки push-уведомлений в мое приложение. Сегодня, чтобы получить тему, на которую я хочу отправить push-уведомления, мне нужно загрузить все темы – с помощью функции клиента SNS listTopics () – и проверить каждую тему, чтобы узнать, имеет ли ARN название темы, которую я ищу для.

Я думаю, что это очень неэффективный способ получить тему ARN, и я хотел бы знать, есть ли наиболее эффективный способ получить эту информацию, например функцию getTopicByName или что-то еще.

Если нет, я хотел бы знать, является ли ARN неизменным, и может ли я сохранить тему ARN в моей базе данных?

Благодарю.

Я не знаю, как искать тему SNS по имени.

ARN неизменен. Это не изменится для жизни темы SNS. В частности, согласно документации ARN для темы SNS имеет следующий формат:

arn:aws:sns:region:account-id:topicname

Таким образом, единственный способ изменения ARN в SNS-теме – изменить имя (в этом случае ваш поиск по имени будет также нарушен) или удалить тему и воссоздать ее в новом регионе или в совершенно другой учетной записи, в которой Дело в том, что на самом деле это будет не так.

Если вы знаете, что тема уже существует, гораздо более прямой подход – просто вызвать CreateTopic . Учитывая имя, CreateTopic вернет существующую тему, включая ARN.

Если тема уже доступна, вы можете использовать метод «createTopic» следующим образом. С этим, если запрашивающий уже владеет темой с указанным именем, ARN этого раздела возвращается без создания новой темы. В AWS Java SDK код будет выглядеть следующим образом.

  AWSCredentialsProvider provider = new ProfileCredentialsProvider(); AmazonSNS sns = AmazonSNSClientBuilder.standard().withCredentials(provider).build(); CreateTopicResult createRes = sns.createTopic("HelloTopic"); 

Затем, используя CreateTopicResult, вы можете получить ARN темы и опубликовать сообщение

 sns.publish(new PublishRequest(createRes.getTopicArn(), "Hello World"));