Может ли SNS активировать шлюз API? Если да, то как шлюз API может подписаться на SNS?

Мне нужно создать шлюз API для приема сообщений из SNS. Я вижу, что есть некоторые вопросы по этому же поводу, например этот, на которые не было дано прямого ответа.

Основная проблема, с которой я сталкиваюсь, заключается в следующем: как заставить API-шлюз подписаться на SNS?


person Mooncrater    schedule 21.06.2021    source источник
comment
Вопрос, почему только шлюз API? Почему не может быть Лямбда. Потому что API является общедоступной конечной точкой. Все, что вы собираетесь делать, может сделать Lambda.   -  person aviboy2006    schedule 21.06.2021


Ответы (2)


SNS поддерживает подписки конечных точек HTTP/HTTPS. Поэтому я не вижу причины, по которой вы не могли бы таким образом подписаться на конечную точку https API-шлюза на SNS.

person Marcin    schedule 21.06.2021
comment
Привет @Marcin, спасибо за ответ! Хорошо, я вижу, что это выполнимо. Но как именно я могу подтвердить подписку на шлюз? Я вижу, что для это документ, предоставленный AWS для подписки. Должны ли мы сделать то же самое для шлюза API или у нас есть что-то более простое? - person Mooncrater; 21.06.2021
comment
@Mooncrater Думаю, вам придется подключить лямбду, чтобы подтвердить подписку. Я не знаю точных деталей, так как сам такой подписки не делал. Можно попробовать и посмотреть, как пойдет. - person Marcin; 21.06.2021
comment
Конечно конечно. Посмотрим создадим лямбду для подписки. - person Mooncrater; 21.06.2021

Как упомянул Марчин, это можно сделать. Упоминание шагов, которые я использовал:

  • Создайте SNS и лямбду
  • Каким бы ни был язык, обязательно распечатайте событие в журнале. (Для JavaScript используйте console.log(event), а для Python используйте print(event) и т. д.)
  • Создайте шлюз API (REST API), выберите новый API и создайте его.
  • В API создайте метод POST, выберите лямбда и обязательно используйте его в качестве прокси.
  • Скопируйте триггерную HTTPS-ссылку
  • Добавьте подписку HTTPS в SNS и используйте здесь триггерную ссылку.
  • Сейчас ожидается подтверждение.
  • Перейдите к лямбде, внутри ее раздела мониторинга перейдите к журналам наблюдения за облаком.
  • Внутри журналов вы найдете напечатанный объект события. Внутри него ищите SubscribeURL, вдоль которого будет упоминаться URL.
  • Скопируйте этот URL-адрес и вернитесь в SNS. Выберите свою подписку и используйте опцию «Подтвердить подписку» и вставьте туда эту ссылку.
  • Статус должен прийти как Подтверждено сейчас.
person Mooncrater    schedule 23.06.2021