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

Erstellt von Aniket Braganza (AWS)

Umgebung: Produktion

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

AWS-Dienste: Amazon S3; Amazon SNS; Amazon SQS; 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 SNS), Amazon Simple Queue Service (Amazon SQS) 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 der AWS-Services, die zur Erreichung Ihrer Geschäftsziele erforderlich sind, miteinander verknüpfen. Der serverlose Ansatz verwendet einen asynchronen Workflow, der auf ereignisgesteuerten Benachrichtigungen, robustem Speicher und Function-as-a-Service (FaaS) -Computing zur Bearbeitung 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, um AWS-Services über einen serverlosen Ansatz 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

  • AWS CDK 2.x

  • Python 3.9

Architektur

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

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

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 unter dem SNS-Thema veröffentlichte Nachricht wird in eine SQS-Warteschlange eingefügt, die abonniert ist und Benachrichtigungen zu diesem Thema erhält.

  4. Eine Lambda-Funktion fragt die SQS-Warteschlange (als 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 SQS-Warteschlange zurückgegeben und schließlich in eine SQS-Warteschlange mit unzustellbaren Buchstaben übertragen.

Technologie-Stack

  • Amazon S3

  • Amazon SNS

  • Amazon SQS

  • AWS Lambda

Tools

AWS-Services

  • 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 (Amazon SNS) 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 (Amazon SQS) bietet eine sichere, dauerhafte und verfügbare gehostete Warteschlange, mit der Sie verteilte Softwaresysteme und -komponenten integrieren und entkoppeln können.

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

Andere Tools

  • Das AWS Cloud Development Kit (AWS CDK) 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 vom AWS-CDK generierten CloudFormation AWS-Vorlagen bereit.

  • AWS Command Line Interface (AWS CLI) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit AWS-Services 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 to 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