2015-07-23 11 views
5

Ich versuche immer noch, mich an die Einschränkungen von AWS Lambda zu erinnern, besonders jetzt, da AWS API Gateway viele Optionen für das Bedienen von REST-Anforderungen mit Lambda eröffnet.AWS Lambda mit API Gateway für angulares Back-End?

Ich überlege, eine Web-App in Angular mit Lambda als das Back-End zu erstellen.

Für einfache CRUD Zeug scheint es einfach genug, aber was ist mit Authentifizierung? Kann ich in Lambda so etwas wie Passport verwenden, um die Benutzerauthentifizierung durchzuführen?

+0

Haben Sie das jemals versucht und es zur Arbeit gebracht? Ich kann meine API-Gateway-Endpunkte treffen und Lambda-Funktionen mit Postman ausführen, aber eckig tut es einfach nicht. – dudemonkey

Antwort

12

Ja, Sie können so ziemlich alles machen, speichern Sie einfach Ihre Sitzung in einer AWS gehosteten Datenbank (RDS, Dynamo, etc). Aber achten Sie auf genau Sie kaufen mit Lambda. Es hat viele Kompromisse.

  • Preis: Ein EC2-Server einen Festpreis pro Monat kostet, aber Lambda hat ein Kosten pro Anruf. Was günstiger ist, hängt von Ihrem Nutzungsverhalten ab. Lambda ist billiger, wenn niemand Ihr Produkt verwendet, EC2 ist am wahrscheinlichsten billiger als die Nutzung erhöht.

  • Maßstab: EC2 können (in vielerlei Hinsicht) Maßstab, aber es ist mehr "manuell" und "klobig" (nur 1 Server ausgeführt werden können oder 2, nicht mehr als 1,5). Lambda hat eine feinkörnige Skalierung. Sie kümmern sich nicht darum, aber Sie haben auch weniger Kontrolle darüber.

  • Leistung: Lambda ist eine bestimmte Geschwindigkeit, und Sie haben sehr wenig Kontrolle. Es kann in einigen Fällen große Latenzen geben, wenn neue Container für den Datenverkehr bereitgestellt werden. EC2 bietet Ihnen viele weitere Möglichkeiten zur Leistungsoptimierung. (Boxgröße, On-Box-Caches, Verwendung der neuesten node.js, Entfernen von nicht benötigten Diensten aus der Box, Strace ausführen usw.) Sie können überschüssige Kapazität bezahlen, um eine niedrige Latenz sicherzustellen.

  • Code: Die Art, wie Sie programmieren, unterscheidet sich geringfügig in Lambda gegenüber EC2. Lambda zwingt Sie dazu, einige Konventionen zu befolgen, die meist Best Practice sind. Aber EC2 erlaubt Ihnen, sie für die Leistung oder nur die Geschwindigkeit der Entwicklung zu verletzen. Lambda ist eine "Black Box", in der Sie weniger Kontrolle und Sichtbarkeit haben, wenn Sie Fehler beheben müssen.

  • Setup: Lambda ist einfacher zu installieren und benötigt insgesamt weniger Wissen. EC2 erfordert, dass Sie ein Systemadministrator zu sein und verstehen, Akronyme wie VPC, EBS, VPN, AMI usw.

1

aber was ist Authentifizierung?

Der modulare Ansatz ist API Gateway Custom Authorizers (neu seit Feb'16) zu verwenden, um eine AWS Lambda-Funktion, die Authentifizierung und Autorisierung implementieren zu liefern.

Ich schrieb eine generische Custom Authorizer that works with Auth0 ein 3rd-Party-Single-Sign-On-Service. auch

diese Frage Siehe: How to - AWS Rest API Authentication

Würde ich in der Lage sein, so etwas wie Reisepass innerhalb Lambda verwenden Benutzerauthentifizierung zu tun?

Nicht leicht. Passport benötigt Callback-URLs, die Sie erstellen und konfigurieren müssten.

3

Dies hier zu veröffentlichen, da dies der erste Thread ist, den ich bei der Suche nach laufenden NodeJS Passport-Authentifizierung auf Lamdba gefunden habe.

Da Sie Express apps on Lamda ausführen können, können Sie Passport auf Lambda direkt ausführen. Passport ist jedoch eine Middleware speziell für Express, und wenn Sie für Lamda in erster Linie entwerfen, möchten Sie wahrscheinlich nicht das Aufblähen von Express (Da das API Gateway im Grunde all das tut).

Wie @Jason erwähnt hat, können Sie einen benutzerdefinierten Autorizer verwenden. Das scheint ziemlich einfach zu sein, aber wer möchte alle möglichen Authentifizierungsmethoden erstellen? Das ist einer der Vorteile von Passport, die Leute haben das schon für Sie getan. Wenn Sie die Servlerless Framework verwenden, hat jemand das Projekt "Serverless-authentication" aufgebaut. Dies umfasst Module für viele Standardauthentifizierungsanbieter: Facebook, Google, Microsoft. Es gibt auch a boilerplate for building out more auth providers.

Ich brauchte eine ganze Menge Forschung, um über all das hinwegzukommen, also hoffentlich hilft es jemand anderem.

Verwandte Themen