2

Ich bin ein Newbie-Rails-Programmierer, und ich habe noch weniger Erfahrung mit allen AWS-Produkten. Ich versuche, Lambda zu verwenden, um einen RSS-Feed von youtube zu abonnieren und zu konsumieren. Ich bin in der Lage, den Zeichnungsantrag ganz gut mit HTTParty von meiner lokal gehostete Rails-Anwendung zu senden:Consuming RSS-Feed mit AWS Lambda und API-Gateway

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) 

und es wird die Lambda-Funktion mit einem Erhaltungs-Anforderungs-ping. Ich weiß, dass ich eine hub.challenge Zeichenfolge zurückgeben muss, aber ich weiß nicht wie. Das Lambda-Ereignis ist leer, ich habe in dem Kontext nichts Nützliches gesehen. Ich habe versucht, die Antwort im API-Gateway zu formatieren, aber das hat auch nicht funktioniert. Gerade jetzt, wenn ich versuche, mich anzumelden, bekomme ich einen "Challenge Mismatch" -Fehler zurück.

Ich weiß das: https://pubsubhubbub.googlecode.come/git/pubsubhubbub-core-0.3.html#subscribing erklärt, was ich versuche, besser als das, was ich gerade getan habe, und Abschnitt 6.2.1 ist, wo die Aufschlüsselung ist. Wie richte ich entweder die AWS-Lambda-Funktion und/oder das API-Gateway ein, um die Verifikations-Token-Zeichenfolge 'hub.challenge' zurückzugeben?

+0

Der Link in der Frage ist nach unten. Kennt jemand eine alternative Quelle für diese Information? – rofls

+1

Es gibt diese https://pubsubhubbub.github.io/PubSubHubbub/pubsubhubbub-core-0.3.html#subscribing – vulcanluver

Antwort

2

Sie müssen die Parameterzuordnungsfunktion von API Gateway verwenden, um die Parameter aus der eingehenden Abfragezeichenfolge einem Parameter zuzuordnen, der an Ihre Lambda-Funktion übergeben wird. Von der von Ihnen bereitgestellten Dokumentationsverknüpfung sieht es so aus, als müssten Sie zumindest den Abfragezeichenfolgenparameter hub.challenge abbilden, aber Sie benötigen möglicherweise auch die anderen Parameter (hub.mode, hub.topic und hub.verify_token) Welche Validierungslogik (falls vorhanden), die Sie implementieren?

Der erste Schritt besteht darin, die Parameter für die Abfragezeichenfolge auf der Methodenanforderungsseite zu deklarieren. Nachdem Sie die Parameter deklariert haben, öffnen Sie die Seite für die Integrationsanforderung (in der Sie angeben, welches API-Gateway der Lambda-Funktion aufgerufen werden soll) und verwenden Sie das Symbol "+", um eine neue Vorlage hinzuzufügen. In der Vorlage müssen Sie einen Inhaltstyp (application/json) und dann den Körper angeben, den Sie an Lambda senden möchten. Sie können sowohl die Abfragezeichenfolge als auch die Headerparameter mit der Funktion params() lesen. In diesem Eingabezuordnungsfeld erstellen Sie den Ereignishauptteil, der an AWS Lambda gesendet wird. Zum Beispiel: { "Herausforderung": "$ input.params ('hub.challenge')"}

Documentation for mapping query string parameters

+0

Vielen Dank! – vulcanluver