Verketten Sie AWS Dienste mithilfe eines serverlosen Ansatzes - 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.

Verketten Sie AWS Dienste mithilfe eines serverlosen Ansatzes

Erstellt von Aniket Braganza () AWS

Umwelt: Produktion

Technologien: Serverlos; CloudNative; DevelopmentAndTesting; Modernisierung DevOps; Infrastruktur

AWSDienste: Amazon S3; AmazonSNS; AmazonSQS; AWS Lambda

Übersicht

Dieses Muster veranschaulicht einen skalierbaren, serverlosen Ansatz für die Verarbeitung einer hochgeladenen Datei, indem Amazon Simple Storage Service (Amazon S3), Amazon Simple Notification Service (Amazon), Amazon Simple Queue Service (Amazon SNSSQS) und AWS Lambda miteinander verkettet werden. Das Beispiel für eine hochgeladene Datei dient zu Demonstrationszwecken. Sie können einen serverlosen Ansatz verwenden, um andere Aufgaben zu erledigen, indem Sie die Kombination von AWS Diensten miteinander verknüpfen, die zum Erreichen Ihrer Geschäftsziele erforderlich sind. Der serverlose Ansatz verwendet einen asynchronen Workflow, der auf ereignisgesteuerten Benachrichtigungen, robustem Speicher und Function-as-a-Service (FaaS) -Computing zur Verarbeitung von Anfragen basiert. Sie können den serverlosen Ansatz verwenden, um bedarfsgerecht zu skalieren und gleichzeitig die Kosten zu minimieren.

Hinweis: Es gibt mehrere Optionen, AWS Dienste mithilfe eines serverlosen Ansatzes miteinander zu verketten. Sie können beispielsweise einen Ansatz verwenden, der Lambda mit Amazon S3 anstelle von Amazon SNS und Amazon SQS kombiniert. Dieses Muster verwendet jedoch Amazon SNS und Amazon, SQS da dieser Ansatz es ermöglicht, dem Lambda-Aufrufprozess während einer Ereignisbenachrichtigung mehrere Integrationspunkte hinzuzufügen und die Implementierung auf mehrere Listener in einer serverlosen Orchestrierung auszudehnen und gleichzeitig den Verarbeitungsaufwand zu minimieren.

Voraussetzungen und Einschränkungen

Voraussetzungen

Produktversionen

  • AWSCDK2.x

  • Python 3.9

Architektur

Das folgende Diagramm zeigt, wie verkettete AWS Dienste es einem Benutzer ermöglichen können, eine Datei zur Verarbeitung in einen S3-Bucket hochzuladen.

Arbeitsablauf für das Hochladen einer Datei in einen S3-Bucket mithilfe AWS verketteter Dienste.

Das Diagramm zeigt den folgenden Workflow:

  1. Ein Benutzer lädt eine Datei in den S3-Bucket hoch.

  2. Der Upload löst ein S3-Ereignis aus, das eine Nachricht zu einem SNS Thema veröffentlicht. Die Nachricht enthält die Details des S3-Ereignisses.

  3. Die zu dem SNS Thema veröffentlichte Nachricht wird in eine SQS Warteschlange eingefügt, die abonniert ist und Benachrichtigungen für dieses Thema erhält.

  4. Eine Lambda-Funktion fragt die SQS Warteschlange (als ihre Ereignisquelle) ab und wartet auf die Verarbeitung von Nachrichten.

  5. Wenn die Lambda-Funktion Nachrichten aus der SQS Warteschlange empfängt, verarbeitet sie sie und bestätigt den Empfang dieser Nachrichten.

  6. Wenn eine Nachricht nicht von Lambda verarbeitet wird, wird diese Nachricht an die Warteschlange zurückgegeben und schließlich in eine SQS Warteschlange mit unzustellbaren Briefen SQSübertragen.

Technologie-Stack

  • Amazon S3

  • Amazon SNS

  • Amazon SQS

  • AWSLambda

Tools

AWSDienstleistungen

  • Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

  • Amazon Simple Notification Service (AmazonSNS) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.

  • Amazon Simple Queue Service (AmazonSQS) bietet eine sichere, dauerhafte und verfügbare gehostete Warteschlange, mit der Sie verteilte Softwaresysteme und -komponenten integrieren und entkoppeln können.

  • AWSLambda ist ein Rechendienst, 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.

Andere Tools

  • AWSCloud Development Kit (AWSCDK) ist das wichtigste Tool für die Interaktion mit Ihrer AWS CDK App. Es führt Ihre App aus, fragt das von Ihnen definierte Anwendungsmodell ab und erstellt und stellt die von der generierten AWS CloudFormation Vorlagen bereit. AWS CDK

  • AWSCommand Line Interface (AWSCLI) ist ein Open-Source-Tool, mit dem Sie mithilfe von Befehlen in Ihrer Befehlszeilen-Shell mit AWS Diensten interagieren können.

  • Python ist eine interpretierte Mehrzweck-Programmiersprache auf hohem Niveau.

Code

Der Code für dieses Muster ist im Repository GitHub Chaining S3 to SNS SQS to Lambda verfügbar.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Klonen Sie das Repository

Klonen Sie das Repository und navigieren Sie zum python/s3-sns-sqs-lambda-chain Ordner.

App-Developer

Richten Sie eine virtuelle Umgebung ein.

  1. Führen Sie im AWS CDK den python3 -m venv .venv Befehl aus.

  2. Führen Sie den source .venv/bin/activate Befehl unter MacOS/Linux oder .venv\Scripts\activate.bat Windows aus.

App-Developer

Installieren Sie die Abhängigkeiten.

Führen Sie den Befehl pip install -r requirements.txt aus.

App-Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Führen Sie Komponententests durch.

  1. Führen Sie den Befehl pip install -r requirements-dev.txt aus.

  2. (Optional) Führen Sie den cdk synth --no-staging > template.yml Befehl aus, um den CloudFormation Stack zu generieren. Wichtig: Sie können den Stack untersuchen, aber vermeiden, dass die bereitgestellten Ressourcen und Artefakte generiert werden.

  3. Führen Sie den pytest Befehl aus, um alle Komponententests auszuführen.

  4. (Optional) Führen Sie den pytest tests/unit/<test_filename> Befehl aus, um Tests für eine bestimmte Datei auszuführen.

App-Entwickler, Testingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Richten Sie die Bootstrap-Umgebung ein.

Folgen Sie den Anweisungen unter Bootstrapping in der AWS Dokumentation, um die Umgebung für die AWS CDK Bereitstellung in jeder AWS Region, in der der CloudFormation Stack bereitgestellt wird, zu booten.

Hinweis: Für diesen Schritt benötigen Sie Anmeldeinformationen mit programmatischem Zugriff.

App-Entwickler, DevOps Ingenieur, Dateningenieur

Stellen Sie den CloudFormation Stack bereit.

Führen Sie den cdk deploy Befehl aus, um den Stack zu erstellen und für das AWS Konto bereitzustellen.

App-Entwickler, DevOps Ingenieur, AWS DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Löschen Sie den CloudFormation Stapel und entfernen Sie die zugehörigen Ressourcen.

Um den erstellten CloudFormation Stack zu löschen und alle zugehörigen Ressourcen zu entfernen, führen Sie den Befehl run cdk destroy aus.

App-Developer