2016-05-05 6 views
2

Die Amazonica Test für das AWS Lambda API (link) zeigt ein einfaches Beispiel eine Lambda-Funktion aus einer Javascript Klecks Erstellen (role ein ARN-String für eine Rolle ist, die Lambda-Ausdrücke erstellen kann):Wie erstellt man eine AWS-Lambda-Funktion aus einem Clojure-Projekt oder einem Jar?

(def handler "exports.helloWorld = function(event, context) { 
        console.log('value1 = ' + event.key1) 
        console.log('value2 = ' + event.key2) 
        console.log('value3 = ' + event.key3) 
        context.done(null, 'Hello World') 
       }") 

(create-function :role role :function handler) 

niemanden wissen, ob create-function einen Lambda aus einem Glas erstellen kann? Würde es einfach eine schlechte Idee sein, einen Dateistream oder eine Binärfolge des Jar an create-function zu übergeben, selbst wenn es funktionieren würde?

Ich könnte einfach ein Bash-Skript mit der AWS CLI verwenden, um ein Lambda aus einem Glas zu erstellen, aber zuerst wollte ich überprüfen, ob es eine bekannte einfache Methode dafür in Clojure gibt.

Eine weitere Option wäre, das JAR in einen S3-Bucket hochzuladen und dann ein CloudFormation-Skript basierend auf dem Beispiel here bereitzustellen. Es scheint jedoch etwas albern, einen S3-Eimer zu haben, nur um Artefakte zu bauen, wenn Lambda sie selbst speichert.

Antwort

1

definitiv Sie den Upload via S3 tun kann, habe ich ein Beispiel für so hier tun: https://github.com/langford/clj-aws-lambda-example auch

sehr interessiert an dieser Methode. Ich stimme zu, dass der Boxenstopp bei S3 so aussieht, als könnte er entfernt werden.

+2

Für den Fall, dass etwas mit diesem Beispiel passiert, ist das entsprechende Tool "lein lambda" von https://github.com/mhjort/clj-lambda-utils. Sieht nach einer guten Lösung für mich aus, ich werde es nächstes Mal versuchen, wenn ich mit Lambdas arbeite. –

1

Es tut mir leid, dass ich nicht gründlich Ihre Frage beantworten kann, aber ich habe versucht, ein Hallo-Welt clojure App zu implementieren, so dass Sie in der richtige Richtung hoffentlich zeigen:

  • Anmeldung zu Ihrer AWS-Konsole
  • Navigieren Sie zu Lambda
  • die Hallo Welt Beispielanwendung direkt
  • aus einem Dropdown-Menü auswählen Java 8
  • Laden Sie Ihre JAR Aufmachen
  • Füllen Sie den Classpath zu Ihrer Startfunktion aus (fragen Sie mich nicht warum; Ich habe nicht dieses Recht bekommen noch entweder)
  • die Rollen Box klicken und folgen Sie den Anweisungen die Standard reccomended Rollen erstellen Config

Ist dies nicht hilfreich lass es mich wissen!

+0

Die direkte JAR-Upload-Methode schlägt schließlich fehl, wenn Ihr Glas immer größer wird. Ich erinnere mich nicht an die genaue Schwelle, aber es wird plötzlich ein wenig Arbeit sein, wenn Sie S3 herausfinden. – Michael