2

我是一位新手rails程序員,而且我對AWS產品的使用經驗也較少。我正在嘗試使用lambda來訂閱並使用來自YouTube的rss訂閱源。我能夠從我的本地託管Rails應用程序發送訂閱請求只是HTTParty罰款:使用AWS Lambda和API Gateway消費RSS訂閱源

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) 

,它會用ping命令GET請求lambda函數。我知道我需要回顯hub.challenge字符串,但我不知道如何。 lambda事件是空的,我沒有看到任何有用的上下文。我嘗試在API網關中格式化響應,但這也不起作用。所以現在當我嘗試訂閱時,我會回到「挑戰不匹配」錯誤。

我知道這個:https://pubsubhubbub.googlecode.come/git/pubsubhubbub-core-0.3.html#subscribing解釋了我想要做的比我剛剛做的更好,6.2.1節是故障發生的地方。如何設置AWS Lambda函數和/或API網關以反映「hub.challenge」驗證令牌字符串?

+0

在問題的鏈接斷開。有誰知道這個信息的替代來源? – rofls

+1

有這個https://pubsubhubbub.github.io/PubSubHubbub/pubsubhubbub-core-0.3.html#subscribeing – vulcanluver

回答

2

您需要使用API​​網關的參數映射功能將來自傳入查詢字符串的參數映射到傳遞給您的Lambda函數的參數。從您提供的文檔鏈接看來,您至少需要映射hub.challenge查詢字符串參數,但您可能還需要其他參數(hub.mode,hub.topic和hub.verify_token),具體取決於你正在執行什麼驗證邏輯(如果有的話)。

第一步是在方法請求頁面中聲明您的查詢字符串參數。聲明參數後,打開集成請求頁面(指定哪個Lambda函數API網關應調用該頁面),並使用「+」圖標添加新模板。在模板中,您必須指定內容類型(application/json),然後指定要發送到Lambda的主體。您可以使用params()函數讀取查詢字符串和標頭參數。在該輸入映射字段中,您將創建發佈到AWS Lambda的事件主體。例如:{ 「挑戰」: 「$ input.params( 'hub.challenge')」}

Documentation for mapping query string parameters

+0

非常感謝你! – vulcanluver