2017-11-04 3 views
1

Ich rufe die AWS Lambda CLI to invoke meine Funktion an. Ich möchte die Funktionsantwort (Payload) als Teil meines Rückgabeobjekts erhalten, also passiere ich --invocation-type RequestResponse. Damit bekomme ich immer noch nur die Funktionsausgabe in meiner Ausgabedatei (was mir eigentlich egal ist). Ich möchte es als Teil des Objekts, das von diesem CLI-Aufruf zurückgegeben wird, aber dort bekomme ich nur das LogResult und den StatusCode.Nein Payload Eigenschaft auf AWS Lambda CLI Antwort aufrufen

{ 
    "LogResult": "encoded blah blah blah", 
    "StatusCode": 200 
} 

Mache ich einen Tippfehler in meinem Kommando oder fehle ich etwas? Wie kann ich die Funktionsausgabe (Payload) als Teil des Objekts erhalten, das von diesem CLI-Aufruf zurückgegeben wird?

aws lambda invoke --function-name myFunction --invocation-type RequestResponse --log-type Tail --payload {} --region us-east-1 testoutput.txt 
+0

Bitte überprüfen Sie, ob Sie die neueste Version des AWS CLI-Tools mit dem Befehl 'aws --version' haben. –

+0

Ausführung Version 1.11.129, die natürlich veraltet ist, aber wenn ich versuche, mit' pip install awscli upgrade --user Ich habe dieselbe Version. Ich bin mir nicht sicher, wie ich auf 1.11.84 kommen soll (ich bin auf Amazon Linux). –

+0

1.11.129 ist eine neuere Version als 1.11.84. 129 ist größer als 84 –

Antwort

2

Ich möchte die Funktion Antwort (Payload) als Teil meiner Rückkehr Objekt bekommen, damit ich --invocation-type RequestResponse

vorbei bin, dass ist nicht das, was diese Option tut. Außerdem ist dies im Wesentlichen ein No-Op, da RequestResponse bereits der Standardwert ist. Die Alternative (Event) weist Lambda an, die Funktion asynchron (aus Ihrer Perspektive) auszuführen, ohne darauf zu warten, dass sie abgeschlossen wird. Es geht nicht darum, wie die Antwort gesammelt oder zurückgegeben wird, sondern darum, ob die Antwort vollständig verworfen wird, weil Ihre Aufrufanforderung von der laufenden Funktion getrennt ist und sofort zurückkehrt.

Ich bin noch immer nur die Funktion Ausgabe in meiner Ausgabedatei

das genau ist, wie es funktionieren soll. Das ist warum müssen Sie eine Ausgabedatei angeben. Die Funktionsausgabe wird nur in diese Datei geschrieben.

+0

Ah yep, du hast Recht mit dem ersten Teil. Aber ich muss dies angeben, um die Protokolle korrekt zu erhalten. Aus der Dokumentation: 'Sie können diesen optionalen Parameter auf Tail in der Anfrage setzen, wenn Sie den Aufruftyp-Parameter mit dem Wert RequestResponse angeben. Und ich hoffe, Sie irren sich mit diesem: 'Die Funktion Ausgabe wird nur in diese Datei geschrieben. Leider gibt es keine Hinweise in der Dokumentation, dass dies der Fall ist. So wie sie geschrieben und strukturiert sind, scheint es, als wäre es ein Teil des Rückgabeobjekts, aber Ihre Schlussfolgerung ist aus den Ergebnissen, die ich erhalte, vernünftig. Danke! –

+1

* "Es gibt keinen Hinweis in den Dokumenten, dass dies der Fall ist." * Es ist nicht klar, warum Sie glauben ... oh. Ja, ich sehe es, jetzt ... unten auf der Seite zeigt es "Payload". Das habe ich vorher nicht bemerkt, da 'output-file' kein optionales Argument ist, benutze ich das. Dies scheint entweder ein Dokumentationsfehler oder ein Versehen zu sein, als ob es vielleicht einen magischen Wert gibt, den man für eine "Ausgabedatei" liefern kann. Wenn alles andere fehlschlägt, lesen Sie die Quelle. Die zugrundeliegende Lambda-API liefert diese anderen Werte nicht als JSON, sondern als HTTP-Response-Header, sodass der JSON, den Sie * do * bekommen, tatsächlich von aws-cli erstellt wird. –