Mithilfe von AWS Fargate können Sie nachrichtengesteuerte Workloads in großem Umfang ausführen - 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.

Mithilfe von AWS Fargate können Sie nachrichtengesteuerte Workloads in großem Umfang ausführen

Erstellt von Stan Zubarev (AWS)

Umgebung: PoC oder Pilotprojekt

Technologien: Container und Mikroservices; Messaging und Kommunikation; Datenbanken

AWS-Dienste: AWS Fargate; Amazon SQS; Amazon DynamoDB

Übersicht

Dieses Muster zeigt, wie nachrichtengesteuerte Workloads mithilfe von Containern und AWS Fargate in großem Umfang in der AWS-Cloud ausgeführt werden können.

Die Verwendung von Containern zur Verarbeitung von Daten kann hilfreich sein, wenn die Datenmenge, die eine Anwendung verarbeitet, die Beschränkungen funktionsbasierter serverloser Rechendienste überschreitet. Wenn eine Anwendung beispielsweise mehr Rechenkapazität oder Verarbeitungszeit benötigt als das, was AWS Lambda bietet, kann die Verwendung von Fargate die Leistung verbessern.

Das folgende Beispiel-Setup verwendet das AWS Cloud Development Kit (AWS CDK), TypeScript um die folgenden Ressourcen in der AWS-Cloud zu konfigurieren und bereitzustellen:

  • Ein Fargate-Service

  • Eine Amazon Simple Queue Service (Amazon SQS) -Warteschlange

  • Eine Amazon DynamoDB-Tabelle.

  • Ein CloudWatch Amazon-Dashboard

Der Fargate-Service empfängt und verarbeitet Nachrichten aus der Amazon SQS SQS-Warteschlange und speichert sie dann in der Amazon DynamoDB-Tabelle. Mithilfe des Dashboards können Sie überwachen, wie viele Amazon SQS SQS-Nachrichten verarbeitet und wie viele DynamoDB-Elemente von Fargate erstellt werden. CloudWatch

Hinweis: Sie können den Beispielcode dieses Musters auch verwenden, um komplexere Datenverarbeitungs-Workloads in ereignisgesteuerten serverlosen Architekturen zu erstellen. Weitere Informationen finden Sie unter Ausführen von ereignisgesteuerten und geplanten Workloads in großem Umfang mit AWS Fargate.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives AWS-Konto

  • Die neueste Version der AWS-Befehlszeilenschnittstelle (AWS CLI), installiert und konfiguriert auf Ihrem lokalen Computer

  • Git, auf Ihrem lokalen Computer installiert und konfiguriert

  • Das AWS CDK, installiert und konfiguriert auf Ihrem lokalen Computer

  • Go, auf Ihrem lokalen Computer installiert und konfiguriert

  • Docker, auf Ihrem lokalen Computer installiert und konfiguriert

Architektur

Zieltechnologie-Stack

  • Amazon SQS

  • AWS Fargate

  • Amazon-DynamoDB

Zielarchitektur

Das folgende Diagramm zeigt einen Beispiel-Workflow für die skalierbare Ausführung von nachrichtengesteuerten Workloads in der AWS-Cloud mithilfe von Fargate:

Beispiel-Workflow für nachrichtengesteuerte Workloads

Das Diagramm zeigt den folgenden Workflow:

  1. Der Fargate-Service verwendet Amazon SQS Long Polling, um Nachrichten aus einer Amazon SQS SQS-Warteschlange zu empfangen.

  2. Der Fargate-Service verarbeitet dann die Amazon SQS SQS-Nachrichten und speichert sie in einer DynamoDB-Tabelle.

Automatisierung und Skalierung

Um die Skalierung Ihrer Fargate-Aufgabenanzahl zu automatisieren, können Sie Amazon Elastic Container Service (Amazon ECS) Service Auto Scaling konfigurieren. Es hat sich bewährt, die Skalierungsrichtlinie auf der Grundlage der Anzahl der sichtbaren Nachrichten in der Amazon SQS SQS-Warteschlange Ihrer Anwendung zu konfigurieren.

Weitere Informationen finden Sie unter Skalierung basierend auf Amazon SQS im Benutzerhandbuch für Amazon EC2 Auto Scaling.

Tools

AWS-Services

  • Mit AWS Fargate können Sie Container ausführen, ohne Server oder Amazon Elastic Compute Cloud (Amazon EC2) -Instances verwalten zu müssen. Es wird in Verbindung mit Amazon Elastic Container Service (Amazon ECS) verwendet.

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

  • Amazon DynamoDB ist ein vollständig verwalteter NoSQL-Datenbank-Service, der schnelle und planbare Leistung mit nahtloser Skalierbarkeit bereitstellt.

  • Amazon CloudWatch hilft Ihnen dabei, die Metriken Ihrer AWS-Ressourcen und der Anwendungen, die Sie auf AWS ausführen, in Echtzeit zu überwachen.

Code

Der Code für dieses Muster ist im GitHub sqs-fargate-ddb-cdk-go-Repository verfügbar.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Klonen Sie das GitHub Repository.

Klonen Sie das GitHub sqs-fargate-ddb-cdk-go-Repository auf Ihren lokalen Computer, indem Sie den folgenden Befehl ausführen:

git clone https://github.com/aws-samples/sqs-fargate-ddb-cdk-go.git

App-Developer

Stellen Sie sicher, dass die AWS-CLI für das richtige AWS-Konto konfiguriert ist und dass das AWS-CDK über die erforderlichen Berechtigungen verfügt.

Um zu überprüfen, ob Ihre AWS-CLI-Konfigurationseinstellungen korrekt sind, können Sie den folgenden Amazon Simple Storage Service (Amazon S3) ls-Befehl ausführen:

aws s3 ls

Dieses Verfahren erfordert auch, dass das AWS-CDK über Berechtigungen zur Bereitstellung der Infrastruktur innerhalb Ihres AWS-Kontos verfügt. Um die erforderlichen Berechtigungen zu gewähren, müssen Sie ein benanntes AWS-Profil in der AWS-CLI erstellen und es als AWS_PROFILE-Umgebungsvariable exportieren.

Hinweis: Wenn Sie das AWS-CDK noch nicht in Ihrem AWS-Konto verwendet haben, müssen Sie zunächst die erforderlichen AWS-CDK-Ressourcen bereitstellen. Weitere Informationen finden Sie unter Bootstrapping im AWS CDK v2 Developer Guide.

App-Developer

Stellen Sie den AWS CDK-Stack auf Ihrem AWS-Konto bereit.

  1. Erstellen Sie ein Container-Image, indem Sie den folgenden AWS-CLI-Befehl ausführen:

    docker build -t go-fargate .

  2. Öffnen Sie das AWS-CDK-Verzeichnis, indem Sie den folgenden Befehl ausführen:

    cd cdk

  3. Installieren Sie die erforderlichen npm-Module, indem Sie den folgenden Befehl ausführen:

    npm i

  4. Stellen Sie das AWS-CDK-Muster für Ihr AWS-Konto bereit, indem Sie den folgenden Befehl ausführen:

    cdk deploy --profile ${AWS_PROFILE}

App-Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Senden Sie eine Testnachricht an die Amazon SQS SQS-Warteschlange.

Anweisungen finden Sie unter Senden von Nachrichten an eine Warteschlange (Konsole) im Amazon SQS Developer Guide.

Beispiel für eine Amazon SQS SQS-Nachricht testen

{ "message": "hello, Fargate" }
App-Developer

Stellen Sie sicher, dass die Testnachricht in den CloudWatch Protokollen des Fargate-Dienstes erscheint.

Folgen Sie den Anweisungen unter CloudWatch Logs anzeigen im Amazon ECS Developer Guide. Stellen Sie sicher, dass Sie die Protokolle für die go-fargate-serviceProtokollgruppe im go-service-clusterECS-Cluster überprüfen.

App-Developer

Stellen Sie sicher, dass die Testmeldung in der DynamoDB-Tabelle angezeigt wird.

  1. Öffnen Sie die DynamoDB-Konsole.

  2. Wählen Sie im linken Navigationsbereich Tables (Tabellen) aus. Wählen Sie dann die folgende Tabelle aus der Liste aus:. sqs-fargate-ddb-table

  3. Wählen Sie Explore Table Items (Tabellenelemente erkudnen) aus.

  4. Stellen Sie sicher, dass die Testnachricht in der Liste der zurückgegebenen Artikel angezeigt wird.

App-Developer

Stellen Sie sicher, dass der Fargate-Dienst Nachrichten an CloudWatch Logs sendet.

  1. Öffnen Sie die CloudWatch -Konsole.

  2. Wählen Sie im linken Navigationsbereich Dashboards aus.

  3. Wählen Sie in der Liste Benutzerdefinierte Dashboards das Dashboard mit dem Namen aus. go-service-dashboard

  4. Stellen Sie sicher, dass die Testnachricht in den Protokollen erscheint.

Hinweis: Das AWS CDK erstellt das CloudWatch Dashboard in Ihrem AWS-Konto automatisch.

App-Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Löschen Sie den AWS-CDK-Stack.

  1. Öffnen Sie Ihr AWS-CDK-Verzeichnis in der AWS-CLI, indem Sie den folgenden Befehl ausführen:

    cd cdk

  2. Löschen Sie den AWS CDK-Stack, indem Sie den folgenden Befehl ausführen:

    cdk destroy --profile ${AWS_PROFILE}

App-Developer

Stellen Sie sicher, dass der AWS-CDK-Stack gelöscht wurde.

Führen Sie den folgenden Befehl aus, um sicherzustellen, dass der Stack gelöscht wurde:

aws cloudformation list-stacks --query \ "StackSummaries[?contains(StackName,'SqsFargate')].StackStatus" \ --profile ${AWS_PROFILE}

Der in der Befehlsausgabe zurückgegebene StackStatus Wert gibt anDELETE_COMPLETE, ob der Stapel gelöscht wurde.

Weitere Informationen finden Sie unter Beschreibung und Auflistung Ihrer Stacks im CloudFormation AWS-Benutzerhandbuch.

App-Developer

Zugehörige Ressourcen