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
Ein aktives Konto AWS
Programmatischer Zugriff auf das AWS Konto. Weitere Informationen finden Sie unter:
Voraussetzungen in der AWS Cloud Development Kit (AWSCDK) -Dokumentation
Voraussetzungen in der Dokumentation zur AWS Befehlszeilenschnittstelle (AWSCLI)
AWSCDK, installiert
AWSCLI, installiert und konfiguriert
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.
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 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.
Eine Lambda-Funktion fragt die SQS Warteschlange (als ihre 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.
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
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 |