Wie kann ich eine AWS Lambda-Funktion von Jenkins aus bereitstellen?

7

Ich habe eine einfache Lambda-Funktion, die ich über Jenkins bereitstellen möchte -

public String handleRequest(String input, Context context) {
        String output = "";
        if (input.isEmpty()) {
            output = "No input provided";
        } else {
            output = "Hello, " + input + "! Checking invocation - 1";
        }
        return output;
    }

Ich kann dies problemlos über das AWS Lambda-Plugin von Eclipse bereitstellen und aufrufen.

Ich verwende das AWS Lambda-Plugin für Jenkins und folge deren Dokumentation .

  • Ich stelle mein Git-Repository als Quelle zur Verfügung.
  • Artefakt Ort - src/main/java/
  • Handler Name - lambda.Hello( Lambda ist der Paketname und Hello ist der Klassenname). Ich habe auch versucht lambda.Hello.handleRequest, lambda.Hello::handleRequestund andere Variationen zu verwenden.

Jenkins sagt, dass der Build erfolgreich war, aber wenn ich ihn auf der AWS-Konsole teste, bekomme ich -

"errorMessage": "Class not found: lambda.Hello",
  "errorType": "class java.lang.ClassNotFoundException"

Wo gehe ich hier falsch? Wenn ich die Testfunktion aus AWS exportiere und entpacke, kann ich sehen, dass der Code auf Git definitiv bereitgestellt wurde, aber die Klasse nicht gefunden werden kann.

Anish Sana
quelle

Antworten:

3

Ich habe die Lösung gefunden, als ich versucht habe, die Lambda-Funktion manuell als JAR-Datei bereitzustellen. Dies sind die Schritte -

  • Erstellen Sie Ihre Lambda-Funktion als Maven-Projekt mithilfe der AWS-Dokumentation .
  • Erstellen Sie Ihren Jenkins-Job als Maven-Projekt und geben Sie ihn packageim Abschnitt Ziele an.
  • Befolgen Sie die Dokumentation zum Jenkins Lambda-Plugin für die Bereitstellung und geben Sie target/your-project-1.0-SNAPSHOT.jarals Artefaktspeicherort an.

Dadurch sollte Ihre Lambda-Funktion mit Maven erstellt und dann in AWS bereitgestellt werden.

Anish Sana
quelle