

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
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate"></a>

*Piotr Chotkowski und Pushparaju Thangavel, Amazon Web Services*

## Zusammenfassung
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-summary"></a>

Dieses Muster zeigt, wie [Amazon Kinesis Video Streams](https://aws.amazon.com/kinesis/video-streams/) und [AWS Fargate](https://aws.amazon.com/fargate) verwendet werden, um Frames aus einem Videostream zu extrahieren und sie als Bilddateien für die weitere Verarbeitung in [Amazon Simple Storage Service (Amazon S3](https://aws.amazon.com/s3/)) zu speichern. 

Das Muster bietet eine Beispielanwendung in Form eines Java-Maven-Projekts. Diese Anwendung definiert die AWS-Infrastruktur mithilfe des [AWS Cloud Development Kit](https://aws.amazon.com/cdk/) (AWS CDK). Sowohl die Frame-Verarbeitungslogik als auch die Infrastrukturdefinitionen sind in der Programmiersprache Java geschrieben. Sie können diese Beispielanwendung als Grundlage für die Entwicklung Ihrer eigenen Echtzeit-Videoverarbeitungspipeline oder für die Erstellung des Videovorverarbeitungsschritts einer Pipeline für maschinelles Lernen verwenden. 

## Voraussetzungen und Einschränkungen
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ Java SE Development Kit (JDK) 11, installiert
+ [Apache Maven](https://maven.apache.org/), installiert
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html), installiert
+ [AWS-Befehlszeilenschnittstelle (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) Version 2, installiert
+ [Docker](https://docs.docker.com/get-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](https://docs.aws.amazon.com/cdk/api/latest/versions.html))
+ JDK 11
+ AWS-CLI Version 2

## Architektur
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-architecture"></a>

**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.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/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 S3-Ausgabe-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 [QueueProcessingFargateService](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-ecs-patterns.QueueProcessingFargateService.html)Ressource 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
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-tools"></a>

**Tools**
+ [AWS CDK](https://aws.amazon.com/cdk/) ist ein Softwareentwicklungsframework zur Definition Ihrer Cloud-Infrastruktur und -Ressourcen mithilfe von Programmiersprachen wie TypeScript,, Python JavaScript, Java und C\$1/.Net.
+ [Amazon Kinesis Video Streams](https://aws.amazon.com/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](https://aws.amazon.com/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](https://aws.amazon.com/s3/) ist ein Objektspeicherservice, der Skalierbarkeit, Datenverfügbarkeit, Sicherheit und Leistung bietet.
+ [Amazon SQS](https://aws.amazon.com/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
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-epics"></a>

### Stellen Sie die Infrastruktur bereit
<a name="deploy-the-infrastructure"></a>


| Aufgabe | Description | 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 `frame-splitter-code` Beispielanwendung (im Anhang) herunter und extrahieren Sie ihren Inhalt in einen Ordner auf Ihrem lokalen Computer. Bevor Sie die Infrastruktur bereitstellen können, müssen Sie das [Java-Maven-Projekt](https://maven.apache.org/) erstellen. Navigieren Sie in einer Befehlszeile zum Stammverzeichnis des Projekts und erstellen Sie das Projekt, indem Sie den folgenden Befehl ausführen: <pre>mvn clean install</pre> | 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:<pre>cdk bootstrap --profile "$AWS_PROFILE_NAME" </pre>wo `$AWS_PROFILE_NAME` der Name des AWS-Profils aus Ihren AWS-Anmeldeinformationen gespeichert ist. Sie können diesen Parameter auch entfernen, um das Standardprofil zu verwenden. Weitere Informationen finden Sie in der [AWS-CDK-Dokumentation](https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html). | 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:<pre>cdk deploy --profile "$AWS_PROFILE_NAME" --all </pre>wo `$AWS_PROFILE_NAME` der Name des AWS-Profils aus Ihren AWS-Anmeldeinformationen gespeichert ist. Sie können diesen Parameter auch entfernen, um das Standardprofil zu verwenden. Bestätigen Sie die Bereitstellung. Notieren Sie sich die Werte **QueueUrl**und **Bucket** aus der CDK-Bereitstellungsausgabe. Sie werden sie in späteren Schritten benötigen. Das AWS-CDK erstellt die Ressourcen, lädt sie auf Ihr AWS-Konto hoch und erstellt alle Infrastrukturressourcen. Sie können den Prozess der Ressourcenerstellung in der [ CloudFormation AWS-Konsole](https://console.aws.amazon.com/cloudformation/) beobachten. Weitere Informationen finden Sie in der [ CloudFormation AWS-Dokumentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) und der [AWS-CDK-Dokumentation](https://docs.aws.amazon.com/cdk/latest/guide/hello_world.html#hello_world_tutorial_deploy). | 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:<pre>aws kinesisvideo --profile "$AWS_PROFILE_NAME" create-stream --stream-name "$STREAM_NAME" --data-retention-in-hours "24" </pre>wobei der `$AWS_PROFILE_NAME` Name des AWS-Profils aus Ihren AWS-Anmeldeinformationen enthalten ist (oder entfernen Sie diesen Parameter, um das Standardprofil zu verwenden) und `$STREAM_NAME` ein beliebiger gültiger Streamname ist. Alternativ können Sie mithilfe der Kinesis-Konsole einen Videostream erstellen, indem Sie die Schritte in der [Kinesis Video Streams-Dokumentation](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/gs-createstream.html#gs-createstream-console) befolgen. Notieren Sie sich den AWS-Ressourcennamen (ARN) des erstellten Streams. Sie benötigen ihn später. | Entwickler, DevOps Ingenieur | 

### Führen Sie ein Beispiel aus
<a name="run-an-example"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Laden Sie das Video in den Stream hoch. | Öffnen Sie im Projektordner für die `frame-splitter-code` Beispielanwendung die `ProcessingTaskTest.java` Datei im `src/test/java/amazon/awscdk/examples/splitter` Ordner. Ersetzen Sie die `streamName`**** Variablen `profileName`**** und durch die Werte, die Sie in den vorherigen Schritten verwendet haben. Um das Beispielvideo in den Kinesis-Videostream hochzuladen, den Sie im vorherigen Schritt erstellt haben, führen Sie folgenden Befehl aus:  <pre>amazon.awscdk.examples.splitter.ProcessingTaskTest#testExample test</pre>Alternativ können Sie Ihr Video mit einer der in der [Kinesis Video Streams Streams-Dokumentation](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk.html) 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:<pre>aws sqs --profile "$AWS_PROFILE_NAME" send-message --queue-url QUEUE_URL --message-body MESSAGE </pre>wobei `$AWS_PROFILE_NAME` der Name des AWS-Profils aus Ihren AWS-Anmeldeinformationen (entfernen Sie diesen Parameter, um das Standardprofil zu verwenden), `QUEUE_URL` der **QueueUrl**Wert aus der AWS-CDK-Ausgabe `MESSAGE` ist und eine JSON-Zeichenfolge im folgenden Format ist: <pre>{ "streamARN": "STREAM_ARN", "bucket": "BUCKET_NAME", "s3Directory": "test-output" }</pre>Dabei `STREAM_ARN` handelt es sich um den ARN des Videostreams, den Sie in einem früheren Schritt erstellt haben, und `BUCKET_NAME` um den **Bucket-Wert** aus der AWS-CDK-Ausgabe. 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](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-using-send-messages.html) beschrieben. | Entwickler, Ingenieur DevOps  | 
| Bilder der Videoframes anzeigen. | Sie können die resultierenden Bilder im S3-Ausgabe-Bucket sehen, `s3://BUCKET_NAME/test-output` wo `BUCKET_NAME` sich der **Bucket-Wert** aus der AWS-CDK-Ausgabe befindet. | Entwickler, Ingenieur DevOps  | 

## Zugehörige Ressourcen
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-resources"></a>
+ [AWS-CDK-Dokumentation](https://docs.aws.amazon.com/cdk/latest/guide/home.html)
+ [AWS-CDK-API-Referenz](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-construct-library.html)
+ [AWS CDK Einführungsworkshop](https://cdkworkshop.com/)
+ [Dokumentation zu Amazon Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/what-is-kinesis-video.html)
+ [Beispiel: Identifizieren von Objekten in Videostreams mithilfe von SageMaker](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-sagemaker.html)
+ [Beispiel: Analysieren und Rendern von Kinesis-Videostream-Fragmenten](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-renderer.html)
+ [Analysieren Sie Live-Videos in großem Maßstab in Echtzeit mit Amazon Kinesis Video Streams und Amazon SageMaker](https://aws.amazon.com/blogs/machine-learning/analyze-live-video-at-scale-in-real-time-using-amazon-kinesis-video-streams-and-amazon-sagemaker/) (Blogbeitrag zu AWS Machine Learning)
+ [AWS Fargate — Erste Schritte](https://aws.amazon.com/fargate/getting-started/)

## Zusätzliche Informationen
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-additional"></a>

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

## Anlagen
<a name="attachments-9d1442c2-f3ee-47fd-8cce-90d9206ce4d4"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/9d1442c2-f3ee-47fd-8cce-90d9206ce4d4/attachments/attachment.zip)