【问题标题】:Consuming RSS feed with AWS Lambda and API Gateway使用 AWS Lambda 和 API Gateway 使用 RSS 提要
【发布时间】:2016-04-24 15:20:01
【问题描述】:

我是一名新手 Rails 程序员,我对所有 AWS 产品的经验更少。我正在尝试使用 lambda 订阅和使用来自 youtube 的 rss 提要。我可以从本地托管的 Rails 应用程序中使用 HTTParty 发送订阅请求:

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 Gateway 以反映“hub.challenge”验证令牌字符串?

【问题讨论】:

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


【解决方案1】:

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

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

Documentation for mapping query string parameters

【讨论】:

  • 非常感谢!
猜你喜欢
  • 1970-01-01
  • 2017-12-07
  • 2018-02-14
  • 2018-02-16
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 2021-04-18
  • 1970-01-01
相关资源
最近更新 更多