2016-11-04 3 views
0

Ich möchte Amazon Lambda-Funktionen ähnlich wie Unix-Rohre orchestrieren, aber mit jeder Funktion seiner ursprünglichen Nutzlast Gabe (und Ergebnisse) auf die nächste:Unix Style Pipe mit AWS Lambdas?

charge_customer | send_log | email_customer 

charge_customer wird über die API-Gateway aufgerufen.

Ich habe darüber nachgedacht, diese mit SNS zu erreichen: Habe ein

client_fetch('POST', 'url/to/first_func', payload_including_next_funcs) 

und dann auf SNS first_func s Ergebnis setzen.

Aber es scheint nicht möglich, ohne das erste Lambda warten auf alle anderen zu vervollständigen. Ich könnte auch ein erstes Lambda haben, um alle anderen anzurufen und dann zurückzukehren.

Gibt es eine Möglichkeit, einen solchen Mechanismus zu erreichen? Oder andersherum kann ich vermeiden, dass alle Code in einem einzigen Lambda, und immer noch mit einem einzigen API-Gateway Roundtrip und keine Lambdas aufeinander warten?

+1

Aus dem Aussehen Ihrer Funktionsnamen scheint mir, dass 'send_log' und' email_customer' keine Aktionen sind, die der Client, der die Anfrage erstellt, wirklich interessiert. In diesem Fall können Sie einfach sowohl "send_log" als auch "email_customer" als "Ereignisse" innerhalb der "charge_customer" -Funktion aufrufen, bevor Sie von dort zurückkehren. – idbehold

+0

Sie können einfach eine andere FunktionB aus Funktion A asynchron aufrufen – hnvasa

+0

Vielen Dank beide. @idbehold, ich hatte gehofft zu vermeiden, die Lambda-Kosten zu verdoppeln, indem ich einen internen Mechanismus von Amazon benutze, aber vielleicht ist das nicht möglich. – bebbi

Antwort