

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Créez un pipeline de traitement vidéo à l'aide d'Amazon Kinesis Video Streams et d'AWS Fargate
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate"></a>

*Piotr Chotkowski et Pushparaju Thangavel, Amazon Web Services*

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

Ce modèle montre comment utiliser [Amazon Kinesis Video](https://aws.amazon.com/kinesis/video-streams/) Streams et [AWS Fargate](https://aws.amazon.com/fargate) pour extraire des images d'un flux vidéo et les stocker sous forme de fichiers image pour un traitement ultérieur dans [Amazon Simple Storage Service (Amazon S3](https://aws.amazon.com/s3/)). 

Le modèle fournit un exemple d'application sous la forme d'un projet Java Maven. Cette application définit l'infrastructure AWS à l'aide du kit [AWS Cloud Development Kit](https://aws.amazon.com/cdk/) (AWS CDK). La logique de traitement des trames et les définitions de l'infrastructure sont écrites dans le langage de programmation Java. Vous pouvez utiliser cet exemple d'application comme base pour développer votre propre pipeline de traitement vidéo en temps réel ou pour créer l'étape de prétraitement vidéo d'un pipeline d'apprentissage automatique. 

## Conditions préalables et limitations
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Kit de développement Java SE (JDK) 11, installé
+ [Apache Maven](https://maven.apache.org/), installé
+ [Kit de développement cloud AWS (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html), installé
+ [Interface de ligne de commande AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) version 2, installée
+ [Docker](https://docs.docker.com/get-docker/) (nécessaire pour créer des images Docker à utiliser dans les définitions de tâches AWS Fargate), installé

**Limites**

Ce modèle est conçu comme une preuve de concept ou comme base pour un développement ultérieur. Il ne doit pas être utilisé sous sa forme actuelle dans les déploiements de production.

**Versions du produit**
+ Ce modèle a été testé avec la version 1.77.0 d'AWS CDK (voir les versions d'[AWS](https://docs.aws.amazon.com/cdk/api/latest/versions.html) CDK)
+ JDK 11
+ Version 2 de l'interface de ligne de commande AWS

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

**Pile technologique cible**
+ Amazon Kinesis Video Streams
+ Tâche AWS Fargate
+ File d'attente Amazon Simple Queue Service (Amazon SQS)
+ Compartiment Amazon S3

**Architecture cible**

![\[Architecture permettant d'utiliser Kinesis Video Streams et Fargate pour créer un pipeline de traitement vidéo.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/9d1442c2-f3ee-47fd-8cce-90d9206ce4d4/images/a60e585f-27be-4dd6-897b-c38adf1d283f.png)


L'utilisateur crée un flux vidéo Kinesis, télécharge une vidéo et envoie un message JSON contenant des détails sur le flux vidéo Kinesis d'entrée et le bucket S3 de sortie vers une file d'attente SQS. AWS Fargate, qui exécute l'application principale dans un conteneur, extrait le message de la file d'attente SQS et commence à extraire les cadres. Chaque image est enregistrée dans un fichier image et stockée dans le compartiment S3 cible.

**Automatisation et mise à l'échelle**

L'exemple d'application peut être redimensionné à la fois horizontalement et verticalement au sein d'une même région AWS. La mise à l'échelle horizontale peut être réalisée en augmentant le nombre de tâches AWS Fargate déployées qui sont lues depuis la file d'attente SQS. La mise à l'échelle verticale peut être réalisée en augmentant le nombre de fils de partage d'images et de publication d'images dans l'application. Ces paramètres sont transmis en tant que variables d'environnement à l'application dans la définition de la [QueueProcessingFargateService](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-ecs-patterns.QueueProcessingFargateService.html)ressource dans le CDK AWS. En raison de la nature du déploiement de la pile AWS CDK, vous pouvez déployer cette application dans plusieurs régions et comptes AWS sans effort supplémentaire.

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

**Outils**
+ [AWS CDK](https://aws.amazon.com/cdk/) est un framework de développement logiciel permettant de définir votre infrastructure et vos ressources cloud à l'aide de langages de programmation tels que Python TypeScript JavaScript, Java et C\$1/Net.
+ [Amazon Kinesis Video](https://aws.amazon.com/kinesis/video-streams/) Streams est un service AWS entièrement géré que vous pouvez utiliser pour diffuser des vidéos en direct depuis des appareils vers le cloud AWS, ou créer des applications pour le traitement vidéo en temps réel ou l'analyse vidéo par lots.
+ [AWS Fargate](https://aws.amazon.com/fargate) est un moteur de calcul sans serveur pour les conteneurs. Fargate élimine le besoin de provisionner et de gérer des serveurs, et vous permet de vous concentrer sur le développement de vos applications.
+ [Amazon S3](https://aws.amazon.com/s3/) est un service de stockage d'objets qui offre évolutivité, disponibilité des données, sécurité et performances.
+ [Amazon SQS](https://aws.amazon.com/sqs/) est un service de mise en file d'attente de messages entièrement géré qui vous permet de découpler et de dimensionner les microservices, les systèmes distribués et les applications sans serveur.

**Code**
+ Un fichier .zip de l'exemple de projet d'application (`frame-splitter-code.zip`) est joint.

## Épopées
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-epics"></a>

### Déployer l'infrastructure
<a name="deploy-the-infrastructure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Lancez le démon Docker. | Démarrez le daemon Docker sur votre système local. L'AWS CDK utilise Docker pour créer l'image utilisée dans la tâche AWS Fargate. Vous devez exécuter Docker avant de passer à l'étape suivante. | Développeur, DevOps ingénieur | 
| Générez le projet. | Téléchargez l'`frame-splitter-code`exemple d'application (ci-joint) et extrayez son contenu dans un dossier sur votre ordinateur local. Avant de déployer l'infrastructure, vous devez créer le projet [Java Maven](https://maven.apache.org/). À l'invite de commande, accédez au répertoire racine du projet et créez le projet en exécutant la commande suivante : <pre>mvn clean install</pre> | Développeur, DevOps ingénieur | 
| Démarrez le kit AWS CDK. | (Utilisateurs du CDK AWS pour la première fois uniquement) Si c'est la première fois que vous utilisez le kit AWS CDK, vous devrez peut-être démarrer l'environnement en exécutant la commande de la CLI AWS :<pre>cdk bootstrap --profile "$AWS_PROFILE_NAME" </pre>où `$AWS_PROFILE_NAME` contient le nom du profil AWS issu de vos informations d'identification AWS. Vous pouvez également supprimer ce paramètre pour utiliser le profil par défaut. Pour plus d'informations, consultez la [documentation AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html). | Développeur, DevOps ingénieur | 
| Déployez la pile AWS CDK. | Au cours de cette étape, vous créez les ressources d'infrastructure requises (file d'attente SQS, compartiment S3, définition de tâche AWS Fargate) dans votre compte AWS, vous créez l'image Docker requise pour la tâche AWS Fargate et vous déployez l'application. À l'invite de commande, accédez au répertoire racine du projet et exécutez la commande suivante :<pre>cdk deploy --profile "$AWS_PROFILE_NAME" --all </pre>où `$AWS_PROFILE_NAME` contient le nom du profil AWS issu de vos informations d'identification AWS. Vous pouvez également supprimer ce paramètre pour utiliser le profil par défaut. Confirmez le déploiement. Notez les valeurs **QueueUrl**et **Bucket** indiquées dans le résultat du déploiement du CDK ; vous en aurez besoin ultérieurement. Le CDK AWS crée les actifs, les télécharge sur votre compte AWS et crée toutes les ressources de l'infrastructure. Vous pouvez observer le processus de création des ressources dans la [ CloudFormation console AWS](https://console.aws.amazon.com/cloudformation/). Pour plus d'informations, consultez la [ CloudFormation documentation AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) et la [documentation AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/hello_world.html#hello_world_tutorial_deploy). | Développeur, DevOps ingénieur | 
| Créez un flux vidéo. | Au cours de cette étape, vous allez créer un flux vidéo Kinesis qui servira de flux d'entrée pour le traitement vidéo. Assurez-vous que l'interface de ligne de commande AWS est installée et configurée. Dans l'AWS CLI, exécutez :<pre>aws kinesisvideo --profile "$AWS_PROFILE_NAME" create-stream --stream-name "$STREAM_NAME" --data-retention-in-hours "24" </pre>où `$AWS_PROFILE_NAME` contient le nom du profil AWS issu de vos informations d'identification AWS (ou supprimez ce paramètre pour utiliser le profil par défaut) et `$STREAM_NAME` est un nom de flux valide. Vous pouvez également créer un flux vidéo à l'aide de la console Kinesis en suivant les étapes décrites dans la documentation [Kinesis](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/gs-createstream.html#gs-createstream-console) Video Streams. Notez le nom de ressource AWS (ARN) du flux créé ; vous en aurez besoin ultérieurement. | Développeur, DevOps ingénieur | 

### Exécutez un exemple
<a name="run-an-example"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Téléchargez la vidéo sur le stream. | Dans le dossier de projet de l'exemple d'`frame-splitter-code`application, ouvrez le `ProcessingTaskTest.java` fichier qui s'y `src/test/java/amazon/awscdk/examples/splitter` trouve. Remplacez les `streamName`**** variables `profileName`**** et par les valeurs que vous avez utilisées dans les étapes précédentes. Pour télécharger l'exemple de vidéo dans le flux vidéo Kinesis que vous avez créé à l'étape précédente, exécutez :  <pre>amazon.awscdk.examples.splitter.ProcessingTaskTest#testExample test</pre>Vous pouvez également télécharger votre vidéo en utilisant l'une des méthodes décrites dans la documentation de [Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk.html). | Développeur, DevOps ingénieur | 
| Lancez le traitement vidéo. | Maintenant que vous avez chargé une vidéo dans le flux vidéo Kinesis, vous pouvez commencer à la traiter. Pour lancer la logique de traitement, vous devez envoyer un message contenant des informations détaillées à la file d'attente SQS créée par le CDK AWS lors du déploiement. Pour envoyer un message à l'aide de l'AWS CLI, exécutez :<pre>aws sqs --profile "$AWS_PROFILE_NAME" send-message --queue-url QUEUE_URL --message-body MESSAGE </pre>where `$AWS_PROFILE_NAME` contient le nom du profil AWS issu de vos informations d'identification AWS (supprimez ce paramètre pour utiliser le profil par défaut), `QUEUE_URL` est la **QueueUrl**valeur de la sortie du CDK AWS et `MESSAGE` est une chaîne JSON au format suivant : <pre>{ "streamARN": "STREAM_ARN", "bucket": "BUCKET_NAME", "s3Directory": "test-output" }</pre>où `STREAM_ARN` est l'ARN du flux vidéo que vous avez créé lors d'une étape précédente et `BUCKET_NAME` la valeur du **bucket** issue de la sortie AWS CDK. L'envoi de ce message lance le traitement vidéo. Vous pouvez également envoyer un message à l'aide de la console Amazon SQS, comme décrit dans la documentation [Amazon SQS.](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-using-send-messages.html) | Développeur, DevOps ingénieur | 
| Visionnez des images des images vidéo. | Vous pouvez voir les images obtenues dans le compartiment de sortie S3, `s3://BUCKET_NAME/test-output` où se `BUCKET_NAME` trouve la valeur du **compartiment** provenant de la sortie AWS CDK. | Développeur, DevOps ingénieur | 

## Ressources connexes
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-resources"></a>
+ [Documentation du kit AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/home.html)
+ [Référence de l'API AWS CDK](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-construct-library.html)
+ [Atelier d'introduction à AWS CDK](https://cdkworkshop.com/)
+ [Documentation Amazon Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/what-is-kinesis-video.html)
+ [Exemple : identification d'objets dans des flux vidéo à l'aide de SageMaker](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-sagemaker.html)
+ [Exemple : analyse et rendu de fragments Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-renderer.html)
+ [Analysez des vidéos en direct à grande échelle en temps réel à l'aide d'Amazon Kinesis Video Streams et d' SageMaker](https://aws.amazon.com/blogs/machine-learning/analyze-live-video-at-scale-in-real-time-using-amazon-kinesis-video-streams-and-amazon-sagemaker/)Amazon (article de blog AWS Machine Learning)
+ [Mise en route d'AWS Fargate](https://aws.amazon.com/fargate/getting-started/)

## Informations supplémentaires
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-additional"></a>

**Choisir un IDE**

Nous vous recommandons d'utiliser votre IDE Java préféré pour créer et explorer ce projet.  

**Nettoyage**

Une fois que vous avez terminé d'exécuter cet exemple, supprimez toutes les ressources déployées pour éviter d'encourir des coûts supplémentaires liés à l'infrastructure AWS. 

Pour supprimer l'infrastructure et le flux vidéo, utilisez ces deux commandes dans l'AWS CLI :

```
cdk destroy --profile "$AWS_PROFILE_NAME" --all
```

```
aws kinesisvideo --profile "$AWS_PROFILE_NAME" delete-stream --stream-arn "$STREAM_ARN"
```

Vous pouvez également supprimer les ressources manuellement en utilisant la CloudFormation console AWS pour supprimer la CloudFormation pile AWS et la console Kinesis pour supprimer le flux vidéo Kinesis. Notez que `cdk destroy` cela ne supprime pas le compartiment S3 de sortie ni les images des référentiels Amazon Elastic Container Registry (Amazon ECR) (). `aws-cdk/assets` Vous devez les supprimer manuellement.

## Pièces jointes
<a name="attachments-9d1442c2-f3ee-47fd-8cce-90d9206ce4d4"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/9d1442c2-f3ee-47fd-8cce-90d9206ce4d4/attachments/attachment.zip)