Schlüsselpunkte
lambda-local
, die AWS -Lambda -Umgebungen lokal simulieren können. Dieser Artikel wurde ursprünglich in MongoDB veröffentlicht. Vielen Dank, dass Sie die Partner unterstützt haben, die SitePoint ermöglicht haben.
In den letzten Jahren hat das Entwicklerumfeld enorme Veränderungen erfahren. In der Vergangenheit haben wir Entwickler normalerweise alle Tools (Datenbanken, Webserver, Entwicklungs -IDEs…) auf ihren eigenen Maschinen ausführen, aber Cloud -Dienste wie Github, MongoDB Atlas und AWS Lambda revolutionieren dies. Sie machen es Entwicklern immer einfacher, überall, auf jedem Gerät, ohne (oder mit sehr wenigen) Abhängigkeiten Code zu schreiben und auszuführen.
Vor ein paar Jahren, wenn Sie abgestürzt sind, Ihre Maschine verloren haben oder einfach Ihre Stromversorgung verloren haben, kann es mehrere Tage dauern, bis Sie Ihre neue Maschine wieder einrichten, alles richtig aufstellen und konfigurieren, um sie wieder an die vorherigen zu bringen ein Staat.
Mit den Cloud -Entwickler -Tools können Sie jetzt von einem Laptop zum anderen wechseln, ohne zu viel Störung zu verursachen. Das bedeutet jedoch nicht, dass alles gut läuft. Das Schreiben und Debuggen von Code in der Cloud ist immer noch eine Herausforderung.
genau das werde ich in diesem Blog -Beitrag zeigen: Wie man AWS Lambda node.js -Funktionen mit der in MongoDB -Atlas gehosteten MongoDB -Datenbank (Datenbank als Dienst) einfach integrieren. Insbesondere schreiben wir eine einfache Lambda -Funktion, die ein einzelnes Dokument in einer Sammlung erstellt, die in einer MongoDB -Atlas -Datenbank gespeichert ist. Ich werde Sie Schritt für Schritt durch diesen Tutorial führen und Sie sollten es in einer Stunde beenden.
Beginnen wir mit den erforderlichen Anforderungen und starten Sie:
Jetzt, da Sie die Anforderungen verstehen, lassen Sie uns die spezifischen Schritte erörtern, die wir unternehmen werden, um unsere Lambda -Funktionen zu schreiben, zu testen und bereitzustellen:
Ich habe mich aus zwei Gründen nicht auf die Details zur Einrichtung des VPC -Penings zwischen unserem MongoDB Atlas Cluster und AWS Lambda eingerichtet: 1) Wir haben bereits eine detaillierte Dokumentationsseite zum Einrichten von VPC -Peering und ein Ich empfehle diesen Beitrag dran auf VPC Peering in Atlas;
Wenn Sie kein VPC -Peering einrichten, wird Folgendes geschehen:
Wenn Sie nur versuchen, diesen Demo-Code für das Schreiben zu erhalten, sind diese beiden Warnungen möglicherweise in Ordnung. Wenn Sie jedoch vorhaben, eine Lambda-Atlas-Integration bereitzustellen, die in einer Produktionsumgebung verwendet werden kann, ist das Einrichten von VPC-Peering eine Wir empfehlen dringend, die Sicherheitsverfahren zu empfehlen. M0 ist unser aktuelles kostenloses Produkt.
Erinnern Sie daran, dass für Entwicklungsumgebungen und Websites mit geringem Verkehr die Größen M0, M10 und M20 in Ordnung sein sollten. Für Produktionsumgebungen, die hochverträgliche Anwendungen oder große Datensätze unterstützen, wird empfohlen, eine M30- oder größere Instanzgröße zu verwenden.
Stellen Sie sicher, dass Ihre Bewerbung die Richtlinie der Mindestberechtigungszugriffsrichter entspricht, um Ihre Daten vor böswilligen Bedrohungen zu schützen. Aus diesem Grund werden wir einen bestimmten Datenbankbenutzer einrichten, der nur Lese-/Schreibzugriff auf unsere Reisedatenbank hat. Lassen Sie uns sehen, wie dies in MongoDB -Atlas implementiert werden kann:
Wählen Sie auf der Cluster -Seite die Registerkarte Sicherheit und drücken Sie die Schaltfläche Neue Benutzer hinzufügen
Lassen Sie uns die Cluster -Verbindungszeichenfolge übrigens erhalten, da wir sie im Lambda -Code benötigen, um eine Verbindung zu unserer MongoDB -Atlas -Datenbank herzustellen:
Angenommen, Sie haben einen MongoDB -Atlas -Cluster erstellt. Drücken Sie die Taste "Connect" neben dem Cluster:
Wenn Sie nicht das VPC -Peering verwenden, navigieren Sie zur Registerkarte IP -Whitelist und fügen Sie den CIDR -Block 0.0.0.0/0 hinzu oder drücken Sie den Zugriff von überall von überall zulässt. Zur Erinnerung wird sehr empfohlen, dass diese Einstellung nicht in Produktionsumgebungen verwendet wird, und kann Ihren MongoDB -Atlas -Cluster für böswillige Angriffe anfällig machen.
Während die Lambda -Funktion mehrere Sprachen unterstützt, habe ich mich dank der zunehmenden Popularität von JavaScript als multifunktionale Programmiersprache und dem großen Erfolg von Mean und Mern Stacks (MongoDB, Express.js, Angular /React , Node.js Acronyms - Siehe Andrew Morgans wundervolle Entwickler -Blog -Serie zu diesem Thema). Um ehrlich zu sein, gefällt mir auch, dass es sich um eine interpretierte leichte Sprache handelt, die keine starken Entwicklungstools und Compiler erfordert.
Jetzt ist es Zeit, Code zu schreiben. Verwenden wir also weiterhin Node.js als unsere bevorzugte Sprache für unsere Lambda -Funktionen.
Erstellen Sie zuerst einen Ordner wie Lambda-Atlas-Create-Doc
<code>mkdir lambda-atlas-create-doc && cd lambda-atlas-create-doc</code>
Führen Sie als nächstes den folgenden Befehl aus der Terminalkonsole aus und initialisieren Sie unser Projekt mit der Paket.json -Datei
<code>npm init</code>
Das System fordert Sie auf, einige Felder zu konfigurieren. Ich habe sie Ihrer Kreativität überlassen, aber beachten Sie, dass ich den Einstiegspunkt auf app.js (und nicht den Standard -Index.js) festgelegt habe.
Wir müssen den mongoDB node.js -Treiber verwenden, damit wir eine Verbindung zu unserer MongoDB -Datenbank aus der Lambda -Funktion (auf Atlas) herstellen können. Führen Sie also den folgenden Befehl aus, um ihn von unserem Projektrouch aus zu installieren:
<code>npm install mongodb --save</code>
Wir möchten auch unsere Lambda -Funktionen vor Ort schreiben und testen, um die Entwicklung zu beschleunigen und das Debuggen zu vereinfachen, da die Instanziierung der Lambda -Funktion in Amazon -Webdiensten jedes Mal nicht besonders schnell ist (und Debugging gibt es nicht, es sei denn, Sie sind Konsole. log () Funktionsfans). Ich habe mich für das Lambda-lokale Paket entschieden, da es Unterstützung für Umgebungsvariablen bietet (wir werden es später verwenden):
<code>(sudo) npm install lambda-local -g</code>
Erstellen Sie eine App.js -Datei. Dies ist die Datei mit unserer Lambda -Funktion:
<code>touch app.js</code>
Jetzt, da Sie alle erforderlichen Abhängigkeiten importiert und die Lambda -Code -Datei erstellt haben Initialisieren Sie es nach Codesegment:
<code>'use strict' var MongoClient = require('mongodb').MongoClient; let atlas_connection_uri; let cachedDb = null; exports.handler = (event, context, callback) => { var uri = process.env['MONGODB_ATLAS_CLUSTER_URI']; if (atlas_connection_uri != null) { processEvent(event, context, callback); } else { atlas_connection_uri = uri; console.log('the Atlas connection string is ' + atlas_connection_uri); processEvent(event, context, callback); } }; function processEvent(event, context, callback) { console.log('Calling MongoDB Atlas from AWS Lambda with event: ' + JSON.stringify(event)); }</code>
Lassen Sie uns den obigen Code innehalten und kommentieren, da Sie vielleicht eine seltsame Struktur bemerkt haben:
Jetzt, da wir den Code -Kommentar abgeschlossen haben, erstellen wir eine Event.json -Datei (im Projektroot -Verzeichnis) und bevölkern Sie sie mit den folgenden Daten:
<code>mkdir lambda-atlas-create-doc && cd lambda-atlas-create-doc</code>
(Wenn Sie wissen möchten, ist die JSON -Datei das, was wir an MongoDB Atlas senden, um unser BSON -Dokument zu erstellen)
Nächst
<code>npm init</code>
Nachdem Sie es lokal ausgeführt haben, sollten Sie die folgende Konsolenausgabe sehen:
Wenn Sie auf einen Fehler stoßen, überprüfen Sie Ihre Verbindungszeichenfolge und doppelt Zitate/comma/& entkommt (wie oben erwähnt).
Lassen Sie uns nun den Kerninhalt des Funktionscodes verwandeln, indem Sie die Funktion processEvent () und die Funktion createc () addieren:
<code>mkdir lambda-atlas-create-doc && cd lambda-atlas-create-doc</code>
beachten .
Sie können auch meine Leistungsoptimierungsanmerkungen und den Aufruf zum Kontext bemerken. Wenn Sie daran interessiert sind, zu verstehen, was sie bedeuten (ich denke, Sie sollten!), Sehen Sie sich meinen nachfolgenden Blog -Beitrag zur Optimierung der Lambda -Leistung mit MongoDB -Atlas an.
Sie sind jetzt bereit, Ihre Lambda -Funktion vollständig lokal zu testen. Verwenden Sie denselben Lambda-Local-Befehl wie zuvor, hoffentlich erhalten Sie eine nette "Kudos"-Erfolgsnachricht:
Wenn alles auf Ihrer lokalen Maschine gut läuft, lassen Sie uns unser lokales Node.js -Projekt als neue Lambda -Funktion veröffentlichen!
Der erste Schritt, den wir unternehmen werden, besteht darin, unser Node.js -Projekt zu komprimieren, da wir keine Lambda -Codefunktionen im Lambda -Code -Editor schreiben. Stattdessen wählen wir die ZIP -Upload -Methode, um unseren Code auf AWS Lambda zu bringen.
Ich habe das ZIP-Befehlszeilen-Tool in der Terminalkonsole verwendet, aber jede Methode würde funktionieren (solange Sie die Dateien in den Ordner oberster Ebene komprimieren, nicht im Ordner oberster Ebene selbst!):
<code>npm init</code>
Melden Sie sich als nächstes bei der AWS -Konsole an, navigieren Sie zur IAM -Rollenseite und erstellen Sie eine Rolle (z.
Lassen Sie uns nun zur AWS Lambda -Seite navigieren. Klicken Sie jetzt auf das Start (wenn Sie noch nie eine Lambda -Funktion erstellt haben) oder die Schaltfläche Lambda erstellen. Wir werden keine Blaupausen verwenden und wir werden keine Auslöser konfigurieren. Wählen Sie also bitte direkt in der linken Navigationsleiste "Funktion konfigurieren":
Geben Sie auf der Seite "Konfigurieren" den Namen der Funktion ein (z. B. mongodb_atlas_createdoc). Die Laufzeit wird automatisch auf Node.js 4.3 eingestellt, was perfekt für uns ist, da dies die Sprache ist, die wir verwenden werden. Wählen Sie in der Liste der Code -Eingabetypen die Datei upload .zip -Datei, wie im folgenden Screenshot gezeigt:
Klicken Sie auf die Schaltfläche "Upload" und wählen Sie die zuvor erstellte Projektdatei für komprimierte Node.js.
im Abschnitt "Lambda -Funktion Handler und Rollen" den Feld "Handler" in App.Handler ändern (warum? Hier ist ein Tipp: Ich habe die App.js -Datei für meinen Lambda -Funktionscode anstelle von Index verwendet. JS -Datei ...) und wählen Sie die vorhandene LambdabasicexeCrol -Rolle, die wir gerade erstellt haben:
Im Abschnitt Erweiterte Einstellungen möchten Sie den Zeitüberschreitungswert möglicherweise auf 5 oder 10 Sekunden erhöhen. Dies ist jedoch immer etwas, das Sie später anpassen können. Lassen Sie die Tastenfelder VPC und KMS als Standardwerte (es sei denn, Sie möchten die Tasten VPC und/oder KMS verwenden) und drücken Sie als nächstes.
Sehen Sie sich zuletzt Ihre Lambda -Funktion an und drücken Sie unten "Funktion erstellen". Herzlichen Glückwunsch, Ihre Lambda -Funktion ist online und Sie sollten eine Seite wie folgt sehen:
Aber erinnern Sie sich, dass wir Umgebungsvariablen verwendet haben? Jetzt ist es an der Zeit, sie zu konfigurieren und den AWS -Key Management -Service zu verwenden, um sie zu schützen!
scrollen Sie nach unten zur Registerkarte Code der Lambda -Funktion und erstellen
Name Wert mongodb_atlas_cluster_uri your_atlas_cluster_uri_value Zu diesem Zeitpunkt können Sie die Schaltfläche "Speichern und Test" oben auf der Seite, aber aber Aus Gründen der Sicherheit (wir werden die Verbindungszeichenfolge verschlüsseln.
Wählen Sie das Kontrollkästchen "Verschlüsselungsassistent aktivieren" und wählen Sie es aus, wenn Sie den Verschlüsselungsschlüssel bereits erstellt haben (ansonsten müssen Sie möglicherweise einen erstellen - was einfach ist):
Wählen Sie als nächstes die Schaltfläche "Verschlüsseln" für die Variable mongodb_atlas_cluster_uri:
Zurück zum Inline -Code -Editor fügen Sie oben die folgende Zeile hinzu:
<code>mkdir lambda-atlas-create-doc && cd lambda-atlas-create-doc</code>
und ersetzen Sie den Inhalt der Anweisung "else" in der Methode "Exports.Handler" durch den folgenden Code:
<code>npm init</code>
(Hoffentlich macht der komplexe Code, den wir jetzt anfangs geschrieben haben!)
Wenn Sie den gesamten von mir verwendeten Funktionscode überprüfen möchten, lesen Sie das folgende GIST. Für Git -Fans ist der vollständige Node.js -Projektquellcode auch auf GitHub verfügbar.
Drücken Sie nun die Schaltfläche "Speichern und testen" und fügen Sie den Inhalt unserer Event.json -Datei in den Texteditor "Eingabe von Testereignis" ein:
scrollen Sie und drücken Sie die Taste "Speichern und testen".
Wenn Sie alles richtig konfigurieren, sollten Sie die folgende Erfolgsnachricht in der Lambda -Protokollausgabe erhalten:
Großartig! Sie können ein paar Minuten Erfolg genießen, bevor Sie weiter lesen.
Ich hoffe, dieses AWS Lambda-MongoDB Atlas Integration Tutorial bietet Ihnen die richtigen Schritte, um mit Ihrem ersten Lambda-Projekt zu beginnen. Sie sollten jetzt in der Lage sein, Lambda -Funktionen lokal zu schreiben und sensible Daten zu speichern, z.
Was können Sie als nächstes tun?
Sie können sich natürlich gerne Fragen stellen oder Ihr Feedback in den Kommentaren unten hinterlassen. Happy Coding!
Wie dieser Artikel? Wiederholen Sie unser Webinar, wo wir mit AWS Lambda interaktive Tutorials auf serverlosen Architekturen bereitstellen.
AWS Lambda ist ein sehr nützliches Tool für serverlose Entwicklung. Es ermöglicht Entwicklern, Code ohne Verwaltung von Servern auszuführen. Dies bedeutet, dass Sie sich auf das Schreiben von Code konzentrieren und AWS Lambda -Infrastruktur behandeln lassen können. Es skaliert Ihre Anwendung automatisch basierend auf eingehender Verkehr und Sie zahlen nur für die von Ihnen konsumierende Berechnungszeit. Dies macht es zu einer kostengünstigen Lösung für Unternehmen aller Größen. Darüber hinaus unterstützt AWS Lambda eine Vielzahl von Programmiersprachen, einschließlich Node.js, was es zu einer vielseitigen Option für Entwickler macht.
MongoDB Atlas integriert sich nahtlos in AWS Lambda. Es bietet einen vollständig verwalteten Datenbankdienst, der zeitaufwändige Verwaltungsaufgaben wie Hardwarekonfiguration, Datenbank-Setup, Patching und Backups automatisiert. Mit MongoDB Atlas können Sie leicht AWS -Lambda -Funktionen auf der Grundlage von Datenbankereignissen wie Einfügen, Aktualisierung oder Löschen auslösen. Auf diese Weise können Sie leistungsstarke, in Echtzeit und serverlose Anwendungen erstellen.
Einrichten einer serverlosen Anwendung mit Node.js, AWS Lambda und MongoDB Atlas umfasst mehrere Schritte. Zuerst müssen Sie Ihre AWS -Lambda -Funktion einrichten. Dies beinhaltet das Schreiben von Code mit node.js und das Hochladen auf AWS Lambda. Als nächstes müssen Sie Ihren MongoDB -Atlas -Cluster konfigurieren. Dies beinhaltet das Erstellen eines neuen Clusters, die Konfiguration Ihrer IP -Whitelist und das Erstellen eines Datenbankbenutzers. Schließlich müssen Sie Ihre AWS -Lambda -Funktion mit Ihrem MongoDB Atlas -Cluster anschließen. Dies beinhaltet die Konfiguration Ihrer Lambda -Funktion zum Verbinden von Zeichenfolgen mithilfe von MongoDB -Atlas.
Eine Vielzahl von Tools und Technologien kann verwendet werden, um Probleme mit serverlosen Anwendungen zu beheben. AWS Lambda bietet detaillierte Funktionsprotokolle zur Ausführung von Funktionen, mit denen Sie Fehler oder Probleme identifizieren können. MongoDB Atlas bietet auch umfassende Überwachungs- und Warnfunktionen, mit denen Sie die Leistung Ihrer Datenbank verfolgen und Warnungen für potenzielle Probleme erhalten können. Darüber hinaus kann die Verwendung guter Codierungspraktiken und die gründliche Prüfung Ihrer Anwendung dazu beitragen, Probleme zu vermeiden.
Sicherheit ist ein wichtiger Aspekt jeder Anwendung, und serverlose Anwendungen sind keine Ausnahme. AWS Lambda bietet eine Vielzahl von Sicherheitsfunktionen an, darunter AWS Identity and Access Management (IAM) für die Zugriffskontrolle, die Verschlüsselung am Transport und im Ruhezustand sowie die VPC -Unterstützung für die Netzwerkisolierung. MongoDB Atlas bietet auch leistungsstarke Sicherheitsfunktionen, darunter IP Whitelisting, Datenbankprüfung und Verschlüsselung in Ruhe und Transit. Stellen Sie sicher, dass Sie diese Sicherheitsfunktionen ordnungsgemäß konfigurieren, um Ihre Anwendungen und Daten zu schützen.
Optimierung der Leistung serverloser Anwendungen beinhaltet eine Vielzahl von Strategien. Dies beinhaltet die korrekte Konfiguration der AWS -Lambda -Funktionen für eine optimale Leistung, den effizienten Code und die Optimierung von MongoDB -Atlas -Datenbanken. Mit AWS Lambda können Sie Speicher für Funktionen zuweisen, die auch CPU -Funktionen, Netzwerkbandbreite und Scheiben -I/A proportional zuweisen. MongoDB Atlas bietet Leistungsoptimierungsfunktionen wie automatische Indexierungs- und Leistungsberatungsberatung.
Ja, AWS Lambda unterstützt eine Vielzahl von Programmiersprachen, einschließlich Node.js, Python, Java, Go und .NET. MongoDB -Atlas können mit jeder Programmiersprache mit MongoDB -Treibern verwendet werden. Dies macht es zu einer vielseitigen Lösung für die serverlose Entwicklung.
serverlose Architektur kann die Anwendungskosten erheblich senken. Mit AWS Lambda zahlen Sie nur für die Berechnungszeit, die Sie konsumieren, und Sie berechnen nicht, wenn der Code nicht ausgeführt wird. MongoDB Atlas bietet eine Vielzahl von Preisoptionen, einschließlich einer kostenlosen Stufe, mit der Sie die Option auswählen können, die Ihren Anforderungen am besten entspricht.
Migration einer vorhandenen Anwendung in eine serverlose Architektur umfasst mehrere Schritte. Zunächst müssen Sie die Anwendung neu aufstellen, um sie mit AWS Lambda und MongoDB Atlas kompatibel zu machen. Dies kann das Umschreiben des Codes und das Ändern des Datenbankschemas mithilfe einer unterstützten Programmiersprache enthalten. Als nächstes müssen Sie die AWS Lambda -Funktion und den MongoDB Atlas Cluster einrichten. Schließlich müssen Sie Ihre Anwendung gründlich testen, um sicherzustellen, dass sie in der neuen Architektur ordnungsgemäß funktioniert.
Während AWS Lambda und MongoDB Atlas viele Vorteile für die serverlose Entwicklung bieten, müssen einige Einschränkungen geachtet werden. AWS Lambda hat Einschränkungen hinsichtlich der verfügbaren Rechen- und Speicherressourcen, und die Funktion hat eine maximale Ausführungszeit. MongoDB -Atlas begrenzt auch die Größe der Datenbank und die Anzahl der Verbindungen. Diese Einschränkungen sind jedoch in der Regel hoch genug, um die meisten Anwendungen auszusetzen.
Das obige ist der detaillierte Inhalt vonServerlose Entwicklung mit Node.js, AWS Lambda und MongoDB Atlas. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!