Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Automatisieren Sie die Bereitstellung verschachtelter Anwendungen mit AWS SAM
Erstellt von Dr. Rahul Sharad Gaikwad (AWS), Dmitry Gulin (AWS), Ishwar Chauthaiwale (AWS) und Tabby Ward (AWS)
aws-sam-nested-stackCode-Repository | Umgebung: PoC oder Pilot | Technologien: Modernisierung; Serverlos; DevOps |
Arbeitslast: Alle anderen Workloads | AWS-Services: AWS Serverless Application Repository |
Übersicht
Auf Amazon Web Services (AWS) ist das AWS Serverless Application Model (AWS SAM) ein Open-Source-Framework, das Kurzsyntax zum Ausdrücken von Funktionen, APIs, Datenbanken und Zuordnungen von Ereignisquellen bereitstellt. Mit nur wenigen Zeilen für jede Ressource können Sie die gewünschte Anwendung definieren und sie mithilfe von YAML modellieren. Während der Bereitstellung transformiert und erweitert SAM die SAM-Syntax in CloudFormation AWS-Syntax, mit der Sie serverlose Anwendungen schneller erstellen können.
AWS SAM vereinfacht die Entwicklung, Bereitstellung und Verwaltung serverloser Anwendungen auf der AWS-Plattform. Es bietet ein standardisiertes Framework, eine schnellere Bereitstellung, lokale Testfunktionen, Ressourcenmanagement, eine nahtlose Integration mit Entwicklungstools und eine unterstützende Community. Diese Funktionen machen es zu einem wertvollen Tool für die effiziente und effektive Erstellung serverloser Anwendungen.
Dieses Muster verwendet AWS-SAM-Vorlagen, um die Bereitstellung verschachtelter Anwendungen zu automatisieren. Eine verschachtelte Anwendung ist eine Anwendung innerhalb einer anderen Anwendung. Übergeordnete Anwendungen rufen ihre untergeordneten Anwendungen auf. Dabei handelt es sich um lose gekoppelte Komponenten einer serverlosen Architektur.
Mithilfe verschachtelter Anwendungen können Sie schnell hochentwickelte serverlose Architekturen erstellen, indem Sie Services oder Komponenten wiederverwenden, die unabhängig erstellt und verwaltet wurden, aber mithilfe von AWS SAM und dem Serverless Application Repository zusammengestellt wurden. Verschachtelte Anwendungen helfen Ihnen dabei, leistungsstärkere Anwendungen zu erstellen, Doppelarbeit zu vermeiden und Konsistenz und bewährte Verfahren in Ihren Teams und Organisationen sicherzustellen. Um verschachtelte Anwendungen zu demonstrieren, stellt das Muster eine serverlose AWS-Einkaufswagen-Beispielanwendung
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktives AWS-Konto
Eine bestehende virtuelle private Cloud (VPC) und Subnetze
Eine integrierte Entwicklungsumgebung wie AWS Cloud9 oder Visual Studio Code (weitere Informationen finden Sie unter Tools to Build on AWS
) Die Python-Wheel-Bibliothek wurde mit Pip Install Wheel installiert, falls sie noch nicht installiert ist
Einschränkungen
Die maximale Anzahl von Anwendungen, die in einer serverlosen Anwendung verschachtelt werden können, beträgt 200.
Die maximale Anzahl von Parametern für eine verschachtelte Anwendung kann 60 betragen.
Produktversionen
Diese Lösung basiert auf der AWS SAM-Befehlszeilenschnittstelle (AWS SAM CLI) Version 1.21.1, aber diese Architektur sollte mit späteren AWS SAM CLI-Versionen funktionieren.
Architektur
Zieltechnologie-Stack
Amazon API Gateway
AWS SAM
Amazon Cognito
Amazon-DynamoDB
AWS Lambda
Amazon Simple Queue Service-Warteschlange (Amazon SQS)
Zielarchitektur
Das folgende Diagramm zeigt, wie Benutzeranfragen durch Aufrufen von APIs an die Einkaufsdienste gestellt werden. Die Anfrage des Benutzers, einschließlich aller erforderlichen Informationen, wird an Amazon API Gateway und den Amazon Cognito Authorizer gesendet, der Authentifizierungs- und Autorisierungsmechanismen für die APIs durchführt.
Wenn ein Element in DynamoDB hinzugefügt, gelöscht oder aktualisiert wird, wird ein Ereignis in DynamoDB Streams abgelegt, wodurch wiederum eine Lambda-Funktion ausgelöst wird. Um zu verhindern, dass alte Elemente im Rahmen eines synchronen Workflows sofort gelöscht werden, werden Nachrichten in eine SQS-Warteschlange gestellt, wodurch eine Worker-Funktion zum Löschen der Nachrichten ausgelöst wird.
![POST- und PUT-Operationen vom API Gateway über Lambda-Funktionen bis hin zu DynamoDB und Product Service.](images/pattern-img/218adecc-b5b8-4193-9012-b5d584e2e128/images/5b454bae-5fd4-405d-a37d-6bafc3fcf889.png)
In diesem Lösungs-Setup dient AWS SAM CLI als Schnittstelle für CloudFormation AWS-Stacks. AWS-SAM-Vorlagen stellen automatisch verschachtelte Anwendungen bereit. Die übergeordnete SAM-Vorlage ruft die untergeordneten Vorlagen auf, und der übergeordnete CloudFormation Stack stellt die untergeordneten Stacks bereit. Jeder untergeordnete Stack erstellt die AWS-Ressourcen, die in den CloudFormation AWS-SAM-Vorlagen definiert sind.
![Vierstufiger Prozess mit AWS SAM CLI mit einem übergeordneten und drei untergeordneten CloudFormation Stacks.](images/pattern-img/218adecc-b5b8-4193-9012-b5d584e2e128/images/5828026e-72ad-4a3f-a5f2-bffac0f13e42.png)
Erstellen und implementieren Sie die Stacks.
Der CloudFormation Auth-Stack enthält Amazon Cognito.
Der CloudFormation Produkt-Stack enthält eine Lambda-Funktion und Amazon API Gateway.
Der CloudFormation Shopping-Stack enthält eine Lambda-Funktion, Amazon API Gateway, die SQS-Warteschlange und die Amazon DynamoDB DynamoDB-Datenbank.
Tools
Tools
Amazon API Gateway unterstützt Sie bei der Erstellung, Veröffentlichung, Wartung, Überwachung und Sicherung von REST, HTTP und WebSocket APIs in jeder Größenordnung.
AWS CloudFormation hilft Ihnen dabei, AWS-Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und Regionen hinweg zu verwalten.
Amazon Cognito bietet Authentifizierung, Autorisierung und Benutzerverwaltung für Web- und mobile Apps.
Amazon DynamoDB ist ein vollständig verwalteter NoSQL-Datenbank-Service, der schnelle und planbare Leistung mit nahtloser Skalierbarkeit bereitstellt.
AWS Lambda ist ein Rechenservice, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Er führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
Das AWS Serverless Application Model (AWS SAM) ist ein Open-Source-Framework, mit dem Sie serverlose Anwendungen in der AWS-Cloud erstellen können.
Amazon Simple Queue Service (Amazon SQS) bietet eine sichere, dauerhafte und verfügbare gehostete Warteschlange, mit der Sie verteilte Softwaresysteme und -komponenten integrieren und entkoppeln können.
Code
Der Code für dieses Muster ist im GitHub AWS SAM Nested Stack Sample
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Installieren Sie AWS SAM CLI. | Informationen zur Installation von AWS SAM CLI finden Sie in der AWS SAM-Dokumentation. | DevOps Ingenieur |
Richten Sie AWS-Anmeldeinformationen ein. | Um AWS-Anmeldeinformationen so einzurichten, dass die AWS SAM CLI in Ihrem Namen AWS-Services aufrufen kann, führen Sie den
Weitere Informationen zur Einrichtung Ihrer Anmeldeinformationen finden Sie unter Authentifizierungs- und Zugangsdaten. | DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Klonen Sie das AWS-SAM-Code-Repository. |
| DevOps Ingenieur |
Stellen Sie Vorlagen bereit, um das Projekt zu initialisieren. | Führen Sie den Befehl aus, um das Projekt zu initialisieren. | DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Sehen Sie sich die AWS-SAM-Anwendungsvorlagen an. | Überprüfen Sie die Vorlagen für die verschachtelten Anwendungen. In diesem Beispiel werden die folgenden verschachtelten Anwendungsvorlagen verwendet:
| DevOps Ingenieur |
Überprüfen Sie die übergeordnete Vorlage. | Prüfen Sie die Vorlage, mit der die verschachtelten Anwendungsvorlagen aufgerufen werden. In diesem Beispiel ist die übergeordnete Vorlage. | DevOps Ingenieur |
Kompilieren und erstellen Sie den AWS-SAM-Vorlagencode. | Führen Sie mit der AWS SAM CLI den folgenden Befehl aus.
| DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Stellen Sie die Anwendungen bereit. | Führen Sie den folgenden Befehl aus, um den SAM-Vorlagencode zu starten, der die verschachtelten CloudFormation Anwendungsstapel erstellt und Code in der AWS-Umgebung bereitstellt.
Der Befehl wird Sie mit einigen Fragen auffordern. Beantworten Sie alle Fragen mit | DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Überprüfe die Stapel. | Gehen Sie wie folgt vor, um die CloudFormation AWS-Stacks und AWS-Ressourcen zu überprüfen, die in den AWS-SAM-Vorlagen definiert wurden:
| DevOps Ingenieur |
Zugehörige Ressourcen
Referenzen
Tutorials und Videos
Zusätzliche Informationen
Nachdem der gesamte Code vorhanden ist, hat das Beispiel die folgende Verzeichnisstruktur:
sam_stacks — Dieser Ordner enthält die Ebene.
shared.py
Eine Ebene ist ein Dateiarchiv, das Bibliotheken, eine benutzerdefinierte Runtime oder andere Abhängigkeiten enthält. Mit Ebenen können Sie Bibliotheken in Ihrer Funktion verwenden, ohne sie in ein Bereitstellungspaket aufnehmen zu müssen.product-mock-service— Dieser Ordner enthält alle produktbezogenen Lambda-Funktionen und -Dateien.
shopping-cart-service— Dieser Ordner enthält alle Lambda-Funktionen und -Dateien zum Einkaufen.