2016-04-11 2 views
2

Ich habe ein AWS-Projekt mit Hilfe von Serverless Framework gestartet, aber ich habe eine Frage bezüglich Lauf Lambda-Funktion.run Lambda-Funktion mit Eingabeparameter in Serverless Framework Befehlszeile

Wie kann ich die Lambda-Funktion mit Eingabeparametern ausführen? Ich kann es über Amazon Konsole, Lambda-Test-Konfiguration-> Test-Ereignis. aber ich kann keine entsprechende Funktion in Serverless finden, weiß jemand?

Dank

Antwort

3

Für die Lambda-Teil

Sie event.json Datei verwenden können:

{ 
    "principalId": "1234", 
    "inputVar": "foo" 
} 

und dann sls function run laufen.

Nach docs, wenn keine Stufe angeben, wird die Funktion lokal ausgeführt, wenn Sie eine Stufe angeben, wird die Funktion den implementierten Code in der entsprechenden Phase ausführen. Aber die docs veraltet scheint, müssen Sie auch wie -d Flagge weitergeben müssen:

sls function run myFunction -s dev -d 

Dieser Befehl wird Ihr Einsatz Lambda-Funktion aufrufen, mit den Parametern von Ihrem lokalen event.json Datei

Hier ist die source code für Funktion ausführen Optionen .

Für Apig Integration

Es gibt einige Beispiele in documentation.

Wenn Sie keine Vorlagen verwenden möchten, können Sie den zugehörigen Code einfach in Ihre s-function.json innerhalb der Endpunktbeschreibung einfügen.

"endpoints": [ 
    ... 

    "requestTemplates": { 
     "application/json": { 
     "principalId": "$context.authorizer.principalId", 
     "apiKey": "$context.identity.apiKey", 
     "inputVar": "$input.json('inputVar')" 
     } 
    } 
    ... 
    ] 

Syntax ist wie beschrieben in API Gateway Accessing the $input Variable doc.

+0

Danke Alper, es funktioniert jetzt für mich. Während du die Option -d behandelst, frage ich mich, ob es sowieso möglich ist, die Lambda-Funktion und Endpunkte (API-Gateway) zu Amazon ohne Deployment hochzuladen (ich meine, ohne eine neue Version zu erstellen), manchmal möchte ich nur testen, ob es auf Amazon funktioniert . –

+0

afaik nein. Auto-Versionierung wird immer ausgelöst. aber Sie können Prune-Plugin verwenden, um alte Versionen zu löschen. –

+1

Sie können eine Funktion '$ serverless deploy function -f Funktionsname' bereitstellen. Es ist viel schneller als die Bereitstellung des gesamten Projekts "$ serverless deploy". Es überspringt das CloudFront-Update. Hier ist ein Beispielcode - [http://serverless-stack.com/chapters/deploy-the-apis.html](http://serverless-stack.com/chapters/deploy-the-apis.html?utm_source= stackoverflow.com) – Frank