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
Ein aktives AWS-Konto
Programmatischer Zugriff auf das AWS-Konto. Weitere Informationen finden Sie hier:
Voraussetzungen in der Dokumentation zum AWS Cloud Development Kit (AWS CDK)
Voraussetzungen in der Dokumentation zur AWS-Befehlszeilenschnittstelle (AWS CLI)
AWS CLI, installiert und konfiguriert
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.](images/pattern-img/8b298cfc-509a-4502-97b2-f1af09914b99/images/f3ca9202-96eb-40cf-85cd-4bb569fcd083.png)
Das Diagramm zeigt den folgenden Workflow:
Ein Benutzer lädt eine Datei in den S3-Bucket hoch.
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.
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.
Eine Lambda-Funktion fragt die SQS-Warteschlange (als Ereignisquelle) ab und wartet auf die Verarbeitung von Nachrichten.
Wenn die Lambda-Funktion Nachrichten aus der SQS-Warteschlange empfängt, verarbeitet sie sie und bestätigt den Empfang dieser Nachrichten.
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
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Klonen Sie das Repository | Klonen Sie das Repository | App-Developer |
Richten Sie eine virtuelle Umgebung ein. |
| App-Developer |
Installieren Sie die Abhängigkeiten. | Führen Sie den Befehl | App-Developer |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Führen Sie Komponententests durch. |
| App-Entwickler, Testingenieur |
Aufgabe | Beschreibung | Erforderliche 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 | App-Entwickler, DevOps Ingenieur, AWS DevOps |
Aufgabe | Beschreibung | Erforderliche 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 | App-Developer |