Wie übermittele ich Json-Eingaben an ein Cron-geplantes Lambda, das im Serverless-Event eingesetzt wird?

10

Ich habe versucht, ein Lambda in Serverless zu implementieren, um es mit einem Cron-Zeitplan auszuführen, der es stündlich aufruft. Wenn es aufgerufen wird, möchte ich, dass das Ereignis innerhalb des Lambda von meiner eigenen JSON-Eingabe und nicht von den Informationen aus dem Cron-Ereignis ausgefüllt wird, das bei der Bereitstellung die Standardeingabe ist.

In der AWS-Konsole kann ich manuell den Cron-Trigger für das Lambda aufrufen und die Eingabe von "Übereinstimmendes Ereignis" in "Konstante (JSON-Text)" ändern, um das gewünschte Ergebnis zu erhalten. Da Serverless diese Regel bei der Bereitstellung von Lambda erstellt, habe ich das Gefühl, dass es eine Möglichkeit geben sollte, die Eingabe über eine Konfiguration in der Datei serverless.yml zu ändern. Ich habe nichts gefunden, während ich die Dokumente für Serverless durchsucht habe, also frage ich mich, ob das durch Serverless in seinem aktuellen Zustand möglich ist, und wenn ja, wie es geht.

Jeder Rat würde geschätzt werden.

Bearbeiten: Es gab ein Update, das diese Funktionalität hätte hinzufügen sollen, aber ich konnte immer noch nicht mit einem Zeitplan mit JSON mit Serverless 1.3.0 bereitstellen (und auch mit 1.2.0 getestet). Einige Beispiele der serverless.yml, die ich verwendete, sind unten:

%Vor%

Würde jemand in der Lage sein, den Zustand dieser Funktion in Serverless ab 1.3.0 zu kommentieren, und ob meine serverless.yml oben gut aussieht?

Bearbeiten 2: Veröffentlichen der funktionierenden serverless.yml

%Vor%     
Raiju 02.11.2016, 17:48
quelle

1 Antwort

6

BEARBEITEN SIE ZU IHREM BEARBEITEN: Ich habe etwas gegraben, es scheint, als ob serverless den Zeitplan automatisch deaktiviert, wenn es keine Zeichenkette ist. Das heißt, wenn Ihr gesamtes Ereignis - schedule: rate(10 minutes) ist, wird es aktiviert. Aber wenn Sie andere Eigenschaften haben, müssen Sie es aktivieren, weil es standardmäßig deaktiviert ist.

Ihr aktuelles .yml sollte also so aussehen:

%Vor%

Sie können dasselbe input und inputPath in Ihrer serverless.yml-Datei verwenden, genauso wie Sie es mit der cloudwatch-Ereignisregel machen würden. Der einzige Unterschied zu Cloudwathregeln besteht darin, dass Sie ein Objekt tatsächlich übergeben können und serverless es automatisch für Sie stringifiziert.

Beispiel:

%Vor%

Dies entspricht der Cloudformations-Ereignisregel mit input:"{'key1':'value1','key2':'value2'}" und übergibt json anstelle des übereinstimmenden Ereignisses.

Gerade jetzt bemerkt, dass die Frage am 2. November gestellt wurde. Zu dieser Zeit war es nicht möglich, aber es wurde kurz nach der Anfrage umgesetzt. Ссылка

    
Erndob 11.12.2016, 09:04
quelle