AWS Amplify ist eine Sammlung von Tools von AWS, die Ihnen beim Erstellen von Anwendungen helfen.
Gestatten Sie mir, die Bühne zu bereiten, um zu versuchen, dies so klar wie möglich zu machen. Ich habe einen Freund (wahre Geschichte), der eine App rund um körperliches Training entwickeln möchte. Seine Frau ist eine Fitnesstrainerin, und sie denken, dass man damit vielleicht etwas Geld verdienen kann. Es ist nicht vollständig spezifiziert, aber vielleicht verkauft die App Zugang zu personalisierten Trainingsprogrammen, bietet maßgeschneiderte Diäten, Trainingsvideos und erledigt die Terminplanung für Einzelberatungen. Klingt für mich schlau! Angenommen, sie beweisen die Idee bis zu einem gewissen Grad, ist es an der Zeit, ihre Entwicklungsfähigkeiten einzusetzen und mit dem Bau zu beginnen.
Viele der Anforderungen einer solchen App lassen sich direkt und einfach auf Amplify übertragen. Ein Entwickler, der mit der Planung beginnt, könnte so denken:
- Wir müssen das irgendwo hosten… Amplify bietet Static Web Hosting. Und es ist voll funktionsfähig mit dem schicken DX, das wir heutzutage erwarten: Ich verbinde ein Git-Repository, und es wird nicht nur ein Deployment zu CDN-gestütztem globalem statischem Hosting basierend auf Commits durchgeführt, sondern es wird auch mein CI/CD (z. B. Tests ausführen) ausgeführt und mir URLs zur Vorschau von Feature-Branches zur Verfügung gestellt. Das alles erledigen Sie mit der AWS Amplify Console.
- Wir brauchen Benutzerauthentifizierung… Der Sinn der Sache ist, dass Benutzer sich anmelden können, um auf ihre Daten zuzugreifen. Amplify hilft dabei (es ist Amazon Cognito integriert), was typische Anmeldungs-/Registrierungs-/Passwort-vergessen-Funktionen ermöglicht, aber auch alle erwarteten Social-Login-Funktionen. Dies ist ein Beispiel dafür, was Amplify tut: Es hilft, zugrunde liegende Cloud-Dienste mit minimalem Code zu abstrahieren und zu erstellen.
- Wir brauchen Datenspeicherung… Idealerweise wird dies mit GraphQL verwaltet, da mein modernes Frontend davon stark profitiert (vielleicht ist es eine React-App). Amplify hat das. Es ist AWS AppSync integriert, was bedeutet, dass Sie jeden Datenspeichertyp verwenden können, aber erstaunliche zusätzliche Funktionen erhalten, wie z. B. GraphQL-Endpunkte, Echtzeit-Datensynchronisierung und Offline-Unterstützung.
Das sind nur die Grundlagen. All das ist äußerst gut abgedeckt.
Wie richten wir all das ein? Das ist einer der besten Teile: Es gibt eine CLI, die bei allem hilft. Wie kommen wir zum Beispiel mit der Datenspeicherung voran? Sobald die CLI installiert ist und wir amplify init im Projekt ausgeführt haben, führen wir amplify add api aus, und wir werden dadurch geführt.
Nun, für diese körperliche Trainings-App benötigen wir auch eine statische Dateispeicherung. Vielleicht haben alle Benutzer benutzerdefinierte Avatare, und die Videos selbst benötigen geschütztes Hosting. Nun, wir sind hier im AWS-Bereich, also sind S3-Buckets perfekt geeignet. Wie? amplify add storage und wir werden dadurch geführt, und natürlich gibt es Dokumentation.
Wirklich beeindruckend. Wir können fast das gesamte Ding mit Amplify bauen.
Einmal könnten wir uns an einen anderen Dienst wenden müssen, um Zahlungen abzuwickeln. Stripe ist aufgrund seines großartigen DX und seiner robusten APIs normalerweise die erste Wahl der Entwickler. Sie sind genau für solche Apps konzipiert. Wir würden unsere Kommunikation mit den Stripe-APIs über serverlose Funktionen abwickeln. Und was wissen Sie? Wir sind hier im AWS-Bereich, also haben wir Zugriff auf Lambdas, den besten Anbieter für serverlose Funktionen überhaupt. Der Trick ist, dass unser GraphQL-Setup über AppSync eine Lambda aufrufen kann, die mit jeder externen API kommunizieren kann. Glücklicherweise gibt es hier von Ramon Postulart eine detaillierte Anleitung.
Und hier ist ein weiterer Ansatz von Beez Fedia.
Hier ist also, was ich für wichtig halte:
- Amplify ist ein Helfer. AWS bietet unzählige Cloud-Dienste an. Amplify hilft Ihnen, diese zu verbinden und mit der Nutzung der wichtigen zu beginnen, die Sie benötigen.
- Das statische Hosting ist die Grundlage für ein Webprojekt. Dies ist ein Jamstack-Ansatz. Aber selbst das ist nicht zwingend erforderlich, Sie können zum Beispiel eine iOS-App mit den Tools erstellen.
- AWS ist der größte Cloud-Anbieter der Welt und betreibt viele der größten Websites der Welt. Sie können hier ein persönliches Projekt erstellen und typischerweise unter dem kostenlosen Kontingent bleiben, aber Sie müssen sich nie Sorgen um die Skalierung machen. Hier sind Sie an der richtigen Stelle für Skalierung.
- Es gibt viel zu entdecken. Wenn Sie eines Tages aufwachen und Push-Benachrichtigungen hinzufügen oder etwas wie maschinelles Lernen erkunden möchten, gibt es auch das.
Wenn Sie bis hierher gelesen haben, denke ich, dass dieses schnelle High-Level-Video besser ankommen wird
Weitere Ressourcen
- Die Hauptressourcen-Seite
- Nadar Dabit schreibt viel über Amplify
- Shawn Wang
Danke! Was ist mit Datenschutz (und DSGVO-Konformität)? Das ist ein Problem bei vielen Drittanbieterdiensten und ein zunehmendes Problem für Entwickler. Macht Amplify das klar und einfach?
Guter Beitrag.
Weiß jemand, ob man einen Amplify-Stack über ein Skript startet? Ich möchte jedem neuen Kunden ein Backend inklusive API geben. Gibt es also eine Möglichkeit, die CLI zu umgehen?
Ich gehörte zu den ersten Nutzern, die vor fast 2 Jahren auf den Amplify-Zug aufsprangen. Ich habe es benutzt, um den Großteil meiner Web-App (Link in Bio) zu bauen mit: Authentifizierung über Cognito, Funktionen über Lambdas (inkl. Lambda Layers), Speicher über S3, CI/Deployment über die Amplify Console und APIs über CloudFront.
Die guten Dinge
– Zugang zur Leistung und Tiefe von AWS, aber mit einer viel einfacheren Lernkurve
– sehr saubere Art, Entwicklungs-, Staging- und Produktionsumgebungen zu verwalten und Änderungen wie bei Git zusammenzuführen
– ständig viele neue Funktionen
– gute Mischung aus einfacher Bedienung / Leistungsfähigkeit
Aber selbst mit all diesen großartigen Funktionen empfehle ich es immer noch nicht. Ich wurde von dem Versprechen "AWS mit der Einfachheit von Firebase" angelockt, aber meine Erfahrungen sind dem bei weitem nicht gewachsen.
Amplify ist einfach nicht produktionsreif. Neue Releases machen oft Dinge kaputt, und das nicht auf eine lustige "ach, es ist nur ein bisschen grob an den Rändern"-Art und Weise.
Um Ihnen ein Beispiel zu geben: Ich habe Google-Anmeldung hinzugefügt, damit Benutzer einfacher Konten erstellen können. Dies erforderte ein Update meines Cognito-Benutzerpools, was ich in meiner Staging-Umgebung tat. Dabei stellte ich fest, dass alle Benutzerkonten gelöscht worden waren, weil ich "tiefe Änderungen" vorgenommen hatte (mangels besserer Bezeichnung), die den Nebeneffekt hatten, den Pool zurückzusetzen.
Der Grund, warum es sich so verhielt, ist, dass die CLI fehlerhaft war und das "Update" nicht richtig verarbeiten konnte, was irgendwie die CloudFront-Dateien durcheinanderbrachte und zu diesem Reset führte, als ich sie hochlud.
Hätte ich das nicht im Staging bemerkt, hätte ich live geschaltet (ohne Warnung von der Amplify-CLI, wohlgemerkt) und die Konten meiner 2.000 Benutzer gelöscht.
In ähnlicher Weise musste ich die Konsolen-Build-Funktion aufgeben, da sie anscheinend nicht mit Google-Authentifizierung kompatibel war. In den GitHub-Foren gibt es viele "Fixes" und "Workarounds", aber sie beinhalten oft das Zurücksetzen der gesamten Umgebung (einschließlich Benutzer, Live-Website usw.).
Wenn Sie ein tatsächliches Geschäft betreiben und nicht nur ein lustiges Nebenprojekt, ist es nicht ermutigend, wenn das Amplify-Team mit "setze alles zurück und es wird funktionieren" antwortet. Leider ist das bei mehreren wichtigen Problemen der Fall, werfen Sie einfach einen Blick auf das GitHub-Board, um sich eine Vorstellung zu machen.
Mit der Zeit habe ich eines mit Amplify gelernt: Wenn es anfängt zu spinnen, bestehe nicht zu lange darauf, es zu reparieren. Sonst könntest du etwas kaputt machen, das sich nicht mehr sinnvoll reparieren lässt.
Fairerweise muss man sagen, dass es besser wird und ich glaube, dass es eines Tages so weit sein wird. Es gibt viele großartige Dinge daran. Aber es ist einfach nicht zuverlässig genug, um ein Geschäft darauf aufzubauen. Nutzen Sie es nur für Spaß und Nebenprojekte.