使用AWS Lambda和API Gateway消费RSS提要

时间:2016-04-24 15:20:02

标签: amazon-web-services youtube-api aws-lambda aws-api-gateway pubsubhubbub

我是一名新手铁路程序员,我对所有AWS产品的经验甚至更少。我正在尝试使用lambda来订阅和使用来自youtube的RSS源。我可以通过我本地托管的rails app发送订阅请求就好了。

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)

它将使用get请求ping lambda函数。我知道我需要回应一个hub.challenge字符串,但我不知道如何。 lambda事件是空的,我在上下文中没有看到任何有用的东西。我尝试在API网关中格式化响应,但这也不起作用。所以现在当我尝试订阅时,我会收到“挑战不匹配”错误。

我知道这一点:https://pubsubhubbub.googlecode.come/git/pubsubhubbub-core-0.3.html#subscribing解释了我想要做的比我刚刚做的更好,第6.2.1节是细分的地方。如何设置AWS Lambda函数和/或API网关以反映'hub.challenge'验证令牌字符串?

1 个答案:

答案 0 :(得分:2)

您需要使用API​​网关的参数映射功能将传入查询字符串中的参数映射到传递给Lambda函数的参数。从您提供的文档链接看起来,您至少需要映射hub.challenge查询字符串参数,但您可能还需要其他参数(hub.mode,hub.topic和hub.verify_token),具体取决于你正在实施什么验证逻辑(如果有的话)。

第一步是在方法请求页面中声明查询字符串参数。声明参数后,打开集成请求页面(您指定哪个Lambda函数API网关应该调用),并使用“+”图标添加新模板。在模板中,您必须指定内容类型(application / json),然后指定要发送给Lambda的正文。您可以使用params()函数读取查询字符串和标头参数。在该输入映射字段中,您将创建发布到AWS Lambda的事件正文。例如:{“challenge”:“$ input.params('hub.challenge')”}

Documentation for mapping query string parameters