Die Prüfung AWS Lambda-Ausdrücke lokal hinter API-Gateway Endpunkte
AWS-noob hier. Das ist ein bisschen ein 'best-practice-Entwicklung-Frage" - aber ich werde versuchen, genau zu sein:
Ich weiß, ich kann testen, Lambda-Ausdrücke in Knoten lokal mit einer json-Datei für die Eingabe, aber ich bin mir nicht sicher, der beste Weg, um "integration-test" meiner web-app, die ausgeführt wird, im S3 und rufen Sie die Lambda-Ausdrücke in Reaktion auf die API-Gateway-Endpunkt nennt.
Wäre es wunderbar um meine eigentliche API-Gateway-Konfigurations-Dateien ermöglichen es mir, dieselben Methoden aufrufen, lokal, und führen Sie meine Lambdas vor Ort. Dieser Artikel legt nahe, dass das nicht möglich ist, doch da es keine lokalen API-gateway Testumgebung: http://nickmchardy.com/blog/2015/09/my-thoughts-about-aws-api-gateway-working-with-aws-lambda
Vielleicht ist das nicht klar, ein Beispiel: wenn ich einen Benutzer/eine Methode in der API-Gateway, mit GET und POST, die angeschlossen sind listUsers.js und createUser.js Lambda-Ausdrücke jeweils in AWS; in der Entwicklung möchte ich nennen: http://localhost:0000/users GET/POST und haben es laufen die Lambda-Ausdrücke und geben die richtigen Antworten, so kann ich meine ganze Architektur vor Ort.
Offensichtlich Aufruf einer Sache zu einer url ist nicht besonders kompliziert, also meine Frage ist mehr: was ist die best practice für diese Betrachtung habe ich mein (Cloudfront!? KIEFER!?) Konfiguration, wie diese Dinge miteinander verknüpfen, die in AWS, kann ich es nutzen für die lokale Prüfung überhaupt?
Entschuldige mich, wenn diese entweder nicht klar oder sehr klar!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Oh. Die Antwort ist offenbar 'Serverlose' (ehemals BACKEN): https://github.com/serverless/serverless . Behalten musste Googeln, Entschuldigung! Nicht sicher, ob Sie diese Frage jetzt?! Ich denke, es könnte hilfreich sein für andere? Vor allem als Serverlose ist neu?
Derzeit AWS-API-Gateway und AWS Lambda nicht über lokale testing-version, aber wir werden prüfen, wie eine feature-Anfrage.
Unserer suite (Bespoken-Tools) ermöglicht es Ihnen, genau das zu tun. In diesem tutorial wird erklärt, wie:
http://docs.bespoken.tools/en/latest/tutorials/tutorial_lambda_local/
Die kurze Zusammenfassung ist:
1) Installieren Sie bespoken-tools
npm install bespoken-tools -g
2) Starten Sie einen proxy mit Ihren Lambda
bst proxy lamdba index.js
3) Nehmen Sie die URL ein, druckt es aus und verwenden Sie, dass in der API-Gateway
Konfigurieren der API-Gateway als HTTP-integration, und verwenden Sie die URL, die wird ausgedruckt, wenn Sie starten Sie den proxy in Schritt 2.
Hoffe, das hilft! Sobald Sie es einrichten, die Anrufe an Ihre API-Gateway wird direkt in der Lambda-läuft lokal auf Ihrem laptop.
Kurzem habe ich mit ClaudiaJS, mir zu helfen, auf AWS Lambda Entwicklung. Der Schöpfer, bauen auch diese Bibliothek namens claudia-api-generator, die Ihnen helfen aorund bauen AWS-API-Gateway, das auslösen von lambda-event. In diesem Rahmen können Sie testen, den Endpunkt in der test-Klasse oder ein anderes, indem Sie so etwas wie
Obwohl dieser Weg nicht wirklich einfach zu verstehen, zumindest mir hilft es, für unit-testing, meine lambda-api über das api-gateway.
Können Sie auch aws-sam-lokale
Zuerst müssen Sie installieren Sie das Andockfenster. Nächste, gehen Sie folgendermaßen vor:
Der CLI anzeigen der API-Funktion, um eine localhost-URL. Jetzt können Sie mit cURL, Briefträger oder Ihre browser-hit-API-Endpunkt.
Gibt es keine Möglichkeit zum ausführen des API-gateway lokal, leider.
Ich bin mir nicht sicher, ob es eine best practice, aber das, was wir tun, ist, mehrere Kopien der gleichen API in der API-gateway: ein dev, staging und live-API. Wir haben nicht die Option nutzen, Stadien, wie die Endpunkte, verbunden wäre, um die gleiche lambda-Funktion und Versionierung war wirklich schwierig (es ist etwas besser jetzt). Erstellen getrennte APIs und separaten Lambda-Funktionen ist es ganz einfach, drei setups bereit. Mit ein paar shell-Skripte, die wir gebaut, die wir bereitstellen können, um jedem Stadium.
Der Nachteil ist, dass man nur entwickeln, während Sie online, aber für uns ist das nicht wirklich ein Nachteil.
Ich schlage vor, Sie Folgendes tun:
1.Wenn Sie schreiben einen lambda-Ausdruck stellen Sie sicher, dass Sie nicht wissen, was es nannte (http z.B.), sondern er kennt alle, die es braucht, um zu wissen, das Ereignis json.
2.Wenn Sie getan haben, "1", dann verwenden Sie "Grunzen" :https://www.npmjs.com/package/grunt-aws-lambda
für die Prüfung Ihrer Lambda-Ausdruck mit custom "event" - Dateien.
Dies wird Ihnen erlauben, zu unitest Ihren Lambda getrennt von der aws-api-gateway.
3.verwenden npm test-Aufbau eines E2E-test mit dem http-Anforderung ist zu überprüfen, dass Ihre Körper-manipulation-richtig gemacht wird .