Automatisieren Sie die Bereitstellung verschachtelter Anwendungen mit AWS SAM - AWS Prescriptive Guidance

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: -sample

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 bereit.

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.

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.
  1. Erstellen und implementieren Sie die Stacks.

  2. Der CloudFormation Auth-Stack enthält Amazon Cognito.

  3. Der CloudFormation Produkt-Stack enthält eine Lambda-Funktion und Amazon API Gateway.

  4. 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 Repository verfügbar.

Epen

AufgabeBeschreibungErforderliche 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 aws configure Befehl aus und folgen Sie den Anweisungen.

$aws configure AWS Access Key ID [None]: <your_access_key_id> AWS Secret Access Key [None]: your_secret_access_key Default region name [None]: Default output format [None]:

Weitere Informationen zur Einrichtung Ihrer Anmeldeinformationen finden Sie unter Authentifizierungs- und Zugangsdaten.

DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Klonen Sie das AWS-SAM-Code-Repository.

  1. Klonen Sie das AWS Sam Nested Stack-Beispiel-Repository für dieses Muster, indem Sie den folgenden Befehl eingeben.

    git clone https://github.com/aws-samples/aws-sam-nested-stack-sample.git
  2. Navigieren Sie in das geklonte Verzeichnis, indem Sie den folgenden Befehl eingeben.

    cd aws-sam-nested-stack-sample
DevOps Ingenieur

Stellen Sie Vorlagen bereit, um das Projekt zu initialisieren.

Führen Sie den Befehl aus, um das Projekt zu initialisieren. SAM init Wenn Sie aufgefordert werden, eine Vorlagenquelle auszuwählen, wählen SieCustom Template Location.

DevOps Ingenieur
AufgabeBeschreibungErforderliche 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:

  • auth.yaml— Diese Vorlage richtet authentifizierungsbezogene Ressourcen wie Amazon Cognito und AWS Systems Manager Parameter Store ein.

  • product-mock.yaml— Diese Vorlage stellt produktbezogene Ressourcen wie Lambda-Funktionen und Amazon API Gateway bereit.

  • shoppingcart-service.yaml— Diese Vorlage richtet Ressourcen für Einkaufswagen ein, z. B. AWS Identity and Access Management (IAM), DynamoDB-Tabellen und Lambda-Funktionen.

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. template.yml Alle separaten Anwendungen sind in der einzigen übergeordneten Vorlage template.yml verschachtelt.

DevOps Ingenieur

Kompilieren und erstellen Sie den AWS-SAM-Vorlagencode.

Führen Sie mit der AWS SAM CLI den folgenden Befehl aus.

sam build
DevOps Ingenieur
AufgabeBeschreibungErforderliche 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.

sam deploy --guided --stack-name shopping-cart-nested-stack --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND

Der Befehl wird Sie mit einigen Fragen auffordern. Beantworten Sie alle Fragen mity.

DevOps Ingenieur
AufgabeBeschreibungErforderliche 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:

  1. Melden Sie sich bei der AWS-Managementkonsole an und navigieren Sie zur CloudFormationKonsole.

  2. Stellen Sie sicher, dass die übergeordneten und untergeordneten Stacks aufgeführt sind.

    In diesem Beispiel sam-shopping-cart ist es der übergeordnete Stack, der die verschachtelten Auth-, Product- und Shopping-Stacks aufruft.

    Der Produkt-Stack gibt den Produkt-API-Gateway-URL-Link als Ausgabe aus.

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.