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.
Erstellen Sie mithilfe von Amazon Kinesis Video Streams und AWS Fargate eine Videoverarbeitungspipeline
Erstellt von Piotr Chotkowski (AWS) und Pushparaju Thangavel (AWS)
Umgebung: PoC oder Pilotprojekt | Technologien: Analytik; Mediendienste | AWS-Dienste: AWS Fargate; Amazon Kinesis; Amazon S3 |
Übersicht
Dieses Muster zeigt, wie Amazon Kinesis Video Streams
Das Muster bietet eine Beispielanwendung in Form eines Java-Maven-Projekts. Diese Anwendung definiert die AWS-Infrastruktur mithilfe des AWS Cloud Development Kit
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktives AWS-Konto
Java SE Development Kit (JDK) 11, installiert
Apache Maven
, installiert AWS Cloud Development Kit (AWS CDK), installiert
AWS-Befehlszeilenschnittstelle (AWS CLI) Version 2, installiert
Docker
(erforderlich für die Erstellung von Docker-Images zur Verwendung in AWS Fargate-Aufgabendefinitionen), installiert
Einschränkungen
Dieses Muster ist als Machbarkeitsnachweis oder als Grundlage für die weitere Entwicklung gedacht. Es sollte in seiner derzeitigen Form nicht in Produktionsbereitstellungen verwendet werden.
Produktversionen
Dieses Muster wurde mit der AWS-CDK-Version 1.77.0 getestet (siehe AWS-CDK-Versionen)
JDK 11
AWS-CLI Version 2
Architektur
Zieltechnologie-Stack
Amazon Kinesis Video Streams
AWS Fargate-Aufgabe
Amazon Simple Queue Service-Warteschlange (Amazon SQS)
Amazon-S3-Bucket
Zielarchitektur
![Architektur für die Verwendung von Kinesis Video Streams und Fargate zum Aufbau einer Videoverarbeitungspipeline.](images/pattern-img/9d1442c2-f3ee-47fd-8cce-90d9206ce4d4/images/a60e585f-27be-4dd6-897b-c38adf1d283f.png)
Der Benutzer erstellt einen Kinesis-Videostream, lädt ein Video hoch und sendet eine JSON-Nachricht, die Details zum Kinesis-Eingabevideostream und zum Ausgabe-S3-Bucket enthält, an eine SQS-Warteschlange. AWS Fargate, das die Hauptanwendung in einem Container ausführt, ruft die Nachricht aus der SQS-Warteschlange ab und beginnt mit dem Extrahieren von Frames. Jeder Frame wird in einer Bilddatei und im Ziel-S3-Bucket gespeichert.
Automatisierung und Skalierung
Die Beispielanwendung kann innerhalb einer einzelnen AWS-Region sowohl horizontal als auch vertikal skaliert werden. Horizontale Skalierung kann erreicht werden, indem die Anzahl der bereitgestellten AWS Fargate-Aufgaben erhöht wird, die aus der SQS-Warteschlange lesen. Vertikale Skalierung kann erreicht werden, indem die Anzahl der Framesplitting- und Image-Publishing-Threads in der Anwendung erhöht wird. Diese Einstellungen werden in der Definition der QueueProcessingFargateServiceRessource im AWS-CDK als Umgebungsvariablen an die Anwendung übergeben. Aufgrund der Art der AWS-CDK-Stack-Bereitstellung können Sie diese Anwendung ohne zusätzlichen Aufwand in mehreren AWS-Regionen und Konten bereitstellen.
Tools
Tools
AWS CDK
ist ein Softwareentwicklungs-Framework zur Definition Ihrer Cloud-Infrastruktur und -Ressourcen mithilfe von Programmiersprachen wie TypeScript,, Python JavaScript, Java und C#/.Net. Amazon Kinesis Video Streams
ist ein vollständig verwalteter AWS-Service, mit dem Sie Live-Videos von Geräten in die AWS-Cloud streamen oder Anwendungen für Echtzeit-Videoverarbeitung oder stapelorientierte Videoanalysen erstellen können. AWS Fargate
ist eine serverlose Compute-Engine für Container. Fargate macht die Bereitstellung und Verwaltung von Servern überflüssig, sodass Sie sich auf die Entwicklung Ihrer Anwendungen konzentrieren können. Amazon S3
ist ein Objektspeicherservice, der Skalierbarkeit, Datenverfügbarkeit, Sicherheit und Leistung bietet. Amazon SQS
ist ein vollständig verwalteter Message Queuing-Service, mit dem Sie Microservices, verteilte Systeme und serverlose Anwendungen entkoppeln und skalieren können.
Code
Eine ZIP-Datei des Beispielanwendungsprojekts () ist angehängt.
frame-splitter-code.zip
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Starten Sie den Docker-Daemon. | Starten Sie den Docker-Daemon auf Ihrem lokalen System. Das AWS CDK verwendet Docker, um das Image zu erstellen, das in der AWS Fargate-Aufgabe verwendet wird. Sie müssen Docker ausführen, bevor Sie mit dem nächsten Schritt fortfahren können. | Entwickler, Ingenieur DevOps |
Erstellen Sie das Projekt. | Laden Sie die
| Entwickler, DevOps Ingenieur |
Bootstrap für das AWS-CDK. | (Nur AWS-CDK-Erstbenutzer) Wenn Sie das AWS-CDK zum ersten Mal verwenden, müssen Sie die Umgebung möglicherweise booten, indem Sie den AWS-CLI-Befehl ausführen:
wo | Entwickler, Ingenieur DevOps |
Stellen Sie den AWS-CDK-Stack bereit. | In diesem Schritt erstellen Sie die erforderlichen Infrastrukturressourcen (SQS-Warteschlange, S3-Bucket, AWS Fargate-Aufgabendefinition) in Ihrem AWS-Konto, erstellen das Docker-Image, das für die AWS Fargate-Aufgabe erforderlich ist, und stellen die Anwendung bereit. Navigieren Sie an einer Befehlszeile zum Stammverzeichnis des Projekts und führen Sie den folgenden Befehl aus:
wo | Entwickler, Ingenieur DevOps |
Erstellen Sie einen Videostream. | In diesem Schritt erstellen Sie einen Kinesis-Videostream, der als Eingangsstream für die Videoverarbeitung dient. Stellen Sie sicher, dass Sie die AWS-CLI installiert und konfiguriert haben. Führen Sie in der AWS-CLI Folgendes aus:
wobei der Alternativ können Sie mithilfe der Kinesis-Konsole einen Videostream erstellen, indem Sie die Schritte in der Kinesis Video Streams-Dokumentation befolgen. Notieren Sie sich den AWS-Ressourcennamen (ARN) des erstellten Streams. Sie benötigen ihn später. | Entwickler, DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Laden Sie das Video in den Stream hoch. | Öffnen Sie im Projektordner für die
Alternativ können Sie Ihr Video mit einer der in der Kinesis Video Streams Streams-Dokumentation beschriebenen Methoden hochladen. | Entwickler, Ingenieur DevOps |
Initiieren Sie die Videoverarbeitung. | Nachdem Sie ein Video in den Kinesis-Videostream hochgeladen haben, können Sie mit der Verarbeitung beginnen. Um die Verarbeitungslogik zu initiieren, müssen Sie eine Nachricht mit Details an die SQS-Warteschlange senden, die das AWS-CDK während der Bereitstellung erstellt hat. Um eine Nachricht mit der AWS-CLI zu senden, führen Sie Folgendes aus:
wobei
Dabei Durch das Senden dieser Nachricht wird die Videoverarbeitung eingeleitet. Alternativ können Sie eine Nachricht mithilfe der Amazon SQS SQS-Konsole senden, wie in der Amazon SQS SQS-Dokumentation beschrieben. | Entwickler, Ingenieur DevOps |
Bilder der Videoframes anzeigen. | Sie können die resultierenden Bilder im S3-Ausgabe-Bucket sehen, | Entwickler, Ingenieur DevOps |
Zugehörige Ressourcen
Zusätzliche Informationen
Eine IDE auswählen
Wir empfehlen Ihnen, Ihre bevorzugte Java-IDE zu verwenden, um dieses Projekt zu erstellen und zu erkunden.
Bereinigen
Nachdem Sie dieses Beispiel ausgeführt haben, entfernen Sie alle bereitgestellten Ressourcen, um zusätzliche AWS-Infrastrukturkosten zu vermeiden.
Verwenden Sie diese beiden Befehle in der AWS-CLI, um die Infrastruktur und den Videostream zu entfernen:
cdk destroy --profile "$AWS_PROFILE_NAME" --all
aws kinesisvideo --profile "$AWS_PROFILE_NAME" delete-stream --stream-arn "$STREAM_ARN"
Alternativ können Sie die Ressourcen manuell entfernen, indem Sie die CloudFormation AWS-Konsole verwenden, um den CloudFormation AWS-Stack zu entfernen, und die Kinesis-Konsole, um den Kinesis-Videostream zu entfernen. Beachten Sie, dass der Ausgabe-S3-Bucket oder die Bilder in den Amazon Elastic Container Registry (Amazon ECR) -Repositorys (aws-cdk/assets
) cdk destroy
nicht entfernt werden. Sie müssen sie manuell entfernen.