Ich weiß, dass es möglich ist, Parameter an ein Java-Programm zu übergeben, das auf AWS Lambda läuft, um es zu testen. Aber ich weiß nicht, wie ich diese Parameter übergeben soll, wenn dieses Programm von einem Zeitplanereignis aufgerufen wird.
Weiß jemand, ob das möglich ist? Wenn ja, wie? Ich konnte nichts darüber finden.
Vielen Dank im Voraus
Sie können Parameter indirekt übergeben, zum Beispiel indem Sie diese auf s3 oder dynamo db speichern. Bei jedem geplanten Zyklus können Sie vom vorgegebenen Ort lesen und an Ihr Programm übergeben. Wenn ich mehrere geplante Lambda-Funktionen mit gemeinsam genutztem Quellcode starten möchte, bündle ich normalerweise eine Datei (jedes lesbare Format) mit dem Quellcode selbst und lese ihn während des Laufs. @garnaat hat recht, außerdem ist es derzeit unmöglich, neue Lambda-Funktionen dynamisch zu starten, was eine große Unannehmlichkeit darstellt.
Gegenwärtig besteht die einzige Möglichkeit, eine geplante Lambda-Funktion zu erstellen, über die AWS-Konsole, und es bietet keine Möglichkeit, Parameter an die Lambda-Funktion zu übergeben, wenn der Scheduler sie aufruft. Da Ihre Lambda-Funktion vom Scheduler in AWS aufgerufen wird, ist es für mich nicht wirklich klar, wie die Parameterübergabe funktionieren würde.
Eine weitere Option, wenn Sie automatisierte Deploys oder CI haben, besteht darin, Ihre Argumente mit maven (oder ähnlich) und Eigenschaften in die Build-Zeit einzufügen. Ich denke, es ist ein wenig mehr optimiert, da Sie keine Datei von S3 lesen müssen?
Zum Beispiel können Sie config/env1/app.properties
und config/env2/app.properties
Mit dem Maven erstellen Sie Profile, die die jeweilige Konfiguration laden wie:
%Vor% Lesen Sie in Ihrem Code die Requisiten wie gewohnt props.load(ClassLoader.getSystemResourceAsStream("app.properties"));
In Ihrer Automatisierung können Sie mvn install -P en1
erstellen, damit Ihr Jar bereitgestellt wird.
Sie könnten die Umgebungsvariablen aus der Lambda-Konfiguration nutzen. Dann lesen Sie sie in Ihrem Java-Programm mit:
%Vor%Sie können die CloudWatch-Regel als Zeitplan erstellen und die Eingabe des Ziels als konstanten JSON-Wert konfigurieren:
CloudWatch - & gt; Ereignisse - & gt; Regeln - & gt; Zeitplan - & gt; Targers
Setze Konfiguriere Eingabe als Konstant (JSON-Text) und gib dort gültige JSON-Daten weiter.
In Lambda können Sie auf eine konstante Eingabe als Eingabeobjekt zugreifen.
Tags und Links java amazon-web-services aws-lambda