Использование RSS-канала с помощью AWS Lambda и API Gateway

Я начинающий программист на рельсах, и у меня еще меньше опыта работы со всеми продуктами AWS. Я пытаюсь использовать лямбду для подписки и использования RSS-канала с YouTube. Я могу отправить запрос на подписку с помощью HTTParty из моего локально размещенного приложения rails:

query = {'hub.mode':'subscribe', 'hub.verify':'sync', 'hub.topic': 'https://www.youtube.com/feeds/videos.xml?channel_id=CHANNELID', 'hub.callback':'API Endpoint for Lambda'}
subscribe = 'HTTParty.post(https://pubsubhubbub.appspot.com/subscribe, :query=>query)

и он пропингует лямбда-функцию с запросом на получение. Я знаю, что мне нужно повторить строку hub.challenge, но я не знаю, как это сделать. Лямбда-событие пустое, ничего полезного в контексте не увидел. Я попытался отформатировать ответ в шлюзе API, но это тоже не сработало. Поэтому прямо сейчас, когда я пытаюсь подписаться, я получаю ошибку «Несоответствие вызова».

Я знаю это: https://pubsubhubbub.googlecode.com/git/pubsubhubbub-core-0.3.html#subscribing объясняет, что я пытаюсь сделать лучше, чем то, что я только что сделал, а в разделе 6.2.1 есть разбивка. Как настроить функцию AWS Lambda и/или шлюз API для отражения строки токена подтверждения «hub.challenge»?


person vulcanluver    schedule 24.04.2016    source источник
comment
Ссылка в вопросе не работает. Кто-нибудь знает альтернативный источник этой информации?   -  person rofls    schedule 14.07.2017
comment
Вот этот pubsubhubbub.github.io/PubSubHubbub/   -  person vulcanluver    schedule 04.08.2017


Ответы (1)


Вам необходимо использовать функцию сопоставления параметров шлюза API, чтобы сопоставить параметры из строки входящего запроса с параметром, переданным вашей функции Lambda. Судя по предоставленной вами ссылке на документацию, вам, по крайней мере, потребуется сопоставить параметр строки запроса hub.challenge, но вам также могут понадобиться другие параметры (hub.mode, hub.topic и hub.verify_token) в зависимости от какая логика проверки (если есть), которую вы реализуете.

Первый шаг — объявить параметры строки запроса на странице запроса метода. После объявления параметров откройте страницу запроса на интеграцию (где вы указываете, какую функцию Lambda API Gateway должен вызывать) и используйте значок «+», чтобы добавить новый шаблон. В шаблоне вам нужно будет указать тип контента (application/json), а затем тело, которое вы хотите отправить в Lambda. Вы можете прочитать как строку запроса, так и параметры заголовка, используя функцию params(). В этом поле сопоставления ввода вы создаете тело события, которое публикуется в AWS Lambda. Например: { "вызов": "$input.params('hub.challenge')" }

Документация по сопоставлению параметров строки запроса< /а>

person MikeD at AWS    schedule 25.04.2016
comment
Большое спасибо! - person vulcanluver; 25.04.2016