

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.

# Informations sur les versions antérieures du service géré pour Apache Flink
<a name="earlier"></a>

**Note**  
Les versions 1.6, 1.8 et 1.11 d'Apache Flink ne sont pas prises en charge par la communauté Apache Flink depuis plus de trois ans. Nous avons publié un avis concernant ce changement en juin 2024 et en octobre 2024 et nous allons désormais mettre fin au support de ces versions dans Amazon Managed Service pour Apache Flink.  
Le 14 juillet 2025, nous arrêterons vos candidatures et les placerons dans l'état PRÊT. Vous pourrez alors redémarrer vos applications et continuer à les utiliser normalement, sous réserve des limites de service.
À compter du 28 juillet 2025, nous désactiverons la possibilité de démarrer vos applications. Vous ne pourrez plus démarrer ou utiliser vos applications Flink version 1.6 à partir de maintenant.
Nous vous recommandons de mettre immédiatement à niveau toutes les applications existantes utilisant Apache Flink version 1.6, 1.8 ou 1.11 vers Apache Flink version 1.20. Il s'agit de la version de Flink prise en charge la plus récente. Vous pouvez mettre à niveau vos applications à l'aide de la fonctionnalité de mise à niveau de version sur place d'Amazon Managed Service pour Apache Flink. Pour de plus amples informations, veuillez consulter [Utiliser des mises à niveau de version sur place pour Apache Flink](how-in-place-version-upgrades.md).  
Si vous avez d'autres questions ou préoccupations, vous pouvez nous contacter [AWS Support](https://aws.amazon.com/support).

**Note**  
La version **1.13** d'Apache Flink n'est pas prise en charge par la communauté Apache Flink depuis plus de trois ans. Nous prévoyons maintenant de mettre fin au support de cette version dans Amazon Managed Service pour Apache Flink le **16 octobre 2025**. Après cette date, vous ne pourrez plus créer, démarrer ou exécuter des applications à l'aide d'Apache Flink version 1.13 dans Amazon Managed Service pour Apache Flink.  
Vous pouvez mettre à niveau vos applications de manière dynamique à l'aide de la fonctionnalité de mise à niveau de version sur place de Managed Service for Apache Flink. Pour de plus amples informations, veuillez consulter [Utiliser des mises à niveau de version sur place pour Apache Flink](how-in-place-version-upgrades.md).

La version **1.15.2** est prise en charge par le service géré pour Apache Flink, mais n'est plus prise en charge par la communauté Apache Flink.

**Topics**
+ [Utilisation du connecteur Apache Flink Kinesis Streams avec les versions précédentes d'Apache Flink](#how-creating-apps-building-kinesis)
+ [Création d'applications avec Apache Flink 1.8.2](#earlier-buildingapps-1_8)
+ [Création d'applications avec Apache Flink 1.6.2](#earlier-buildingapps-1_6)
+ [Mise à niveau des applications](#earlier-upgrading)
+ [Connecteurs disponibles dans Apache Flink 1.6.2 et 1.8.2](#earlier-connectors)
+ [Pour démarrer : Flink 1.13.2](#getting-started-1-13)
+ [Pour démarrer : Flink 1.11.1 - obsolète](#earlier-gs-1_11)
+ [Pour démarrer : Flink 1.8.2 - obsolète](#earlier-gs-1_8)
+ [Pour démarrer : Flink 1.6.2 - obsolète](#earlier-gs-1_6)
+ [Exemples de versions antérieures (anciennes) pour le service géré pour Apache Flink](#legacy-examples)

## Utilisation du connecteur Apache Flink Kinesis Streams avec les versions précédentes d'Apache Flink
<a name="how-creating-apps-building-kinesis"></a>

Le connecteur Kinesis Streams d’Apache Flink n’était pas inclus dans Apache Flink avant la version 1.11. Pour que votre application puisse utiliser le connecteur Kinesis d’Apache Flink avec les versions précédentes d’Apache Flink, vous devez télécharger, compiler et installer la version d’Apache Flink utilisée par votre application. Ce connecteur est utilisé pour consommer les données d’un flux Kinesis utilisé comme source d’application ou pour écrire des données dans un flux Kinesis utilisé pour la sortie de l’application.

**Note**  
Assurez-vous que vous créez le connecteur avec la [version KPL 0.14.0](https://mvnrepository.com/artifact/com.amazonaws/amazon-kinesis-producer/0.14.0) ou ultérieure. 

Pour télécharger et installer le code source d’Apache Flink version 1.8.2, procédez comme suit :

1. Assurez-vous qu’[Apache Maven](https://maven.apache.org/) est installé et que votre variable d’environnement `JAVA_HOME` pointe vers un JDK plutôt qu’un JRE. Vous pouvez tester votre installation Apache Maven à l’aide de la commande suivante :

   ```
   mvn -version
   ```

1. Téléchargez le code source d’Apache Flink version 1.8.2 :

   ```
   wget https://archive.apache.org/dist/flink/flink-1.8.2/flink-1.8.2-src.tgz
   ```

1. Décompressez le code source d’Apache Flink :

   ```
   tar -xvf flink-1.8.2-src.tgz
   ```

1. Accédez au répertoire du code source d’Apache Flink :

   ```
   cd flink-1.8.2
   ```

1. Compilez et installez Apache Flink :

   ```
   mvn clean install -Pinclude-kinesis -DskipTests
   ```
**Note**  
Si vous compilez Flink sous Microsoft Windows, vous devez ajouter le paramètre `-Drat.skip=true`.

## Création d'applications avec Apache Flink 1.8.2
<a name="earlier-buildingapps-1_8"></a>

Cette section contient des informations sur les composants que vous utilisez pour créer des applications de service géré Apache Flink qui fonctionnent avec Apache Flink 1.8.2.

Utilisez les versons de composants suivants pour les applications de service géré pour Apache Flink :


****  

| Composant | Version | 
| --- | --- | 
| Java | 1.8 (recommandée) | 
| Apache Flink | 1.8.2 | 
| Service géré pour Apache Flink pour Flink Runtime () aws-kinesisanalytics-runtime | 1.0.1 | 
| Service géré pour les connecteurs Apache Flink Flink () aws-kinesisanalytics-flink | 1.0.1 | 
| Apache Maven | 3.1 | 

Pour compiler une application à l’aide d’Apache Flink 1.8.2, exécutez Maven avec le paramètre suivant :

```
mvn package -Dflink.version=1.8.2
```

Pour un exemple de fichier `pom.xml` pour une application de service géré pour Apache Flink utilisant Apache Flink version 1.8.2, consultez [Managed Service for Apache Flink 1.8.2 Getting Started Application](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/blob/master/GettingStarted_1_8/pom.xml).

Pour obtenir des informations sur la création et l’utilisation du code d’application pour une application de service géré pour Apache Flink, consultez [Création d’une application](how-creating-apps.md).

## Création d'applications avec Apache Flink 1.6.2
<a name="earlier-buildingapps-1_6"></a>

Cette section contient des informations sur les composants que vous utilisez pour créer des applications de service géré Apache Flink qui fonctionnent avec Apache Flink 1.6.2.

Utilisez les versons de composants suivants pour les applications de service géré pour Apache Flink :


****  

| Composant | Version | 
| --- | --- | 
| Java | 1.8 (recommandée) | 
| AWS SDK Java | 1,11,379 | 
| Apache Flink | 1.6.2 | 
| Service géré pour Apache Flink pour Flink Runtime () aws-kinesisanalytics-runtime | 1.0.1 | 
| Service géré pour les connecteurs Apache Flink Flink () aws-kinesisanalytics-flink | 1.0.1 | 
| Apache Maven | 3.1 | 
| Apache Beam | Non pris en charge avec Apache Flink 1.6.2. | 

**Note**  
Lorsque vous utilisez l’exécution de service géré pour Apache Flink version **1.0.1**, vous spécifiez la version d’Apache Flink dans votre fichier `pom.xml` plutôt que d’utiliser le paramètre `-Dflink.version` lors de la compilation du code de votre application.

Pour un exemple de fichier `pom.xml` pour une application de service géré pour Apache Flink utilisant Apache Flink version 1.6.2, consultez [Managed Service for Apache Flink 1.6.2 Getting Started Application](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/blob/master/GettingStarted_1_6/pom.xml).

Pour obtenir des informations sur la création et l’utilisation du code d’application pour une application de service géré pour Apache Flink, consultez [Création d’une application](how-creating-apps.md).

## Mise à niveau des applications
<a name="earlier-upgrading"></a>

Pour mettre à niveau la version Apache Flink d'une application Amazon Managed Service pour Apache Flink, utilisez la fonctionnalité de mise à niveau de version d'Apache Flink sur place à l'aide du AWS CLI AWS SDK ou du. CloudFormation AWS Management Console Pour de plus amples informations, veuillez consulter [Utiliser des mises à niveau de version sur place pour Apache Flink](how-in-place-version-upgrades.md). 

Vous pouvez utiliser cette fonctionnalité avec toutes les applications existantes que vous utilisez avec Amazon Managed Service pour Apache Flink dans `READY` ou dans son `RUNNING` état actuel.

## Connecteurs disponibles dans Apache Flink 1.6.2 et 1.8.2
<a name="earlier-connectors"></a>

L’environnement Apache Flink contient des connecteurs permettant d’accéder aux données provenant de diverses sources. 
+ Pour obtenir des informations sur les connecteurs disponibles dans l’environnement Apache Flink 1.6.2, consultez [Connectors (1.6.2)](https://ci.apache.org/projects/flink/flink-docs-release-1.6/dev/connectors/) dans la [documentation Apache Flink (1.6.2)](https://ci.apache.org/projects/flink/flink-docs-release-1.6/).
+ Pour obtenir des informations sur les connecteurs disponibles dans l’environnement Apache Flink 1.8.2, consultez [Connectors (1.8.2)](https://ci.apache.org/projects/flink/flink-docs-release-1.8/dev/connectors/) dans la [documentation Apache Flink (1.8.2)](https://ci.apache.org/projects/flink/flink-docs-release-1.8/).

## Pour démarrer : Flink 1.13.2
<a name="getting-started-1-13"></a>

Cette section présente les concepts fondamentaux du service géré pour Apache Flink et de l' DataStream API. Elle décrit les options disponibles pour créer et tester vos applications. Elle fournit également des instructions pour installer les outils nécessaires pour suivre les didacticiels de ce guide et pour créer votre première application. 

**Topics**
+ [Composants d'un service géré pour une application Apache Flink](#getting-started-components-1-13)
+ [Conditions préalables pour terminer les exercices](#setting-up-prerequisites-1-13)
+ [Étape 1 : configurer un AWS compte et créer un utilisateur administrateur](#earlier-gs-1_13-setting-up)
+ [Étape suivante](#earlier-gs-1_13-setup-awscli)
+ [Étape 2 : configurer le AWS Command Line Interface (AWS CLI)](#setup-awscli-1-13)
+ [Étape 3 : créer et exécuter un service géré pour l'application Apache Flink](#get-started-exercise-1-13)
+ [Étape 4 : Nettoyer les AWS ressources](#getting-started-cleanup-1-13)
+ [Étape 5 : étapes suivantes](#getting-started-next-steps-1-13)

### Composants d'un service géré pour une application Apache Flink
<a name="getting-started-components-1-13"></a>

Pour traiter les données, votre application Managed Service for Apache Flink utilise une application Java/Apache Maven ou Scala qui traite les entrées et produit des sorties à l'aide du moteur d'exécution Apache Flink. 

L’application de service géré pour Apache Flink comprend les composants suivants :
+ **Propriétés d’exécution :** vous pouvez utiliser les *propriétés d’exécution* pour configurer votre application sans recompiler le code de votre application. 
+ **Source :** l’application consomme des données en utilisant une *source*. Un connecteur source lit les données d’un flux de données Kinesis, d’un compartiment Amazon S3, etc. Pour plus d’informations, consultez [Ajouter des sources de données de streaming](how-sources.md).
+ **Opérateurs :** l’application traite les données à l’aide d’un ou de plusieurs *opérateurs*. Un opérateur peut transformer, enrichir ou agréger des données. Pour plus d’informations, consultez [Opérateurs](how-operators.md).
+ **Récepteur :** l’application produit des données vers des sources externes à l’aide de *récepteurs*. Un connecteur récepteur écrit des données dans un flux de données Kinesis, un flux Firehose, un compartiment Amazon S3, etc. Pour de plus amples informations, veuillez consulter [Écrire des données à l'aide de récepteurs](how-sinks.md).

Après avoir créé, compilé et empaqueté votre code d’application, vous chargez le package de code dans un compartiment Amazon Simple Storage Service (Amazon S3). Vous créez ensuite une application de service géré pour Apache Flink. Vous transmettez l’emplacement du package de code, un flux de données Kinesis comme source de données de streaming et généralement un emplacement de streaming ou de fichier qui reçoit les données traitées par l’application.

### Conditions préalables pour terminer les exercices
<a name="setting-up-prerequisites-1-13"></a>

Pour exécuter la procédure indiquée dans ce guide, vous devez disposer des éléments suivants :
+ [Kit de développement Java (JDK) version 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html). Définissez la variable d’environnement `JAVA_HOME` pour qu’elle pointe vers l’emplacement d’installation de votre JDK.
+ Nous vous recommandons d’utiliser un environnement de développement (par exemple [Eclipse Java Neon](http://www.eclipse.org/downloads/packages/release/neon/3) ou [IntelliJ Idea](https://www.jetbrains.com/idea/)) pour développer et compiler votre application.
+ [Client Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). Installez le client Git si vous ne l’avez pas déjà fait.
+ [Apache Maven Compiler Plugin](https://maven.apache.org/plugins/maven-compiler-plugin/). Maven doit être installé dans votre chemin de travail. Pour tester votre installation Apache Maven, saisissez les informations suivantes :

  ```
  $ mvn -version
  ```

Pour démarrer, accédez à [Configuration d'un AWS compte et création d'un utilisateur administrateur](setting-up.md).

### Étape 1 : configurer un AWS compte et créer un utilisateur administrateur
<a name="earlier-gs-1_13-setting-up"></a>

#### Inscrivez-vous pour un Compte AWS
<a name="sign-up-for-aws"></a>

Si vous n'en avez pas Compte AWS, procédez comme suit pour en créer un.

**Pour vous inscrire à un Compte AWS**

1. Ouvrez l'[https://portal.aws.amazon.com/billing/inscription.](https://portal.aws.amazon.com/billing/signup)

1. Suivez les instructions en ligne.

   Dans le cadre de la procédure d’inscription, vous recevrez un appel téléphonique ou un SMS et vous saisirez un code de vérification en utilisant le clavier numérique du téléphone.

   Lorsque vous vous inscrivez à un Compte AWS, un *Utilisateur racine d'un compte AWS*est créé. Par défaut, seul l’utilisateur racine a accès à l’ensemble des Services AWS et des ressources de ce compte. La meilleure pratique de sécurité consiste à attribuer un accès administratif à un utilisateur, et à utiliser uniquement l’utilisateur racine pour effectuer les [tâches nécessitant un accès utilisateur racine](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS vous envoie un e-mail de confirmation une fois le processus d'inscription terminé. À tout moment, vous pouvez consulter l'activité actuelle de votre compte et gérer votre compte en accédant à [https://aws.amazon.com/](https://aws.amazon.com/)et en choisissant **Mon compte**.

#### Création d’un utilisateur doté d’un accès administratif
<a name="create-an-admin"></a>

Une fois que vous vous êtes inscrit à un utilisateur administratif Compte AWS, que vous Utilisateur racine d'un compte AWS l'avez sécurisé AWS IAM Identity Center, que vous l'avez activé et que vous en avez créé un, afin de ne pas utiliser l'utilisateur root pour les tâches quotidiennes.

**Sécurisez votre Utilisateur racine d'un compte AWS**

1.  Connectez-vous en [AWS Management Console](https://console.aws.amazon.com/)tant que propriétaire du compte en choisissant **Utilisateur root** et en saisissant votre adresse Compte AWS e-mail. Sur la page suivante, saisissez votre mot de passe.

   Pour obtenir de l’aide pour vous connecter en utilisant l’utilisateur racine, consultez [Connexion en tant qu’utilisateur racine](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) dans le *Guide de l’utilisateur Connexion à AWS *.

1. Activez l’authentification multifactorielle (MFA) pour votre utilisateur racine.

   Pour obtenir des instructions, consultez la section [Activer un périphérique MFA virtuel pour votre utilisateur Compte AWS root (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) dans le guide de l'utilisateur *IAM*.

**Création d’un utilisateur doté d’un accès administratif**

1. Activez IAM Identity Center.

   Pour obtenir des instructions, consultez [Activation d’ AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

1. Dans IAM Identity Center, octroyez un accès administratif à un utilisateur.

   Pour un didacticiel sur l'utilisation du Répertoire IAM Identity Center comme source d'identité, voir [Configurer l'accès utilisateur par défaut Répertoire IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) dans le *Guide de AWS IAM Identity Center l'utilisateur*.

**Connexion en tant qu’utilisateur doté d’un accès administratif**
+ Pour vous connecter avec votre utilisateur IAM Identity Center, utilisez l’URL de connexion qui a été envoyée à votre adresse e-mail lorsque vous avez créé l’utilisateur IAM Identity Center.

  Pour obtenir de l'aide pour vous connecter en utilisant un utilisateur d'IAM Identity Center, consultez la section [Connexion au portail AWS d'accès](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) dans le *guide de l'Connexion à AWS utilisateur*.

**Attribution d’un accès à d’autres utilisateurs**

1. Dans IAM Identity Center, créez un ensemble d’autorisations qui respecte la bonne pratique consistant à appliquer les autorisations de moindre privilège.

   Pour obtenir des instructions, consultez [Création d’un ensemble d’autorisations](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

1. Attribuez des utilisateurs à un groupe, puis attribuez un accès par authentification unique au groupe.

   Pour obtenir des instructions, consultez [Ajout de groupes](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

#### Octroi d’un accès par programmation
<a name="setting-up-access-gs-13"></a>

Les utilisateurs ont besoin d'un accès programmatique s'ils souhaitent interagir avec AWS l'extérieur du AWS Management Console. La manière d'accorder un accès programmatique dépend du type d'utilisateur qui y accède AWS.

Pour accorder aux utilisateurs un accès programmatique, choisissez l’une des options suivantes.


****  

| Quel utilisateur a besoin d’un accès programmatique ? | À | Méthode | 
| --- | --- | --- | 
| IAM | (Recommandé) Utilisez les informations d'identification de la console comme informations d'identification temporaires pour signer les demandes programmatiques adressées au AWS CLI AWS SDKs, ou AWS APIs. |  Suivez les instructions de l’interface que vous souhaitez utiliser. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)  | 
|  Identité de la main-d’œuvre (Utilisateurs gérés dans IAM Identity Center)  | Utilisez des informations d'identification temporaires pour signer les demandes programmatiques adressées au AWS CLI AWS SDKs, ou AWS APIs. |  Suivez les instructions de l’interface que vous souhaitez utiliser. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)  | 
| IAM | Utilisez des informations d'identification temporaires pour signer les demandes programmatiques adressées au AWS CLI AWS SDKs, ou AWS APIs. | Suivez les instructions de la section [Utilisation d'informations d'identification temporaires avec AWS les ressources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) du Guide de l'utilisateur IAM. | 
| IAM | (Non recommandé)Utilisez des informations d'identification à long terme pour signer des demandes programmatiques adressées au AWS CLI AWS SDKs, ou AWS APIs. |  Suivez les instructions de l’interface que vous souhaitez utiliser. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)  | 

#### Étape suivante
<a name="earlier-gs-1_13-setting-up-next-step-2"></a>

[Configurez le AWS Command Line Interface (AWS CLI)](#earlier-gs-1_13-setup-awscli)

### Étape suivante
<a name="earlier-gs-1_13-setup-awscli"></a>

[Étape 2 : configurer le AWS Command Line Interface (AWS CLI)](#setup-awscli-1-13)

### Étape 2 : configurer le AWS Command Line Interface (AWS CLI)
<a name="setup-awscli-1-13"></a>

Au cours de cette étape, vous allez télécharger et configurer le AWS CLI à utiliser avec le service géré pour Apache Flink.

**Note**  
Les exercices de mise en route de ce guide supposent que vous utilisez les informations d’identification d’administrateur (`adminuser`) de votre compte pour effectuer les opérations.

**Note**  
Si vous l'avez déjà AWS CLI installé, vous devrez peut-être effectuer une mise à niveau pour bénéficier des dernières fonctionnalités. Pour plus d’informations, consultez [Installation d’ AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) dans le *Guide de l’utilisateur AWS Command Line Interface *. Pour vérifier la version du AWS CLI, exécutez la commande suivante :  

```
aws --version
```
Les exercices présentés dans ce didacticiel nécessitent la AWS CLI version suivante ou une version ultérieure :  

```
aws-cli/1.16.63
```

**Pour configurer le AWS CLI**

1. Téléchargez et configurez l’interface AWS CLI. Pour obtenir des instructions, consultez les rubriques suivantes dans le *Guide de l’utilisateur de l’interface AWS Command Line Interface * : 
   + [Installation de AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)
   + [Configuration de l’interface AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) (français non garanti)

1. Ajoutez un profil nommé pour l'utilisateur administrateur dans le AWS CLI `config` fichier. Vous utiliserez ce profil lorsque vous exécuterez les commandes AWS CLI . Pour plus d'informations sur les profils nommés, consultez la rubrique [Profils nommés](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html) dans le *Guide de l'utilisateur AWS Command Line Interface *.

   ```
   [profile adminuser]
   aws_access_key_id = adminuser access key ID
   aws_secret_access_key = adminuser secret access key
   region = aws-region
   ```

   Pour obtenir la liste des AWS régions disponibles, consultez la section [Régions et points de terminaison](https://docs.aws.amazon.com/general/latest/gr/rande.html) dans le *Référence générale d'Amazon Web Services*.
**Note**  
Les exemples de code et de commandes présentés dans ce didacticiel utilisent la région USA Ouest (Oregon). Pour utiliser une autre région, remplacez la région dans le code et les commandes de ce didacticiel par la région que vous souhaitez utiliser.

1. Vérifiez la configuration en saisissant la commande d’aide suivante à l’invite de commande : 

   ```
   aws help
   ```

Après avoir configuré un AWS compte AWS CLI, vous pouvez passer à l'exercice suivant, dans lequel vous configurez un exemple d'application et testez la end-to-end configuration.

#### Étape suivante
<a name="setup-awscli-next-step-3-1-13"></a>

[Étape 3 : créer et exécuter un service géré pour l'application Apache Flink](#get-started-exercise-1-13)

### Étape 3 : créer et exécuter un service géré pour l'application Apache Flink
<a name="get-started-exercise-1-13"></a>

Dans cet exercice, vous allez créer une application de service géré pour Apache Flink avec des flux de données comme source et comme récepteur.

**Topics**
+ [Création de deux flux de données Amazon Kinesis](#get-started-exercise-1-1-13)
+ [Écrire des exemples d'enregistrements dans le flux d'entrée](#get-started-exercise-2-1-13)
+ [Téléchargez et examinez le code Java de streaming d'Apache Flink](#get-started-exercise-5-1-13)
+ [Compilez le code de l'application](#get-started-exercise-5.5-1-13)
+ [Téléchargez le code Java de streaming Apache Flink](#get-started-exercise-6-1-13)
+ [Création et exécution du service géré pour l'application Apache Flink](#get-started-exercise-7-1-13)
+ [Étape suivante](#get-started-exercise-next-step-4-1-13)

#### Création de deux flux de données Amazon Kinesis
<a name="get-started-exercise-1-1-13"></a>

Avant de créer une application de service géré pour Apache Flink dans le cadre de cet exercice, commencez par créer deux flux de données Kinesis (`ExampleInputStream` et `ExampleOutputStream`). Votre application utilise ces flux pour les flux source et de destination de l’application.

Vous pouvez créer ces flux à l’aide de la console Amazon Kinesis ou de la commande AWS CLI suivante. Pour obtenir des instructions sur la console, consultez [Création et mise à jour de flux de données](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) dans le *Guide du développeur Amazon Kinesis Data Streams*. 

**Pour créer les flux de données (AWS CLI)**

1. Pour créer le premier flux (`ExampleInputStream`), utilisez la commande Amazon Kinesis `create-stream` AWS CLI suivante.

   ```
   $ aws kinesis create-stream \
   --stream-name ExampleInputStream \
   --shard-count 1 \
   --region us-west-2 \
   --profile adminuser
   ```

1. Pour créer le second flux utilisé par l’application pour écrire la sortie, exécutez la même commande en remplaçant le nom du flux par `ExampleOutputStream`.

   ```
   $ aws kinesis create-stream \
   --stream-name ExampleOutputStream \
   --shard-count 1 \
   --region us-west-2 \
   --profile adminuser
   ```

#### Écrire des exemples d'enregistrements dans le flux d'entrée
<a name="get-started-exercise-2-1-13"></a>

Dans cette section, vous utilisez un script Python pour écrire les exemples d’enregistrements dans le flux pour que l’application les traite.

**Note**  
Cette section nécessite le kit [AWS SDK pour Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

1. Créez un fichier nommé `stock.py` avec le contenu suivant :

   ```
       import datetime
       import json
       import random
       import boto3
       STREAM_NAME = "ExampleInputStream"
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. Plus loin dans ce didacticiel, vous exécutez le script `stock.py` pour envoyer des données à l’application. 

   ```
   $ python stock.py
   ```

#### Téléchargez et examinez le code Java de streaming d'Apache Flink
<a name="get-started-exercise-5-1-13"></a>

Le code de l'application Java pour cet exemple est disponible sur GitHub. Pour télécharger le code d’application, procédez comme suit :

1. Cloner le référentiel distant à l’aide de la commande suivante :

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Accédez au répertoire `amazon-kinesis-data-analytics-java-examples/GettingStarted`.

Notez les informations suivantes à propos du code d’application :
+ Un fichier de [modèle d’objet du projet (pom.xml)](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) contient des informations sur la configuration et les dépendances de l’application, y compris les bibliothèques du service géré pour Apache Flink.
+ Le fichier `BasicStreamingJob.java` contient la méthode `main` qui définit la fonctionnalité de l’application.
+ L’application utilise une source Kinesis pour lire à partir du flux source. L’extrait de code suivant crée la source Kinesis :

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ Votre application crée les connecteurs source et récepteur pour accéder aux ressources externes à l’aide d’un objet `StreamExecutionEnvironment`. 
+ L’application crée les connecteurs source et récepteur à l’aide de propriétés statiques. Pour utiliser les propriétés de l’application dynamique, utilisez les méthodes `createSourceFromApplicationProperties` et `createSinkFromApplicationProperties` pour créer les connecteurs. Ces méthodes lisent les propriétés de l’application pour configurer les connecteurs.

  Pour de plus amples informations sur les propriétés d’exécution, consultez [Utiliser les propriétés d'exécution](how-properties.md).

#### Compilez le code de l'application
<a name="get-started-exercise-5.5-1-13"></a>

Dans cette section, vous allez utiliser le compilateur Apache Maven pour créer le code Java pour l’application. Pour obtenir des informations sur l’installation d’Apache Maven et sur le kit de développement Java (JDK), consultez [Remplir les conditions préalables pour terminer les exercices](getting-started.md#setting-up-prerequisites).

**Pour compiler le code d’application**

1. Pour utiliser votre code d’application, vous le compilez et l’intégrez dans un fichier JAR. Vous pouvez compiler et intégrer votre code de deux manières :
   + À l’aide de l’outil de ligne de commande Maven. Créez votre fichier JAR en exécutant la commande suivante dans le répertoire qui contient le fichier `pom.xml` :

     ```
     mvn package -Dflink.version=1.13.2
     ```
   + À l’aide de votre environnement de développement. Consultez la documentation de votre environnement de développement pour plus de détails.
**Note**  
Le code source fourni repose sur les bibliothèques de Java 11. 

   Vous pouvez charger votre package en tant que fichier JAR, ou compresser le package et le charger en tant que fichier ZIP. Si vous créez votre application à l'aide du AWS CLI, vous spécifiez le type de contenu de votre code (JAR ou ZIP).

1. En cas d’erreur lors de la compilation, vérifiez que votre variable d’environnement `JAVA_HOME` est correctement définie.

Si la compilation de l’application aboutit, le fichier suivant est créé :

`target/aws-kinesis-analytics-java-apps-1.0.jar`

#### Téléchargez le code Java de streaming Apache Flink
<a name="get-started-exercise-6-1-13"></a>

Dans cette section, vous allez créer un compartiment Amazon Simple Storage Service (Amazon S3) et charger votre code d'application.

**Pour charger le code d’application**

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez **Créer un compartiment**.

1. Saisissez **ka-app-code-*<username>*** dans le champ **Nom du compartiment**. Ajoutez un suffixe au nom du compartiment, par exemple votre nom d’utilisateur, pour qu’il soit unique. Choisissez **Suivant**.

1. À l’étape **Configurer les options**, conservez les paramètres, puis choisissez **Suivant**.

1. À l’étape **Définir des autorisations**, conservez les paramètres, puis choisissez **Suivant**.

1. Choisissez **Créer un compartiment**.

1. Dans la console Amazon S3, choisissez le *<username>* compartiment **ka-app-code-**, puis **Upload**.

1. À l’étape **Sélectionner les fichiers**, choisissez **Ajouter des fichiers**. Accédez au fichier `aws-kinesis-analytics-java-apps-1.0.jar` que vous avez créé à l’étape précédente. Choisissez **Suivant**.

1. Vous n’avez pas besoin de modifier les paramètres de l’objet, donc choisissez **Charger**.

Votre code d’application est désormais stocké dans un compartiment Amazon S3 auquel votre application peut accéder.

#### Création et exécution du service géré pour l'application Apache Flink
<a name="get-started-exercise-7-1-13"></a>

Vous pouvez créer et exécuter une application de service géré pour Apache Flink à l’aide de la console ou de l’interface AWS CLI.

**Note**  
Lorsque vous créez l'application à l'aide de la console, vos ressources Gestion des identités et des accès AWS (IAM) et Amazon CloudWatch Logs sont créées pour vous. Lorsque vous créez l'application à l'aide du AWS CLI, vous créez ces ressources séparément.

**Topics**
+ [Création et exécution de l'application (console)](#get-started-exercise-7-console-1-13)
+ [Créez et exécutez l'application (AWS CLI)](#get-started-exercise-7-cli-1-13)

##### Création et exécution de l'application (console)
<a name="get-started-exercise-7-console-1-13"></a>

Suivez ces étapes pour créer, configurer, mettre à jour et exécuter l’application à l’aide de la console.

##### Pour créer l’application
<a name="get-started-exercise-7-console-create-1-13"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le tableau de bord du service géré pour Apache Flink, choisissez **Créer une application d’analyse**.

1. Sur la page **Service géré pour Apache Flink - Créer une application**, fournissez les détails de l’application comme suit :
   + Pour **Nom de l’application**, saisissez **MyApplication**.
   + Pour **Description**, saisissez **My java test app**.
   + Pour **Exécution**, choisissez **Apache Flink**.
   + Laissez le menu déroulant de la version sur **Apache Flink version 1.13** .

1. Pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM) `kinesis-analytics-MyApplication-us-west-2`**.

1. Choisissez **Créer une application**.

**Note**  
Lorsque vous créez une application de service géré pour Apache Flink à l’aide de la console, vous avez la possibilité de créer un rôle et une politique IAM pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces ressources IAM sont nommées en utilisant le nom de votre application et la région, comme suit :  
Stratégie : `kinesis-analytics-service-MyApplication-us-west-2`
Rôle : `kinesisanalytics-MyApplication-us-west-2`

##### Modifier la politique IAM
<a name="get-started-exercise-7-console-iam-1-13"></a>

Modifiez la politique IAM pour ajouter des autorisations afin d'accéder aux flux de données Kinesis.

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Choisissez **Stratégies**. Choisissez la politique **`kinesis-analytics-service-MyApplication-us-west-2`** créée pour vous par la console dans la section précédente. 

1. Sur la page **Récapitulatif**, choisissez **Modifier la politique**. Sélectionnez l’onglet **JSON**.

1. Ajoutez la section mise en surbrillance dans l’exemple de stratégie suivant à la politique. Remplacez le compte d'exemple IDs (*012345678901*) par votre identifiant de compte.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-username/aws-kinesis-analytics-java-apps-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Configuration de l'application
<a name="get-started-exercise-7-console-configure-1-13"></a>

1. Sur la **MyApplication**page, choisissez **Configurer**.

1. Sur la page **Configurer l’application**, indiquez l’**emplacement du code**:
   + Pour le compartiment **Amazon S3**, saisissez **ka-app-code-*<username>***.
   + Pour le **chemin de l'objet Amazon S3**, saisissez **aws-kinesis-analytics-java-apps-1.0.jar**.

1. Sous **Accéder aux ressources de l’application**, pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM `kinesis-analytics-MyApplication-us-west-2`**.

1. Saisissez :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

1. Sous **Surveillance**, assurez-vous que **Surveillance du niveau des métriques** est défini sur **Application**.

1. Pour la **CloudWatch journalisation**, cochez la case **Activer**.

1. Choisissez **Mettre à jour**.

**Note**  
Lorsque vous choisissez d'activer la CloudWatch journalisation Amazon, Managed Service for Apache Flink crée un groupe de journaux et un flux de journaux pour vous. Les noms de ces ressources sont les suivants :   
Groupe de journaux : `/aws/kinesis-analytics/MyApplication`
Flux de journaux : `kinesis-analytics-log-stream`

##### Exécutez l'application
<a name="get-started-exercise-7-console-run-1-13"></a>

Le graphique des tâches Flink peut être visualisé en exécutant l’application, en ouvrant le tableau de bord Apache Flink et en choisissant la tâche Flink souhaitée.

##### Arrêtez l'application
<a name="get-started-exercise-7-console-stop-1-13"></a>

Sur la **MyApplication**page, choisissez **Stop**. Confirmez l’action.

##### Mise à jour de l'application
<a name="get-started-exercise-7-console-update-1-13"></a>

À l’aide de la console, vous pouvez mettre à jour les paramètres d’application tels que les paramètres de surveillance, les propriétés d’application et l’emplacement ou le nom du fichier JAR de l’application. Vous pouvez également recharger le fichier JAR de l'application à partir du compartiment Amazon S3 si vous avez besoin de mettre à jour le code de l'application.

Sur la **MyApplication**page, choisissez **Configurer**. Mettez à jour les paramètres de l’application, puis choisissez **Mettre à jour**.

##### Créez et exécutez l'application (AWS CLI)
<a name="get-started-exercise-7-cli-1-13"></a>

Dans cette section, vous allez utiliser le AWS CLI pour créer et exécuter l'application Managed Service for Apache Flink. Le service géré pour Apache Flink utilise la `kinesisanalyticsv2` AWS CLI commande pour créer et interagir avec le service géré pour les applications Apache Flink.

##### Créer une stratégie d’autorisations
<a name="get-started-exercise-7-cli-policy-1-13"></a>

**Note**  
Vous devez créer une stratégie d’autorisations et un rôle pour votre application. Si vous ne créez pas ces ressources IAM, votre application ne peut pas accéder à ses flux de données et de journaux.

Vous commencez par créer une stratégie d’autorisations avec deux instructions : une qui accorde des autorisations pour l’action `read` sur le flux source et une autre qui accorde des autorisations pour les actions `write` sur le flux récepteur. Vous attachez ensuite la politique à un rôle IAM (que vous allez créer dans la section suivante). Ainsi, lorsque le service géré pour Apache Flink assume le rôle, le service dispose des autorisations nécessaires pour lire à partir du flux source et écrire dans le flux récepteur.

Utilisez le code suivant pour créer la politique d’autorisations `AKReadSourceStreamWriteSinkStream`. Remplacez `username` par le nom d’utilisateur que vous avez utilisé pour créer le compartiment Amazon S3 pour stocker le code d’application. Remplacez l'ID de compte dans Amazon Resource Names (ARNs) (`012345678901`) par votre identifiant de compte.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": ["arn:aws:s3:::ka-app-code-username",
                "arn:aws:s3:::ka-app-code-username/*"
            ]
        },
        {
            "Sid": "ReadInputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
        },
        {
            "Sid": "WriteOutputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
        }
    ]
}
```

------

Pour step-by-step obtenir des instructions sur la création d'une politique d'autorisations, voir [Tutoriel : créer et joindre votre première politique gérée par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) dans le *guide de l'utilisateur IAM*.

**Note**  
Pour accéder à d’autres services Amazon, vous pouvez utiliser le AWS SDK pour Java. Le service géré pour Apache Flink définit automatiquement les informations d’identification requises par le kit SDK en fonction du rôle IAM d’exécution du service associé à votre application. Aucune étape supplémentaire n’est nécessaire.

##### Créer un rôle IAM
<a name="get-started-exercise-7-cli-role-1-13"></a>

Dans cette section, vous créez un rôle IAM que l’application de service géré pour Apache Flink peut assumer pour lire un flux source et écrire dans le flux récepteur.

Le service géré pour Apache Flink ne peut pas accéder à votre flux sans autorisation. Vous utilisez un rôle IAM pour accorder ces autorisations. Deux politiques sont attachées à chaque rôle IAM. La politique d’approbation accorde au service géré pour Apache Flink l’autorisation d’assumer le rôle, et la politique d’autorisation détermine ce que le service géré pour Apache Flink peut faire après avoir assumé le rôle.

Vous attachez la politique d’autorisations que vous avez créée dans la section précédente à ce rôle.

**Pour créer un rôle IAM**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le volet de navigation, choisissez **Rôles**, puis **Créer un rôle**.

1. Sous **Sélectionner le type d'identité approuvée**, choisissez **Service AWS **. Sous **Choisir le service qui utilisera ce rôle**, choisissez **EC2**. Sous **Sélectionner votre cas d’utilisation**, choisissez **Kinesis Analytics**.

   Choisissez **Suivant : Autorisations**.

1. Dans la page **Attacher des stratégies d’autorisations**, choisissez **Suivant : vérification**. Vous attachez des stratégies d’autorisations après avoir créé le rôle.

1. Sur la page **Créer un rôle**, saisissez **MF-stream-rw-role** pour le **Nom du rôle**. Sélectionnez **Créer un rôle**.

   Vous venez de créer un nouveau rôle IAM appelé `MF-stream-rw-role`. Ensuite, vous mettez à jour les stratégies d’approbation et d’autorisation pour le rôle.

1. Attachez la politique d’autorisation au rôle.
**Note**  
Dans le cadre de cet exercice, le service géré pour Apache Flink assume ce rôle à la fois pour la lecture des données à partir d’un flux de données Kinesis (source) et pour l’écriture des résultats dans un autre flux de données Kinesis. Vous attachez donc la politique que vous avez créée à l’étape précédente, [Créer une stratégie d’autorisations](#get-started-exercise-7-cli-policy-1-13).

   1. Sur la page **Récapitulatif**, choisissez l’onglet **Autorisations**.

   1. Choisissez **Attacher des stratégies**.

   1. Dans la zone de recherche, saisissez **AKReadSourceStreamWriteSinkStream** (la politique que vous avez créée dans la section précédente).

   1. Sélectionnez la politique **AKReadSourceStreamWriteSinkStream**, puis **Attacher une stratégie**.

Vous avez maintenant créé le rôle d’exécution de service que votre application utilise pour accéder aux ressources. Notez l’ARN du nouveau rôle.

Pour step-by-step obtenir des instructions sur la création d'un rôle, consultez la section [Création d'un rôle IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) dans le guide de l'*utilisateur IAM*.

##### Création du service géré pour l'application Apache Flink
<a name="get-started-exercise-7-cli-create-1-13"></a>

1. Copiez le code JSON suivant dans un fichier nommé `create_request.json`. Remplacez l’exemple d’ARN du rôle par l’ARN du rôle que vous avez créé précédemment. Remplacez le suffixe de l’ARN du compartiment (`username`) par le suffixe que vous avez choisi dans la section précédente. Remplacez l’exemple d’ID de compte (`012345678901`) dans le rôle d’exécution de service par votre ID de compte.

   ```
   {
       "ApplicationName": "test",
       "ApplicationDescription": "my java test app",
       "RuntimeEnvironment": "FLINK-1_15",
       "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
       "ApplicationConfiguration": {
           "ApplicationCodeConfiguration": {
               "CodeContent": {
                   "S3ContentLocation": {
                       "BucketARN": "arn:aws:s3:::ka-app-code-username",
                       "FileKey": "aws-kinesis-analytics-java-apps-1.0.jar"
                   }
               },
               "CodeContentType": "ZIPFILE"
           },
           "EnvironmentProperties":  { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
       }
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) avec la demande précédente pour créer l’application : 

   ```
   aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
   ```

L’application est maintenant créée. Vous démarrez l’application dans l’étape suivante.

##### Démarrage de l’application
<a name="get-started-exercise-7-cli-start-1-13"></a>

Dans cette section, vous utilisez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) pour démarrer l’application.

**Pour démarrer l’application**

1. Copiez le code JSON suivant dans un fichier nommé `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) avec la demande précédente pour démarrer l’application :

   ```
   aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
   ```

L’application est maintenant en cours d’exécution. Vous pouvez consulter les métriques du service géré pour Apache Flink sur la CloudWatch console Amazon pour vérifier que l'application fonctionne.

##### Arrêt de l’application
<a name="get-started-exercise-7-cli-stop-1-13"></a>

Dans cette section, vous allez utiliser l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) pour arrêter l’application.

**Pour arrêter l’application**

1. Copiez le code JSON suivant dans un fichier nommé `stop_request.json`.

   ```
   {
      "ApplicationName": "test"
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) avec la demande suivante pour arrêter l’application :

   ```
   aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
   ```

L’application est maintenant arrêtée.

##### Ajouter une option de CloudWatch journalisation
<a name="get-started-exercise-7-cli-cw-1-13"></a>

Vous pouvez utiliser le AWS CLI pour ajouter un flux de CloudWatch journal Amazon à votre application. Pour plus d'informations sur l'utilisation de CloudWatch Logs avec votre application, consultez[Configurer la journalisation des applications dans le service géré pour Apache Flink](cloudwatch-logs.md).

##### Mettre à jour des propriétés d’environnement
<a name="get-started-exercise-7-cli-update-env-1-13"></a>

Dans cette section, vous utilisez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) pour modifier les propriétés d’environnement de l’application sans recompiler le code de l’application. Dans cet exemple, vous modifiez la région des flux source et de destination.

**Pour mettre à jour des propriétés d’environnement pour l’application**

1. Copiez le code JSON suivant dans un fichier nommé `update_properties_request.json`.

   ```
   {"ApplicationName": "test",
      "CurrentApplicationVersionId": 1,
      "ApplicationConfigurationUpdate": { 
         "EnvironmentPropertyUpdates": { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
      }
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) avec la demande précédente pour mettre à jour les propriétés de l’environnement :

   ```
   aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
   ```

##### Mise à jour du code de l’application
<a name="get-started-exercise-7-cli-update-code-1-13"></a>

Lorsque vous devez mettre à jour le code de votre application avec une nouvelle version de votre package de code, vous utilisez l'[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) AWS CLI action.

**Note**  
Pour charger une nouvelle version du code de l’application portant le même nom de fichier, vous devez spécifier la nouvelle version de l’objet. Pour de plus amples informations sur l’utilisation des versions d’objet Amazon S3, consultez [Activation et désactivation de la gestion des versions](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

Pour l'utiliser AWS CLI, supprimez votre ancien package de code de votre compartiment Amazon S3, téléchargez la nouvelle version et appelez `UpdateApplication` en spécifiant le même compartiment Amazon S3 et le même nom d'objet, ainsi que la nouvelle version de l'objet. L’application redémarrera avec le nouveau package de code.

L’exemple de demande d’action `UpdateApplication` suivant recharge le code de l’application et redémarre l’application. Mettez à jour l’`CurrentApplicationVersionId` à la version actuelle de l’application. Vous pouvez vérifier la version actuelle de l’application à l’aide des actions `ListApplications` ou `DescribeApplication`. Mettez à jour le suffixe du nom du compartiment (*<username>*) avec le suffixe que vous avez choisi dans la [Création de deux flux de données Amazon Kinesis](get-started-exercise.md#get-started-exercise-1) section.

```
{
    "ApplicationName": "test",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username",
                    "FileKeyUpdate": "aws-kinesis-analytics-java-apps-1.0.jar",
                    "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU"
                }
            }
        }
    }
}
```

#### Étape suivante
<a name="get-started-exercise-next-step-4-1-13"></a>

[Étape 4 : Nettoyer les AWS ressources](#getting-started-cleanup-1-13)

### Étape 4 : Nettoyer les AWS ressources
<a name="getting-started-cleanup-1-13"></a>

Cette section inclut les procédures de nettoyage AWS des ressources créées dans le didacticiel Getting Started.

**Topics**
+ [Supprimer votre application Managed Service for Apache Flink](#getting-started-cleanup-app-1-13)
+ [Supprimer vos flux de données Kinesis](#getting-started-cleanup-stream-1-13)
+ [Supprimer votre objet et votre compartiment Amazon S3](#getting-started-cleanup-s3-1-13)
+ [Supprimer vos ressources IAM](#getting-started-cleanup-iam-1-13)
+ [Supprimer vos CloudWatch ressources](#getting-started-cleanup-cw-1-13)
+ [Étape suivante](#getting-started-cleanup-next-step-5-1-13)

#### Supprimer votre application Managed Service for Apache Flink
<a name="getting-started-cleanup-app-1-13"></a>

1. [Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Dans le panneau Managed Service for Apache Flink, choisissez **MyApplication**.

1. Sur la page de l’application, choisissez **Supprimer**, puis confirmez la suppression.

#### Supprimer vos flux de données Kinesis
<a name="getting-started-cleanup-stream-1-13"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le panneau Kinesis Data Streams, **ExampleInputStream**sélectionnez.

1. Sur la **ExampleInputStream**page, choisissez **Supprimer Kinesis Stream**, puis confirmez la suppression.

1. Sur la page **Kinesis Streams**, choisissez le **ExampleOutputStream**, choisissez **Actions**, choisissez **Supprimer**, puis confirmez la suppression.

#### Supprimer votre objet et votre compartiment Amazon S3
<a name="getting-started-cleanup-s3-1-13"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez le ***<username>*compartiment ka-app-code -.**

1. Choisissez **Supprimer**, puis saisissez le nombre du compartiment pour confirmer la suppression.

#### Supprimer vos ressources IAM
<a name="getting-started-cleanup-iam-1-13"></a>

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans la barre de navigation, choisissez **Stratégies**.

1. Dans le contrôle du filtre, saisissez **kinesis**.

1. Choisissez la politique **kinesis-analytics-service- MyApplication -us-west-2**.

1. Choisissez **Actions de stratégie**, puis **Supprimer**.

1. Dans la barre de navigation, choisissez **Rôles**.

1. Choisissez le rôle **kinesis-analytics- MyApplication** -us-west-2.

1. Choisissez **Supprimer le rôle**, puis confirmez la suppression.

#### Supprimer vos CloudWatch ressources
<a name="getting-started-cleanup-cw-1-13"></a>

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans la barre de navigation, choisissez **Journaux**.

1. Choisissez le groupe**/aws/kinesis-analytics/MyApplication**log.

1. Choisissez **Supprimer le groupe de journaux**, puis confirmez la suppression.

#### Étape suivante
<a name="getting-started-cleanup-next-step-5-1-13"></a>

[Étape 5 : étapes suivantes](#getting-started-next-steps-1-13)

### Étape 5 : étapes suivantes
<a name="getting-started-next-steps-1-13"></a>

Maintenant que vous avez créé et exécuté une application de service géré de base pour Apache Flink, consultez les ressources suivantes pour des solutions de service géré plus avancées pour Apache Flink.
+ **[La solution de données de AWS streaming pour Amazon Kinesis](https://aws.amazon.com/solutions/implementations/aws-streaming-data-solution-for-amazon-kinesis/) :** La solution de données de AWS streaming pour Amazon Kinesis configure automatiquement AWS les services nécessaires pour capturer, stocker, traiter et diffuser facilement des données de streaming. La solution propose plusieurs options pour résoudre les problèmes d’utilisation de données en streaming. L'option Managed Service for Apache Flink fournit un exemple de end-to-end streaming ETL illustrant une application réelle qui exécute des opérations analytiques sur des données de taxis simulées à New York. La solution met en place toutes les AWS ressources nécessaires, telles que les rôles et les politiques IAM, un CloudWatch tableau de bord et des CloudWatch alarmes.
+ **[AWS Solution de données de streaming pour Amazon MSK](https://aws.amazon.com/solutions/implementations/aws-streaming-data-solution-for-amazon-msk/) :** La solution de données de AWS streaming pour Amazon MSK fournit des AWS CloudFormation modèles dans lesquels les données circulent entre les producteurs, le stockage en streaming, les consommateurs et les destinations. 
+ **[Clickstream Lab avec Apache Flink et Apache Kafka](https://amazonmsk-labs.workshop.aws/en/mskkdaflinklab.html)** : un laboratoire de bout en bout pour les cas d’utilisation d’Amazon Managed Streaming for Apache Kafka pour le stockage de streaming et le service géré pour Apache Flink pour les applications Apache Flink pour le traitement des flux.
+ **[Amazon Managed Service for Apache Flink Workshop](https://catalog.workshops.aws/managed-flink) :** dans cet atelier, vous allez créer une architecture de end-to-end streaming pour ingérer, analyser et visualiser les données de streaming en temps quasi réel. Vous avez décidé d’améliorer les opérations d’une compagnie de taxi à New York. Vous analysez les données de télémétrie d’une flotte de taxis à New York en temps quasi réel afin d’optimiser le fonctionnement de la flotte.
+ **[Learn Flink : Hands On Training](https://ci.apache.org/projects/flink/flink-docs-master/learn-flink/) :** formation d’introduction officielle à Apache Flink qui vous permet de commencer à écrire des applications ETL, analytiques et axées sur les événements évolutives pour le streaming.
**Note**  
Sachez que le service géré pour Apache Flink ne prend pas en charge la version Apache Flink (1.12) utilisée dans cette formation. Vous pouvez utiliser Flink 1.15.2 dans le service géré Flink pour Apache Flink. 

## Pour démarrer : Flink 1.11.1 - obsolète
<a name="earlier-gs-1_11"></a>

**Note**  
Les versions **1.6, 1.8 et 1.11** d'Apache Flink ne sont pas prises en charge par la communauté Apache Flink depuis plus de trois ans. Nous prévoyons de rendre ces versions obsolètes dans Amazon Managed Service pour Apache Flink le **5 novembre 2024**. À partir de cette date, vous ne pourrez plus créer de nouvelles applications pour ces versions de Flink. Vous pouvez continuer à exécuter les applications existantes pour le moment. Vous pouvez mettre à niveau vos applications de manière dynamique à l'aide de la fonctionnalité de mise à niveau de version sur place d'Amazon Managed Service pour Apache Flink. Pour plus d'informations, consultez. [Utiliser des mises à niveau de version sur place pour Apache Flink](how-in-place-version-upgrades.md)

Cette rubrique contient une version du [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md) didacticiel qui utilise Apache Flink 1.11.1.

Cette section présente les concepts fondamentaux du service géré pour Apache Flink et de l' DataStream API. Elle décrit les options disponibles pour créer et tester vos applications. Elle fournit également des instructions pour installer les outils nécessaires pour suivre les didacticiels de ce guide et pour créer votre première application. 

**Topics**
+ [Composants d'un service géré pour une application Apache Flink](#earlier-gs-1_11-components)
+ [Conditions préalables pour terminer les exercices](#earlier-gs-1_11-setting-up-prerequisites)
+ [Étape 1 : configurer un AWS compte et créer un utilisateur administrateur](#earlier-gs-1_11-setting-up)
+ [Étape 2 : configurer le AWS Command Line Interface (AWS CLI)](#earlier-gs-1_11-setup-awscli)
+ [Étape 3 : créer et exécuter un service géré pour l'application Apache Flink](#earlier-gs-1_11-get-started-exercise)
+ [Étape 4 : Nettoyer les AWS ressources](#earlier-gs-1_11-cleanup)
+ [Étape 5 : étapes suivantes](#earlier-gs-1_11-next-steps)

### Composants d'un service géré pour une application Apache Flink
<a name="earlier-gs-1_11-components"></a>

Pour traiter les données, votre application Managed Service for Apache Flink utilise une application Java/Apache Maven ou Scala qui traite les entrées et produit des sorties à l'aide du moteur d'exécution Apache Flink. 

Une application de service géré for Apache Flink comprend les composants suivants :
+ **Propriétés d’exécution :** vous pouvez utiliser les *propriétés d’exécution* pour configurer votre application sans recompiler le code de votre application. 
+ **Source :** l’application consomme des données en utilisant une *source*. Un connecteur source lit les données d’un flux de données Kinesis, d’un compartiment Amazon S3, etc. Pour plus d’informations, consultez [Ajouter des sources de données de streaming](how-sources.md).
+ **Opérateurs :** l’application traite les données à l’aide d’un ou de plusieurs *opérateurs*. Un opérateur peut transformer, enrichir ou agréger des données. Pour plus d’informations, consultez [Opérateurs](how-operators.md).
+ **Récepteur :** l’application produit des données vers des sources externes à l’aide de *récepteurs*. Un connecteur récepteur écrit des données dans un flux de données Kinesis, un flux Firehose, un compartiment Amazon S3, etc. Pour de plus amples informations, veuillez consulter [Écrire des données à l'aide de récepteurs](how-sinks.md).

Après avoir créé, compilé et empaqueté votre code d’application, vous chargez le package de code dans un compartiment Amazon Simple Storage Service (Amazon S3). Vous créez ensuite une application de service géré pour Apache Flink. Vous transmettez l’emplacement du package de code, un flux de données Kinesis comme source de données de streaming et généralement un emplacement de streaming ou de fichier qui reçoit les données traitées par l’application.

### Conditions préalables pour terminer les exercices
<a name="earlier-gs-1_11-setting-up-prerequisites"></a>

Pour exécuter la procédure indiquée dans ce guide, vous devez disposer des éléments suivants :
+ [Kit de développement Java (JDK) version 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html). Définissez la variable d’environnement `JAVA_HOME` pour qu’elle pointe vers l’emplacement d’installation de votre JDK.
+ Nous vous recommandons d’utiliser un environnement de développement (par exemple [Eclipse Java Neon](http://www.eclipse.org/downloads/packages/release/neon/3) ou [IntelliJ Idea](https://www.jetbrains.com/idea/)) pour développer et compiler votre application.
+ [Client Git](https://git-scm.com/book/en/v2/earlier-gs-1_11-Installing-Git). Installez le client Git si vous ne l’avez pas déjà fait.
+ [Apache Maven Compiler Plugin](https://maven.apache.org/plugins/maven-compiler-plugin/). Maven doit être installé dans votre chemin de travail. Pour tester votre installation Apache Maven, saisissez les informations suivantes :

  ```
  $ mvn -version
  ```

Pour démarrer, accédez à [Configuration d'un AWS compte et création d'un utilisateur administrateur](setting-up.md).

### Étape 1 : configurer un AWS compte et créer un utilisateur administrateur
<a name="earlier-gs-1_11-setting-up"></a>

#### Inscrivez-vous pour un Compte AWS
<a name="sign-up-for-aws"></a>

Si vous n'en avez pas Compte AWS, procédez comme suit pour en créer un.

**Pour vous inscrire à un Compte AWS**

1. Ouvrez l'[https://portal.aws.amazon.com/billing/inscription.](https://portal.aws.amazon.com/billing/signup)

1. Suivez les instructions en ligne.

   Dans le cadre de la procédure d’inscription, vous recevrez un appel téléphonique ou un SMS et vous saisirez un code de vérification en utilisant le clavier numérique du téléphone.

   Lorsque vous vous inscrivez à un Compte AWS, un *Utilisateur racine d'un compte AWS*est créé. Par défaut, seul l’utilisateur racine a accès à l’ensemble des Services AWS et des ressources de ce compte. La meilleure pratique de sécurité consiste à attribuer un accès administratif à un utilisateur, et à utiliser uniquement l’utilisateur racine pour effectuer les [tâches nécessitant un accès utilisateur racine](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS vous envoie un e-mail de confirmation une fois le processus d'inscription terminé. À tout moment, vous pouvez consulter l'activité actuelle de votre compte et gérer votre compte en accédant à [https://aws.amazon.com/](https://aws.amazon.com/)et en choisissant **Mon compte**.

#### Création d’un utilisateur doté d’un accès administratif
<a name="create-an-admin"></a>

Une fois que vous vous êtes inscrit à un utilisateur administratif Compte AWS, que vous Utilisateur racine d'un compte AWS l'avez sécurisé AWS IAM Identity Center, que vous l'avez activé et que vous en avez créé un, afin de ne pas utiliser l'utilisateur root pour les tâches quotidiennes.

**Sécurisez votre Utilisateur racine d'un compte AWS**

1.  Connectez-vous en [AWS Management Console](https://console.aws.amazon.com/)tant que propriétaire du compte en choisissant **Utilisateur root** et en saisissant votre adresse Compte AWS e-mail. Sur la page suivante, saisissez votre mot de passe.

   Pour obtenir de l’aide pour vous connecter en utilisant l’utilisateur racine, consultez [Connexion en tant qu’utilisateur racine](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) dans le *Guide de l’utilisateur Connexion à AWS *.

1. Activez l’authentification multifactorielle (MFA) pour votre utilisateur racine.

   Pour obtenir des instructions, consultez la section [Activer un périphérique MFA virtuel pour votre utilisateur Compte AWS root (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) dans le guide de l'utilisateur *IAM*.

**Création d’un utilisateur doté d’un accès administratif**

1. Activez IAM Identity Center.

   Pour obtenir des instructions, consultez [Activation d’ AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

1. Dans IAM Identity Center, octroyez un accès administratif à un utilisateur.

   Pour un didacticiel sur l'utilisation du Répertoire IAM Identity Center comme source d'identité, voir [Configurer l'accès utilisateur par défaut Répertoire IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) dans le *Guide de AWS IAM Identity Center l'utilisateur*.

**Connexion en tant qu’utilisateur doté d’un accès administratif**
+ Pour vous connecter avec votre utilisateur IAM Identity Center, utilisez l’URL de connexion qui a été envoyée à votre adresse e-mail lorsque vous avez créé l’utilisateur IAM Identity Center.

  Pour obtenir de l'aide pour vous connecter en utilisant un utilisateur d'IAM Identity Center, consultez la section [Connexion au portail AWS d'accès](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) dans le *guide de l'Connexion à AWS utilisateur*.

**Attribution d’un accès à d’autres utilisateurs**

1. Dans IAM Identity Center, créez un ensemble d’autorisations qui respecte la bonne pratique consistant à appliquer les autorisations de moindre privilège.

   Pour obtenir des instructions, consultez [Création d’un ensemble d’autorisations](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

1. Attribuez des utilisateurs à un groupe, puis attribuez un accès par authentification unique au groupe.

   Pour obtenir des instructions, consultez [Ajout de groupes](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

#### Octroi d’un accès par programmation
<a name="setting-up-access-gs-11"></a>

Les utilisateurs ont besoin d'un accès programmatique s'ils souhaitent interagir avec AWS l'extérieur du AWS Management Console. La manière d'accorder un accès programmatique dépend du type d'utilisateur qui y accède AWS.

Pour accorder aux utilisateurs un accès programmatique, choisissez l’une des options suivantes.


****  

| Quel utilisateur a besoin d’un accès programmatique ? | À | Méthode | 
| --- | --- | --- | 
| IAM | (Recommandé) Utilisez les informations d'identification de la console comme informations d'identification temporaires pour signer les demandes programmatiques adressées au AWS CLI AWS SDKs, ou AWS APIs. |  Suivez les instructions de l’interface que vous souhaitez utiliser. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)  | 
|  Identité de la main-d’œuvre (Utilisateurs gérés dans IAM Identity Center)  | Utilisez des informations d'identification temporaires pour signer les demandes programmatiques adressées au AWS CLI AWS SDKs, ou AWS APIs. |  Suivez les instructions de l’interface que vous souhaitez utiliser. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)  | 
| IAM | Utilisez des informations d'identification temporaires pour signer les demandes programmatiques adressées au AWS CLI AWS SDKs, ou AWS APIs. | Suivez les instructions de la section [Utilisation d'informations d'identification temporaires avec AWS les ressources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) du Guide de l'utilisateur IAM. | 
| IAM | (Non recommandé)Utilisez des informations d'identification à long terme pour signer des demandes programmatiques adressées au AWS CLI AWS SDKs, ou AWS APIs. |  Suivez les instructions de l’interface que vous souhaitez utiliser. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)  | 

#### Étape suivante
<a name="earlier-gs-1_11-setting-up-next-step-2"></a>

[Configurez le AWS Command Line Interface (AWS CLI)](#earlier-gs-1_11-setup-awscli)

### Étape 2 : configurer le AWS Command Line Interface (AWS CLI)
<a name="earlier-gs-1_11-setup-awscli"></a>

Au cours de cette étape, vous allez télécharger et configurer le AWS CLI à utiliser avec le service géré pour Apache Flink.

**Note**  
Les exercices de mise en route de ce guide supposent que vous utilisez les informations d’identification d’administrateur (`adminuser`) de votre compte pour effectuer les opérations.

**Note**  
Si vous l'avez déjà AWS CLI installé, vous devrez peut-être effectuer une mise à niveau pour bénéficier des dernières fonctionnalités. Pour plus d’informations, consultez [Installation d’ AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) dans le *Guide de l’utilisateur AWS Command Line Interface *. Pour vérifier la version du AWS CLI, exécutez la commande suivante :  

```
aws --version
```
Les exercices présentés dans ce didacticiel nécessitent la AWS CLI version suivante ou une version ultérieure :  

```
aws-cli/1.16.63
```

**Pour configurer le AWS CLI**

1. Téléchargez et configurez l’interface AWS CLI. Pour obtenir des instructions, consultez les rubriques suivantes dans le *Guide de l’utilisateur de l’interface AWS Command Line Interface * : 
   + [Installation de AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)
   + [Configuration de l’interface AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-earlier-gs-1_11.html) (français non garanti)

1. Ajoutez un profil nommé pour l'utilisateur administrateur dans le AWS CLI `config` fichier. Vous utiliserez ce profil lorsque vous exécuterez les commandes AWS CLI . Pour plus d'informations sur les profils nommés, consultez la rubrique [Profils nommés](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html) dans le *Guide de l'utilisateur AWS Command Line Interface *.

   ```
   [profile adminuser]
   aws_access_key_id = adminuser access key ID
   aws_secret_access_key = adminuser secret access key
   region = aws-region
   ```

   Pour obtenir la liste des AWS régions disponibles, consultez la section [Régions et points de terminaison](https://docs.aws.amazon.com/general/latest/gr/rande.html) dans le *Référence générale d'Amazon Web Services*.
**Note**  
Les exemples de code et de commandes présentés dans ce didacticiel utilisent la région USA Ouest (Oregon). Pour utiliser une autre région, remplacez la région dans le code et les commandes de ce didacticiel par la région que vous souhaitez utiliser.

1. Vérifiez la configuration en saisissant la commande d’aide suivante à l’invite de commande : 

   ```
   aws help
   ```

Après avoir configuré un AWS compte AWS CLI, vous pouvez passer à l'exercice suivant, dans lequel vous configurez un exemple d'application et testez la end-to-end configuration.

#### Étape suivante
<a name="earlier-gs-1_11-setup-awscli-next-step-3"></a>

[Étape 3 : créer et exécuter un service géré pour l'application Apache Flink](#earlier-gs-1_11-get-started-exercise)

### Étape 3 : créer et exécuter un service géré pour l'application Apache Flink
<a name="earlier-gs-1_11-get-started-exercise"></a>

Dans cet exercice, vous allez créer une application de service géré pour Apache Flink avec des flux de données comme source et comme récepteur.

**Topics**
+ [Création de deux flux de données Amazon Kinesis](#earlier-gs-1_11-get-started-exercise-1)
+ [Écrire des exemples d'enregistrements dans le flux d'entrée](#earlier-gs-1_11-get-started-exercise-2)
+ [Téléchargez et examinez le code Java de streaming d'Apache Flink](#earlier-gs-1_11-get-started-exercise-5)
+ [Compilez le code de l'application](#earlier-gs-1_11-get-started-exercise-5.5)
+ [Téléchargez le code Java de streaming Apache Flink](#earlier-gs-1_11-get-started-exercise-6)
+ [Création et exécution du service géré pour l'application Apache Flink](#earlier-gs-1_11-get-started-exercise-7)
+ [Étape suivante](#earlier-gs-1_11-get-started-exercise-next-step-4)

#### Création de deux flux de données Amazon Kinesis
<a name="earlier-gs-1_11-get-started-exercise-1"></a>

Avant de créer une application de service géré pour Apache Flink dans le cadre de cet exercice, commencez par créer deux flux de données Kinesis (`ExampleInputStream` et `ExampleOutputStream`). Votre application utilise ces flux pour les flux source et de destination de l’application.

Vous pouvez créer ces flux à l’aide de la console Amazon Kinesis ou de la commande AWS CLI suivante. Pour obtenir des instructions sur la console, consultez [Création et mise à jour de flux de données](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) dans le *Guide du développeur Amazon Kinesis Data Streams*. 

**Pour créer les flux de données (AWS CLI)**

1. Pour créer le premier flux (`ExampleInputStream`), utilisez la commande Amazon Kinesis `create-stream` AWS CLI suivante.

   ```
   $ aws kinesis create-stream \
   --stream-name ExampleInputStream \
   --shard-count 1 \
   --region us-west-2 \
   --profile adminuser
   ```

1. Pour créer le second flux utilisé par l’application pour écrire la sortie, exécutez la même commande en remplaçant le nom du flux par `ExampleOutputStream`.

   ```
   $ aws kinesis create-stream \
   --stream-name ExampleOutputStream \
   --shard-count 1 \
   --region us-west-2 \
   --profile adminuser
   ```

#### Écrire des exemples d'enregistrements dans le flux d'entrée
<a name="earlier-gs-1_11-get-started-exercise-2"></a>

Dans cette section, vous utilisez un script Python pour écrire les exemples d’enregistrements dans le flux pour que l’application les traite.

**Note**  
Cette section nécessite le kit [AWS SDK pour Python (Boto)](https://aws.amazon.com/sdk-for-python/).

1. Créez un fichier nommé `stock.py` avec le contenu suivant :

   ```
    
   import datetime
   import json
   import random
   import boto3
   
   STREAM_NAME = "ExampleInputStream"
   
   
   def get_data():
       return {
           "EVENT_TIME": datetime.datetime.now().isoformat(),
           "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]),
           "PRICE": round(random.random() * 100, 2),
       }
   
   
   def generate(stream_name, kinesis_client):
       while True:
           data = get_data()
           print(data)
           kinesis_client.put_record(
               StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey"
           )
   
   
   if __name__ == "__main__":
       generate(STREAM_NAME, boto3.client("kinesis"))
   ```

1. Plus loin dans ce didacticiel, vous exécutez le script `stock.py` pour envoyer des données à l’application. 

   ```
   $ python stock.py
   ```

#### Téléchargez et examinez le code Java de streaming d'Apache Flink
<a name="earlier-gs-1_11-get-started-exercise-5"></a>

Le code de l'application Java pour cet exemple est disponible sur GitHub. Pour télécharger le code d’application, procédez comme suit :

1. Cloner le référentiel distant à l’aide de la commande suivante :

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Accédez au répertoire `amazon-kinesis-data-analytics-java-examples/GettingStarted`.

Notez les informations suivantes à propos du code d’application :
+ Un fichier de [modèle d’objet du projet (pom.xml)](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) contient des informations sur la configuration et les dépendances de l’application, y compris les bibliothèques du service géré pour Apache Flink.
+ Le fichier `BasicStreamingJob.java` contient la méthode `main` qui définit la fonctionnalité de l’application.
+ L’application utilise une source Kinesis pour lire à partir du flux source. L’extrait de code suivant crée la source Kinesis :

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ Votre application crée les connecteurs source et récepteur pour accéder aux ressources externes à l’aide d’un objet `StreamExecutionEnvironment`. 
+ L’application crée les connecteurs source et récepteur à l’aide de propriétés statiques. Pour utiliser les propriétés de l’application dynamique, utilisez les méthodes `createSourceFromApplicationProperties` et `createSinkFromApplicationProperties` pour créer les connecteurs. Ces méthodes lisent les propriétés de l’application pour configurer les connecteurs.

  Pour de plus amples informations sur les propriétés d’exécution, consultez [Utiliser les propriétés d'exécution](how-properties.md).

#### Compilez le code de l'application
<a name="earlier-gs-1_11-get-started-exercise-5.5"></a>

Dans cette section, vous allez utiliser le compilateur Apache Maven pour créer le code Java pour l’application. Pour obtenir des informations sur l’installation d’Apache Maven et sur le kit de développement Java (JDK), consultez [Remplir les conditions préalables pour terminer les exercices](getting-started.md#setting-up-prerequisites).

**Pour compiler le code d’application**

1. Pour utiliser votre code d’application, vous le compilez et l’intégrez dans un fichier JAR. Vous pouvez compiler et intégrer votre code de deux manières :
   + À l’aide de l’outil de ligne de commande Maven. Créez votre fichier JAR en exécutant la commande suivante dans le répertoire qui contient le fichier `pom.xml` :

     ```
     mvn package -Dflink.version=1.11.3
     ```
   + À l’aide de votre environnement de développement. Consultez la documentation de votre environnement de développement pour plus de détails.
**Note**  
Le code source fourni repose sur les bibliothèques de Java 11. Assurez-vous que la version Java de votre projet est la version 11.

   Vous pouvez charger votre package en tant que fichier JAR, ou compresser le package et le charger en tant que fichier ZIP. Si vous créez votre application à l'aide du AWS CLI, vous spécifiez le type de contenu de votre code (JAR ou ZIP).

1. En cas d’erreur lors de la compilation, vérifiez que votre variable d’environnement `JAVA_HOME` est correctement définie.

Si la compilation de l’application aboutit, le fichier suivant est créé :

`target/aws-kinesis-analytics-java-apps-1.0.jar`

#### Téléchargez le code Java de streaming Apache Flink
<a name="earlier-gs-1_11-get-started-exercise-6"></a>

Dans cette section, vous allez créer un compartiment Amazon Simple Storage Service (Amazon S3) et charger votre code d'application.

**Pour charger le code d’application**

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez **Créer un compartiment**.

1. Saisissez **ka-app-code-*<username>*** dans le champ **Nom du compartiment**. Ajoutez un suffixe au nom du compartiment, par exemple votre nom d’utilisateur, pour qu’il soit unique. Choisissez **Suivant**.

1. À l’étape **Configurer les options**, conservez les paramètres, puis choisissez **Suivant**.

1. À l’étape **Définir des autorisations**, conservez les paramètres, puis choisissez **Suivant**.

1. Choisissez **Créer un compartiment**.

1. Dans la console Amazon S3, choisissez le *<username>* compartiment **ka-app-code-**, puis **Upload**.

1. À l’étape **Sélectionner les fichiers**, choisissez **Ajouter des fichiers**. Accédez au fichier `aws-kinesis-analytics-java-apps-1.0.jar` que vous avez créé à l’étape précédente. Choisissez **Suivant**.

1. Vous n’avez pas besoin de modifier les paramètres de l’objet, donc choisissez **Charger**.

Votre code d’application est désormais stocké dans un compartiment Amazon S3 auquel votre application peut accéder.

#### Création et exécution du service géré pour l'application Apache Flink
<a name="earlier-gs-1_11-get-started-exercise-7"></a>

Vous pouvez créer et exécuter une application de service géré pour Apache Flink à l’aide de la console ou de l’interface AWS CLI.

**Note**  
Lorsque vous créez l'application à l'aide de la console, vos ressources Gestion des identités et des accès AWS (IAM) et Amazon CloudWatch Logs sont créées pour vous. Lorsque vous créez l'application à l'aide du AWS CLI, vous créez ces ressources séparément.

**Topics**
+ [Création et exécution de l'application (console)](#earlier-gs-1_11-get-started-exercise-7-console)
+ [Créez et exécutez l'application (AWS CLI)](#earlier-gs-1_11-get-started-exercise-7-cli)

##### Création et exécution de l'application (console)
<a name="earlier-gs-1_11-get-started-exercise-7-console"></a>

Suivez ces étapes pour créer, configurer, mettre à jour et exécuter l’application à l’aide de la console.

##### Pour créer l’application
<a name="earlier-gs-1_11-get-started-exercise-7-console-create"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le tableau de bord du service géré pour Apache Flink, choisissez **Créer une application d’analyse**.

1. Sur la page **Service géré pour Apache Flink - Créer une application**, fournissez les détails de l’application comme suit :
   + Pour **Nom de l’application**, saisissez **MyApplication**.
   + Pour **Description**, saisissez **My java test app**.
   + Pour **Exécution**, choisissez **Apache Flink**.
   + Laissez le menu déroulant de la version sur **Apache Flink version 1.11 (version recommandée)**.

1. Pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM) `kinesis-analytics-MyApplication-us-west-2`**.

1. Choisissez **Créer une application**.

**Note**  
Lorsque vous créez une application de service géré pour Apache Flink à l’aide de la console, vous avez la possibilité de créer un rôle et une politique IAM pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces ressources IAM sont nommées en utilisant le nom de votre application et la région, comme suit :  
Stratégie : `kinesis-analytics-service-MyApplication-us-west-2`
Rôle : `kinesisanalytics-MyApplication-us-west-2`

##### Modifier la politique IAM
<a name="earlier-gs-1_11-get-started-exercise-7-console-iam"></a>

Modifiez la politique IAM pour ajouter des autorisations afin d'accéder aux flux de données Kinesis.

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Choisissez **Stratégies**. Choisissez la politique **`kinesis-analytics-service-MyApplication-us-west-2`** créée pour vous par la console dans la section précédente. 

1. Sur la page **Récapitulatif**, choisissez **Modifier la politique**. Sélectionnez l’onglet **JSON**.

1. Ajoutez la section mise en surbrillance dans l’exemple de stratégie suivant à la politique. Remplacez le compte d'exemple IDs (*012345678901*) par votre identifiant de compte.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-username/aws-kinesis-analytics-java-apps-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Configuration de l'application
<a name="earlier-gs-1_11-get-started-exercise-7-console-configure"></a>

1. Sur la **MyApplication**page, choisissez **Configurer**.

1. Sur la page **Configurer l’application**, indiquez l’**emplacement du code**:
   + Pour le compartiment **Amazon S3**, saisissez **ka-app-code-*<username>***.
   + Pour le **chemin de l'objet Amazon S3**, saisissez **aws-kinesis-analytics-java-apps-1.0.jar**.

1. Sous **Accéder aux ressources de l’application**, pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM `kinesis-analytics-MyApplication-us-west-2`**.

1. Sous **Propriétés**, pour **ID de groupe**, saisissez **ProducerConfigProperties**.

1. Entrez les valeurs et propriétés d’application suivantes :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

1. Sous **Surveillance**, assurez-vous que **Surveillance du niveau des métriques** est défini sur **Application**.

1. Pour la **CloudWatch journalisation**, cochez la case **Activer**.

1. Choisissez **Mettre à jour**.

**Note**  
Lorsque vous choisissez d'activer la CloudWatch journalisation Amazon, Managed Service for Apache Flink crée un groupe de journaux et un flux de journaux pour vous. Les noms de ces ressources sont les suivants :   
Groupe de journaux : `/aws/kinesis-analytics/MyApplication`
Flux de journaux : `kinesis-analytics-log-stream`

##### Exécutez l'application
<a name="earlier-gs-1_11-get-started-exercise-7-console-run"></a>

Le graphique des tâches Flink peut être visualisé en exécutant l’application, en ouvrant le tableau de bord Apache Flink et en choisissant la tâche Flink souhaitée.

##### Arrêtez l'application
<a name="earlier-gs-1_11-get-started-exercise-7-console-stop"></a>

Sur la **MyApplication**page, choisissez **Stop**. Confirmez l’action.

##### Mise à jour de l'application
<a name="earlier-gs-1_11-get-started-exercise-7-console-update"></a>

À l’aide de la console, vous pouvez mettre à jour les paramètres d’application tels que les paramètres de surveillance, les propriétés d’application et l’emplacement ou le nom du fichier JAR de l’application. Vous pouvez également recharger le fichier JAR de l'application à partir du compartiment Amazon S3 si vous avez besoin de mettre à jour le code de l'application.

Sur la **MyApplication**page, choisissez **Configurer**. Mettez à jour les paramètres de l’application, puis choisissez **Mettre à jour**.

##### Créez et exécutez l'application (AWS CLI)
<a name="earlier-gs-1_11-get-started-exercise-7-cli"></a>

Dans cette section, vous utilisez le AWS CLI pour créer et exécuter l'application Managed Service for Apache Flink. Un service géré pour Apache Flink utilise la `kinesisanalyticsv2` AWS CLI commande pour créer et interagir avec le service géré pour les applications Apache Flink.

##### Créer une stratégie d’autorisations
<a name="earlier-gs-1_11-get-started-exercise-7-cli-policy"></a>

**Note**  
Vous devez créer une stratégie d’autorisations et un rôle pour votre application. Si vous ne créez pas ces ressources IAM, votre application ne peut pas accéder à ses flux de données et de journaux.

Vous commencez par créer une stratégie d’autorisations avec deux instructions : une qui accorde des autorisations pour l’action `read` sur le flux source et une autre qui accorde des autorisations pour les actions `write` sur le flux récepteur. Vous attachez ensuite la politique à un rôle IAM (que vous allez créer dans la section suivante). Ainsi, lorsque le service géré pour Apache Flink assume le rôle, le service dispose des autorisations nécessaires pour lire à partir du flux source et écrire dans le flux récepteur.

Utilisez le code suivant pour créer la politique d’autorisations `AKReadSourceStreamWriteSinkStream`. Remplacez `username` par le nom d’utilisateur que vous avez utilisé pour créer le compartiment Amazon S3 pour stocker le code d’application. Remplacez l'ID de compte dans Amazon Resource Names (ARNs) (`012345678901`) par votre identifiant de compte.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": ["arn:aws:s3:::ka-app-code-username",
                "arn:aws:s3:::ka-app-code-username/*"
            ]
        },
        {
            "Sid": "ReadInputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
        },
        {
            "Sid": "WriteOutputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
        }
    ]
}
```

------

Pour step-by-step obtenir des instructions sur la création d'une politique d'autorisations, voir [Tutoriel : créer et joindre votre première politique gérée par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) dans le *guide de l'utilisateur IAM*.

**Note**  
Pour accéder à d’autres services Amazon, vous pouvez utiliser le AWS SDK pour Java. Le service géré pour Apache Flink définit automatiquement les informations d’identification requises par le kit SDK en fonction du rôle IAM d’exécution du service associé à votre application. Aucune étape supplémentaire n’est nécessaire.

##### Créer un rôle IAM
<a name="earlier-gs-1_11-get-started-exercise-7-cli-role"></a>

Dans cette section, vous créez un rôle IAM que l’application de service géré pour Apache Flink peut assumer pour lire un flux source et écrire dans le flux récepteur.

Le service géré pour Apache Flink ne peut pas accéder à votre flux sans autorisation. Vous utilisez un rôle IAM pour accorder ces autorisations. Deux politiques sont attachées à chaque rôle IAM. La politique d’approbation accorde au service géré pour Apache Flink l’autorisation d’assumer le rôle, et la politique d’autorisation détermine ce que le service géré pour Apache Flink peut faire après avoir assumé le rôle.

Vous attachez la politique d’autorisations que vous avez créée dans la section précédente à ce rôle.

**Pour créer un rôle IAM**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le volet de navigation, choisissez **Rôles**, puis **Créer un rôle**.

1. Sous **Sélectionner le type d'identité approuvée**, choisissez **Service AWS **. Sous **Choisir le service qui utilisera ce rôle**, choisissez **EC2**. Sous **Sélectionner votre cas d’utilisation**, choisissez **Kinesis Analytics**.

   Choisissez **Suivant : Autorisations**.

1. Dans la page **Attacher des stratégies d’autorisations**, choisissez **Suivant : vérification**. Vous attachez des stratégies d’autorisations après avoir créé le rôle.

1. Sur la page **Créer un rôle**, saisissez **MF-stream-rw-role** pour le **Nom du rôle**. Sélectionnez **Créer un rôle**.

   Vous venez de créer un nouveau rôle IAM appelé `MF-stream-rw-role`. Ensuite, vous mettez à jour les stratégies d’approbation et d’autorisation pour le rôle.

1. Attachez la politique d’autorisation au rôle.
**Note**  
Dans le cadre de cet exercice, le service géré pour Apache Flink assume ce rôle à la fois pour la lecture des données à partir d’un flux de données Kinesis (source) et pour l’écriture des résultats dans un autre flux de données Kinesis. Vous attachez donc la politique que vous avez créée à l’étape précédente, [Créer une stratégie d’autorisations](#earlier-gs-1_11-get-started-exercise-7-cli-policy).

   1. Sur la page **Récapitulatif**, choisissez l’onglet **Autorisations**.

   1. Choisissez **Attacher des stratégies**.

   1. Dans la zone de recherche, saisissez **AKReadSourceStreamWriteSinkStream** (la politique que vous avez créée dans la section précédente).

   1. Sélectionnez la politique **AKReadSourceStreamWriteSinkStream**, puis **Attacher une stratégie**.

Vous avez maintenant créé le rôle d’exécution de service que votre application utilise pour accéder aux ressources. Notez l’ARN du nouveau rôle.

Pour step-by-step obtenir des instructions sur la création d'un rôle, consultez la section [Création d'un rôle IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) dans le guide de l'*utilisateur IAM*.

##### Création du service géré pour l'application Apache Flink
<a name="earlier-gs-1_11-get-started-exercise-7-cli-create"></a>

1. Copiez le code JSON suivant dans un fichier nommé `create_request.json`. Remplacez l’exemple d’ARN du rôle par l’ARN du rôle que vous avez créé précédemment. Remplacez le suffixe de l’ARN du compartiment (`username`) par le suffixe que vous avez choisi dans la section précédente. Remplacez l’exemple d’ID de compte (`012345678901`) dans le rôle d’exécution de service par votre ID de compte.

   ```
   {
       "ApplicationName": "test",
       "ApplicationDescription": "my java test app",
       "RuntimeEnvironment": "FLINK-1_11",
       "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
       "ApplicationConfiguration": {
           "ApplicationCodeConfiguration": {
               "CodeContent": {
                   "S3ContentLocation": {
                       "BucketARN": "arn:aws:s3:::ka-app-code-username",
                       "FileKey": "aws-kinesis-analytics-java-apps-1.0.jar"
                   }
               },
               "CodeContentType": "ZIPFILE"
           },
           "EnvironmentProperties":  { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
       }
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) avec la demande précédente pour créer l’application : 

   ```
   aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
   ```

L’application est maintenant créée. Vous démarrez l’application dans l’étape suivante.

##### Lancez l'application
<a name="earlier-gs-1_11-get-started-exercise-7-cli-start"></a>

Dans cette section, vous utilisez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) pour démarrer l’application.

**Pour démarrer l’application**

1. Copiez le code JSON suivant dans un fichier nommé `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) avec la demande précédente pour démarrer l’application :

   ```
   aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
   ```

L’application est maintenant en cours d’exécution. Vous pouvez consulter les métriques du service géré pour Apache Flink sur la CloudWatch console Amazon pour vérifier que l'application fonctionne.

##### Arrêtez l'application
<a name="earlier-gs-1_11-get-started-exercise-7-cli-stop"></a>

Dans cette section, vous allez utiliser l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) pour arrêter l’application.

**Pour arrêter l’application**

1. Copiez le code JSON suivant dans un fichier nommé `stop_request.json`.

   ```
   {
       "ApplicationName": "test"
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) avec la demande suivante pour arrêter l’application :

   ```
   aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
   ```

L’application est maintenant arrêtée.

##### Ajouter une option de CloudWatch journalisation
<a name="earlier-gs-1_11-get-started-exercise-7-cli-cw"></a>

Vous pouvez utiliser le AWS CLI pour ajouter un flux de CloudWatch journal Amazon à votre application. Pour plus d'informations sur l'utilisation de CloudWatch Logs avec votre application, consultez[Configurer la journalisation des applications dans le service géré pour Apache Flink](cloudwatch-logs.md).

##### Mettre à jour les propriétés d'environnement
<a name="earlier-gs-1_11-get-started-exercise-7-cli-update-env"></a>

Dans cette section, vous utilisez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) pour modifier les propriétés d’environnement de l’application sans recompiler le code de l’application. Dans cet exemple, vous modifiez la région des flux source et de destination.

**Pour mettre à jour des propriétés d’environnement pour l’application**

1. Copiez le code JSON suivant dans un fichier nommé `update_properties_request.json`.

   ```
   {"ApplicationName": "test",
      "CurrentApplicationVersionId": 1,
      "ApplicationConfigurationUpdate": { 
         "EnvironmentPropertyUpdates": { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
      }
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) avec la demande précédente pour mettre à jour les propriétés de l’environnement :

   ```
   aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
   ```

##### Mise à jour du code de l’application
<a name="earlier-gs-1_11-get-started-exercise-7-cli-update-code"></a>

Lorsque vous devez mettre à jour le code de votre application avec une nouvelle version de votre package de code, vous utilisez l'[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) AWS CLI action.

**Note**  
Pour charger une nouvelle version du code de l’application portant le même nom de fichier, vous devez spécifier la nouvelle version de l’objet. Pour de plus amples informations sur l’utilisation des versions d’objet Amazon S3, consultez [Activation et désactivation de la gestion des versions](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

Pour l'utiliser AWS CLI, supprimez votre ancien package de code de votre compartiment Amazon S3, téléchargez la nouvelle version et appelez `UpdateApplication` en spécifiant le même compartiment Amazon S3 et le même nom d'objet, ainsi que la nouvelle version de l'objet. L’application redémarrera avec le nouveau package de code.

L’exemple de demande d’action `UpdateApplication` suivant recharge le code de l’application et redémarre l’application. Mettez à jour l’`CurrentApplicationVersionId` à la version actuelle de l’application. Vous pouvez vérifier la version actuelle de l’application à l’aide des actions `ListApplications` ou `DescribeApplication`. Mettez à jour le suffixe du nom du compartiment (*<username>*) avec le suffixe que vous avez choisi dans la [Création de deux flux de données Amazon Kinesis](#earlier-gs-1_11-get-started-exercise-1) section.

```
{
    "ApplicationName": "test",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username",
                    "FileKeyUpdate": "aws-kinesis-analytics-java-apps-1.0.jar",
                    "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU"
                }
            }
        }
    }
}
```

#### Étape suivante
<a name="earlier-gs-1_11-get-started-exercise-next-step-4"></a>

[Étape 4 : Nettoyer les AWS ressources](#earlier-gs-1_11-cleanup)

### Étape 4 : Nettoyer les AWS ressources
<a name="earlier-gs-1_11-cleanup"></a>

Cette section inclut les procédures de nettoyage AWS des ressources créées dans le didacticiel Getting Started.

**Topics**
+ [Supprimer votre application Managed Service for Apache Flink](#earlier-gs-1_11-cleanup-app)
+ [Supprimer vos flux de données Kinesis](#earlier-gs-1_11-cleanup-stream)
+ [Supprimer votre objet et votre compartiment Amazon S3](#earlier-gs-1_11-cleanup-s3)
+ [Supprimer quatre ressources IAM](#earlier-gs-1_11-cleanup-iam)
+ [Supprimer vos CloudWatch ressources](#earlier-gs-1_11-cleanup-cw)
+ [Étape suivante](#earlier-gs-1_11-cleanup-next-step-5)

#### Supprimer votre application Managed Service for Apache Flink
<a name="earlier-gs-1_11-cleanup-app"></a>

1. [Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Dans le panneau Managed Service for Apache Flink, choisissez **MyApplication**.

1. Sur la page de l’application, choisissez **Supprimer**, puis confirmez la suppression.

#### Supprimer vos flux de données Kinesis
<a name="earlier-gs-1_11-cleanup-stream"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le panneau Kinesis Data Streams, **ExampleInputStream**sélectionnez.

1. Sur la **ExampleInputStream**page, choisissez **Supprimer Kinesis Stream**, puis confirmez la suppression.

1. Sur la page **Kinesis Streams**, choisissez le **ExampleOutputStream**, choisissez **Actions**, choisissez **Supprimer**, puis confirmez la suppression.

#### Supprimer votre objet et votre compartiment Amazon S3
<a name="earlier-gs-1_11-cleanup-s3"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez le ***<username>*compartiment ka-app-code -.**

1. Choisissez **Supprimer**, puis saisissez le nombre du compartiment pour confirmer la suppression.

#### Supprimer quatre ressources IAM
<a name="earlier-gs-1_11-cleanup-iam"></a>

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans la barre de navigation, choisissez **Stratégies**.

1. Dans le contrôle du filtre, saisissez **kinesis**.

1. Choisissez la politique **kinesis-analytics-service- MyApplication -us-west-2**.

1. Choisissez **Actions de stratégie**, puis **Supprimer**.

1. Dans la barre de navigation, choisissez **Rôles**.

1. Choisissez le rôle **kinesis-analytics- MyApplication** -us-west-2.

1. Choisissez **Supprimer le rôle**, puis confirmez la suppression.

#### Supprimer vos CloudWatch ressources
<a name="earlier-gs-1_11-cleanup-cw"></a>

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans la barre de navigation, choisissez **Journaux**.

1. Choisissez le groupe**/aws/kinesis-analytics/MyApplication**log.

1. Choisissez **Supprimer le groupe de journaux**, puis confirmez la suppression.

#### Étape suivante
<a name="earlier-gs-1_11-cleanup-next-step-5"></a>

[Étape 5 : étapes suivantes](#earlier-gs-1_11-next-steps)

### Étape 5 : étapes suivantes
<a name="earlier-gs-1_11-next-steps"></a>

Maintenant que vous avez créé et exécuté une application de service géré de base pour Apache Flink, consultez les ressources suivantes pour des solutions de service géré plus avancées pour Apache Flink.
+ **[La solution de données de AWS streaming pour Amazon Kinesis](https://aws.amazon.com/solutions/implementations/aws-streaming-data-solution-for-amazon-kinesis/) :** La solution de données de AWS streaming pour Amazon Kinesis configure automatiquement AWS les services nécessaires pour capturer, stocker, traiter et diffuser facilement des données de streaming. La solution propose plusieurs options pour résoudre les problèmes d’utilisation de données en streaming. L'option Managed Service for Apache Flink fournit un exemple de end-to-end streaming ETL illustrant une application réelle qui exécute des opérations analytiques sur des données de taxis simulées à New York. La solution met en place toutes les AWS ressources nécessaires, telles que les rôles et les politiques IAM, un CloudWatch tableau de bord et des CloudWatch alarmes.
+ **[AWS Solution de données de streaming pour Amazon MSK](https://aws.amazon.com/solutions/implementations/aws-streaming-data-solution-for-amazon-msk/) :** La solution de données de AWS streaming pour Amazon MSK fournit des AWS CloudFormation modèles dans lesquels les données circulent entre les producteurs, le stockage en streaming, les consommateurs et les destinations. 
+ **[Clickstream Lab avec Apache Flink et Apache Kafka](https://amazonmsk-labs.workshop.aws/en/mskkdaflinklab.html)** : un laboratoire de bout en bout pour les cas d’utilisation d’Amazon Managed Streaming for Apache Kafka pour le stockage de streaming et le service géré pour Apache Flink pour les applications Apache Flink pour le traitement des flux.
+ **[Amazon Managed Service for Apache Flink Workshop](https://catalog.workshops.aws/managed-flink) :** dans cet atelier, vous allez créer une architecture de end-to-end streaming pour ingérer, analyser et visualiser les données de streaming en temps quasi réel. Vous avez décidé d’améliorer les opérations d’une compagnie de taxi à New York. Vous analysez les données de télémétrie d’une flotte de taxis à New York en temps quasi réel afin d’optimiser le fonctionnement de la flotte.
+ **[Learn Flink : Hands On Training](https://ci.apache.org/projects/flink/flink-docs-master/learn-flink/) :** formation d’introduction officielle à Apache Flink qui vous permet de commencer à écrire des applications ETL, analytiques et axées sur les événements évolutives pour le streaming.
**Note**  
Sachez que le service géré pour Apache Flink ne prend pas en charge la version Apache Flink (1.12) utilisée dans cette formation. Vous pouvez utiliser Flink 1.15.2 dans le service géré Flink pour Apache Flink.
+ **[Exemples de code Apache Flink](https://github.com/apache/flink/tree/master/flink-examples/flink-examples-streaming/src/main/java/org/apache/flink/streaming/examples) :** GitHub référentiel contenant une grande variété d'exemples d'applications Apache Flink. 

## Pour démarrer : Flink 1.8.2 - obsolète
<a name="earlier-gs-1_8"></a>

**Note**  
Les versions **1.6, 1.8 et 1.11** d'Apache Flink ne sont pas prises en charge par la communauté Apache Flink depuis plus de trois ans. Nous prévoyons de rendre ces versions obsolètes dans Amazon Managed Service pour Apache Flink le **5 novembre 2024**. À partir de cette date, vous ne pourrez plus créer de nouvelles applications pour ces versions de Flink. Vous pouvez continuer à exécuter les applications existantes pour le moment. Vous pouvez mettre à niveau vos applications de manière dynamique à l'aide de la fonctionnalité de mise à niveau de version sur place d'Amazon Managed Service pour Apache Flink. Pour plus d'informations, consultez. [Utiliser des mises à niveau de version sur place pour Apache Flink](how-in-place-version-upgrades.md)

Cette rubrique contient une version du [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md) didacticiel qui utilise Apache Flink 1.8.2.

**Topics**
+ [Composants du service géré pour l'application Apache Flink](#getting-started-components)
+ [Conditions préalables pour terminer les exercices](#su-1_8-prerequisites)
+ [Étape 1 : configurer un AWS compte et créer un utilisateur administrateur](#earlier-gs-1_8-setting-up)
+ [Étape 2 : configurer le AWS Command Line Interface (AWS CLI)](#su-1_8-awscli)
+ [Étape 3 : créer et exécuter un service géré pour l'application Apache Flink](#earlier-gs-1_8-exercise)
+ [Étape 4 : Nettoyer les AWS ressources](#earlier-gs-1_8-cleanup)

### Composants du service géré pour l'application Apache Flink
<a name="getting-started-components"></a>

Pour traiter les données, votre application Managed Service for Apache Flink utilise une application Java/Apache Maven ou Scala qui traite les entrées et produit des sorties à l'aide du moteur d'exécution Apache Flink. 

Une application de service géré for Apache Flink comprend les composants suivants :
+ **Propriétés d’exécution :** vous pouvez utiliser les *propriétés d’exécution* pour configurer votre application sans recompiler le code de votre application. 
+ **Source :** l’application consomme des données en utilisant une *source*. Un connecteur source lit les données d’un flux de données Kinesis, d’un compartiment Amazon S3, etc. Pour plus d’informations, consultez [Ajouter des sources de données de streaming](how-sources.md).
+ **Opérateurs :** l’application traite les données à l’aide d’un ou de plusieurs *opérateurs*. Un opérateur peut transformer, enrichir ou agréger des données. Pour plus d’informations, consultez [Opérateurs](how-operators.md).
+ **Récepteur :** l’application produit des données vers des sources externes à l’aide de *récepteurs*. Un connecteur récepteur écrit des données dans un flux de données Kinesis, un flux Firehose, un compartiment Amazon S3, etc. Pour de plus amples informations, veuillez consulter [Écrire des données à l'aide de récepteurs](how-sinks.md).

Après avoir créé, compilé et empaqueté votre code d’application, vous chargez le package de code dans un compartiment Amazon Simple Storage Service (Amazon S3). Vous créez ensuite une application de service géré pour Apache Flink. Vous transmettez l’emplacement du package de code, un flux de données Kinesis comme source de données de streaming et généralement un emplacement de streaming ou de fichier qui reçoit les données traitées par l’application.

### Conditions préalables pour terminer les exercices
<a name="su-1_8-prerequisites"></a>

Pour exécuter la procédure indiquée dans ce guide, vous devez disposer des éléments suivants :
+ [Kit de développement Java](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) (JDK) version 8. Définissez la variable d’environnement `JAVA_HOME` pour qu’elle pointe vers l’emplacement d’installation de votre JDK.
+ Pour utiliser le connecteur Kinesis Apache Flink dans ce didacticiel, vous devez télécharger et installer Apache Flink. Pour plus de détails, consultez [Utilisation du connecteur Apache Flink Kinesis Streams avec les versions précédentes d'Apache Flink](#how-creating-apps-building-kinesis).
+ Nous vous recommandons d’utiliser un environnement de développement (par exemple [Eclipse Java Neon](http://www.eclipse.org/downloads/packages/release/neon/3) ou [IntelliJ Idea](https://www.jetbrains.com/idea/)) pour développer et compiler votre application.
+ [Client Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). Installez le client Git si vous ne l’avez pas déjà fait.
+ [Apache Maven Compiler Plugin](https://maven.apache.org/plugins/maven-compiler-plugin/). Maven doit être installé dans votre chemin de travail. Pour tester votre installation Apache Maven, saisissez les informations suivantes :

  ```
  $ mvn -version
  ```

Pour démarrer, accédez à [Étape 1 : configurer un AWS compte et créer un utilisateur administrateur](#earlier-gs-1_8-setting-up).

### Étape 1 : configurer un AWS compte et créer un utilisateur administrateur
<a name="earlier-gs-1_8-setting-up"></a>

#### Inscrivez-vous pour un Compte AWS
<a name="sign-up-for-aws"></a>

Si vous n'en avez pas Compte AWS, procédez comme suit pour en créer un.

**Pour vous inscrire à un Compte AWS**

1. Ouvrez l'[https://portal.aws.amazon.com/billing/inscription.](https://portal.aws.amazon.com/billing/signup)

1. Suivez les instructions en ligne.

   Dans le cadre de la procédure d’inscription, vous recevrez un appel téléphonique ou un SMS et vous saisirez un code de vérification en utilisant le clavier numérique du téléphone.

   Lorsque vous vous inscrivez à un Compte AWS, un *Utilisateur racine d'un compte AWS*est créé. Par défaut, seul l’utilisateur racine a accès à l’ensemble des Services AWS et des ressources de ce compte. La meilleure pratique de sécurité consiste à attribuer un accès administratif à un utilisateur, et à utiliser uniquement l’utilisateur racine pour effectuer les [tâches nécessitant un accès utilisateur racine](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS vous envoie un e-mail de confirmation une fois le processus d'inscription terminé. À tout moment, vous pouvez consulter l'activité actuelle de votre compte et gérer votre compte en accédant à [https://aws.amazon.com/](https://aws.amazon.com/)et en choisissant **Mon compte**.

#### Création d’un utilisateur doté d’un accès administratif
<a name="create-an-admin"></a>

Une fois que vous vous êtes inscrit à un utilisateur administratif Compte AWS, que vous Utilisateur racine d'un compte AWS l'avez sécurisé AWS IAM Identity Center, que vous l'avez activé et que vous en avez créé un, afin de ne pas utiliser l'utilisateur root pour les tâches quotidiennes.

**Sécurisez votre Utilisateur racine d'un compte AWS**

1.  Connectez-vous en [AWS Management Console](https://console.aws.amazon.com/)tant que propriétaire du compte en choisissant **Utilisateur root** et en saisissant votre adresse Compte AWS e-mail. Sur la page suivante, saisissez votre mot de passe.

   Pour obtenir de l’aide pour vous connecter en utilisant l’utilisateur racine, consultez [Connexion en tant qu’utilisateur racine](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) dans le *Guide de l’utilisateur Connexion à AWS *.

1. Activez l’authentification multifactorielle (MFA) pour votre utilisateur racine.

   Pour obtenir des instructions, consultez la section [Activer un périphérique MFA virtuel pour votre utilisateur Compte AWS root (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) dans le guide de l'utilisateur *IAM*.

**Création d’un utilisateur doté d’un accès administratif**

1. Activez IAM Identity Center.

   Pour obtenir des instructions, consultez [Activation d’ AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

1. Dans IAM Identity Center, octroyez un accès administratif à un utilisateur.

   Pour un didacticiel sur l'utilisation du Répertoire IAM Identity Center comme source d'identité, voir [Configurer l'accès utilisateur par défaut Répertoire IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) dans le *Guide de AWS IAM Identity Center l'utilisateur*.

**Connexion en tant qu’utilisateur doté d’un accès administratif**
+ Pour vous connecter avec votre utilisateur IAM Identity Center, utilisez l’URL de connexion qui a été envoyée à votre adresse e-mail lorsque vous avez créé l’utilisateur IAM Identity Center.

  Pour obtenir de l'aide pour vous connecter en utilisant un utilisateur d'IAM Identity Center, consultez la section [Connexion au portail AWS d'accès](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) dans le *guide de l'Connexion à AWS utilisateur*.

**Attribution d’un accès à d’autres utilisateurs**

1. Dans IAM Identity Center, créez un ensemble d’autorisations qui respecte la bonne pratique consistant à appliquer les autorisations de moindre privilège.

   Pour obtenir des instructions, consultez [Création d’un ensemble d’autorisations](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

1. Attribuez des utilisateurs à un groupe, puis attribuez un accès par authentification unique au groupe.

   Pour obtenir des instructions, consultez [Ajout de groupes](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

#### Octroi d’un accès par programmation
<a name="setting-up-access-gs-8"></a>

Les utilisateurs ont besoin d'un accès programmatique s'ils souhaitent interagir avec AWS l'extérieur du AWS Management Console. La manière d'accorder un accès programmatique dépend du type d'utilisateur qui y accède AWS.

Pour accorder aux utilisateurs un accès programmatique, choisissez l’une des options suivantes.


****  

| Quel utilisateur a besoin d’un accès programmatique ? | À | Méthode | 
| --- | --- | --- | 
| IAM | (Recommandé) Utilisez les informations d'identification de la console comme informations d'identification temporaires pour signer les demandes programmatiques adressées au AWS CLI AWS SDKs, ou AWS APIs. |  Suivez les instructions de l’interface que vous souhaitez utiliser. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)  | 
|  Identité de la main-d’œuvre (Utilisateurs gérés dans IAM Identity Center)  | Utilisez des informations d'identification temporaires pour signer les demandes programmatiques adressées au AWS CLI AWS SDKs, ou AWS APIs. |  Suivez les instructions de l’interface que vous souhaitez utiliser. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)  | 
| IAM | Utilisez des informations d'identification temporaires pour signer les demandes programmatiques adressées au AWS CLI AWS SDKs, ou AWS APIs. | Suivez les instructions de la section [Utilisation d'informations d'identification temporaires avec AWS les ressources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) du Guide de l'utilisateur IAM. | 
| IAM | (Non recommandé)Utilisez des informations d'identification à long terme pour signer des demandes programmatiques adressées au AWS CLI AWS SDKs, ou AWS APIs. |  Suivez les instructions de l’interface que vous souhaitez utiliser. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)  | 

### Étape 2 : configurer le AWS Command Line Interface (AWS CLI)
<a name="su-1_8-awscli"></a>

Au cours de cette étape, vous allez télécharger et configurer le AWS CLI à utiliser avec le service géré pour Apache Flink.

**Note**  
Les exercices de mise en route de ce guide supposent que vous utilisez les informations d’identification d’administrateur (`adminuser`) de votre compte pour effectuer les opérations.

**Note**  
Si vous l'avez déjà AWS CLI installé, vous devrez peut-être effectuer une mise à niveau pour bénéficier des dernières fonctionnalités. Pour plus d’informations, consultez [Installation d’ AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) dans le *Guide de l’utilisateur AWS Command Line Interface *. Pour vérifier la version du AWS CLI, exécutez la commande suivante :  

```
aws --version
```
Les exercices présentés dans ce didacticiel nécessitent la AWS CLI version suivante ou une version ultérieure :  

```
aws-cli/1.16.63
```

**Pour configurer le AWS CLI**

1. Téléchargez et configurez l’interface AWS CLI. Pour obtenir des instructions, consultez les rubriques suivantes dans le *Guide de l’utilisateur de l’interface AWS Command Line Interface * : 
   + [Installation de AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)
   + [Configuration de l’interface AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) (français non garanti)

1. Ajoutez un profil nommé pour l'utilisateur administrateur dans le AWS CLI `config` fichier. Vous utiliserez ce profil lorsque vous exécuterez les commandes AWS CLI . Pour plus d'informations sur les profils nommés, consultez la rubrique [Profils nommés](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html) dans le *Guide de l'utilisateur AWS Command Line Interface *.

   ```
   [profile adminuser]
   aws_access_key_id = adminuser access key ID
   aws_secret_access_key = adminuser secret access key
   region = aws-region
   ```

   Pour obtenir la liste des régions disponibles, consultez [Régions et points de terminaison ](https://docs.aws.amazon.com/general/latest/gr/rande.html) dans la documentation *Référence générale d'Amazon Web Services*.
**Note**  
Les exemples de code et de commandes présentés dans ce didacticiel utilisent la région USA Ouest (Oregon). Pour utiliser une autre AWS région, remplacez la région dans le code et les commandes de ce didacticiel par la région que vous souhaitez utiliser.

1. Vérifiez la configuration en saisissant la commande d’aide suivante à l’invite de commande : 

   ```
   aws help
   ```

Après avoir configuré un AWS compte AWS CLI, vous pouvez passer à l'exercice suivant, dans lequel vous configurez un exemple d'application et testez la end-to-end configuration.

#### Étape suivante
<a name="su-1_8-awscli-next-step-3"></a>

[Étape 3 : créer et exécuter un service géré pour l'application Apache Flink](#earlier-gs-1_8-exercise)

### Étape 3 : créer et exécuter un service géré pour l'application Apache Flink
<a name="earlier-gs-1_8-exercise"></a>

Dans cet exercice, vous allez créer une application de service géré pour Apache Flink avec des flux de données comme source et comme récepteur.

**Topics**
+ [Création de deux flux de données Amazon Kinesis](#earlier-gs-1_8-exercise-1)
+ [Écrire des exemples d'enregistrements dans le flux d'entrée](#earlier-gs-1_8-exercise-2)
+ [Téléchargez et examinez le code Java de streaming d'Apache Flink](#earlier-gs-1_8-exercise-5)
+ [Compilez le code de l'application](#earlier-gs-1_8-exercise-5.5)
+ [Téléchargez le code Java de streaming Apache Flink](#earlier-gs-1_8-exercise-6)
+ [Création et exécution du service géré pour l'application Apache Flink](#earlier-gs-1_8-exercise-7)
+ [Étape suivante](#earlier-gs-1_8-exercise-next-step-4)

#### Création de deux flux de données Amazon Kinesis
<a name="earlier-gs-1_8-exercise-1"></a>

Avant de créer une application de service géré pour Apache Flink dans le cadre de cet exercice, commencez par créer deux flux de données Kinesis (`ExampleInputStream` et `ExampleOutputStream`). Votre application utilise ces flux pour les flux source et de destination de l’application.

Vous pouvez créer ces flux à l’aide de la console Amazon Kinesis ou de la commande AWS CLI suivante. Pour obtenir des instructions sur la console, consultez [Création et mise à jour de flux de données](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) dans le *Guide du développeur Amazon Kinesis Data Streams*. 

**Pour créer les flux de données (AWS CLI)**

1. Pour créer le premier flux (`ExampleInputStream`), utilisez la commande Amazon Kinesis `create-stream` AWS CLI suivante.

   ```
   $ aws kinesis create-stream \
   --stream-name ExampleInputStream \
   --shard-count 1 \
   --region us-west-2 \
   --profile adminuser
   ```

1. Pour créer le second flux utilisé par l’application pour écrire la sortie, exécutez la même commande en remplaçant le nom du flux par `ExampleOutputStream`.

   ```
   $ aws kinesis create-stream \
   --stream-name ExampleOutputStream \
   --shard-count 1 \
   --region us-west-2 \
   --profile adminuser
   ```

#### Écrire des exemples d'enregistrements dans le flux d'entrée
<a name="earlier-gs-1_8-exercise-2"></a>

Dans cette section, vous utilisez un script Python pour écrire les exemples d’enregistrements dans le flux pour que l’application les traite.

**Note**  
Cette section nécessite le kit [AWS SDK pour Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

1. Créez un fichier nommé `stock.py` avec le contenu suivant :

   ```
    
   import datetime
   import json
   import random
   import boto3
   
   STREAM_NAME = "ExampleInputStream"
   
   
   def get_data():
       return {
           "EVENT_TIME": datetime.datetime.now().isoformat(),
           "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]),
           "PRICE": round(random.random() * 100, 2),
       }
   
   
   def generate(stream_name, kinesis_client):
       while True:
           data = get_data()
           print(data)
           kinesis_client.put_record(
               StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey"
           )
   
   
   if __name__ == "__main__":
       generate(STREAM_NAME, boto3.client("kinesis"))
   ```

1. Plus loin dans ce didacticiel, vous exécutez le script `stock.py` pour envoyer des données à l’application. 

   ```
   $ python stock.py
   ```

#### Téléchargez et examinez le code Java de streaming d'Apache Flink
<a name="earlier-gs-1_8-exercise-5"></a>

Le code de l'application Java pour cet exemple est disponible sur GitHub. Pour télécharger le code d’application, procédez comme suit :

1. Cloner le référentiel distant à l’aide de la commande suivante :

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Accédez au répertoire `amazon-kinesis-data-analytics-java-examples/GettingStarted_1_8`.

Notez les informations suivantes à propos du code d’application :
+ Un fichier de [modèle d’objet du projet (pom.xml)](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) contient des informations sur la configuration et les dépendances de l’application, y compris les bibliothèques du service géré pour Apache Flink.
+ Le fichier `BasicStreamingJob.java` contient la méthode `main` qui définit la fonctionnalité de l’application.
+ L’application utilise une source Kinesis pour lire à partir du flux source. L’extrait de code suivant crée la source Kinesis :

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ Votre application crée les connecteurs source et récepteur pour accéder aux ressources externes à l’aide d’un objet `StreamExecutionEnvironment`. 
+ L’application crée les connecteurs source et récepteur à l’aide de propriétés statiques. Pour utiliser les propriétés de l’application dynamique, utilisez les méthodes `createSourceFromApplicationProperties` et `createSinkFromApplicationProperties` pour créer les connecteurs. Ces méthodes lisent les propriétés de l’application pour configurer les connecteurs.

  Pour de plus amples informations sur les propriétés d’exécution, consultez [Utiliser les propriétés d'exécution](how-properties.md).

#### Compilez le code de l'application
<a name="earlier-gs-1_8-exercise-5.5"></a>

Dans cette section, vous allez utiliser le compilateur Apache Maven pour créer le code Java pour l’application. Pour obtenir des informations sur l’installation d’Apache Maven et sur le kit de développement Java (JDK), consultez [Conditions préalables pour terminer les exercices](#su-1_8-prerequisites).

**Note**  
**Pour utiliser le connecteur Kinesis avec les versions d’Apache Flink antérieures à la version 1.11, vous devez télécharger, compiler et installer Apache Maven. Pour plus d'informations, consultez [Utilisation du connecteur Apache Flink Kinesis Streams avec les versions précédentes d'Apache Flink](#how-creating-apps-building-kinesis).**

**Pour compiler le code d’application**

1. Pour utiliser votre code d’application, vous le compilez et l’intégrez dans un fichier JAR. Vous pouvez compiler et intégrer votre code de deux manières :
   + À l’aide de l’outil de ligne de commande Maven. Créez votre fichier JAR en exécutant la commande suivante dans le répertoire qui contient le fichier `pom.xml` :

     ```
     mvn package -Dflink.version=1.8.2
     ```
   + À l’aide de votre environnement de développement. Consultez la documentation de votre environnement de développement pour plus de détails.
**Note**  
Le code source fourni repose sur les bibliothèques de Java 1.8. Assurez-vous que la version Java de votre projet est la version 1.8.

   Vous pouvez charger votre package en tant que fichier JAR, ou compresser le package et le charger en tant que fichier ZIP. Si vous créez votre application à l'aide du AWS CLI, vous spécifiez le type de contenu de votre code (JAR ou ZIP).

1. En cas d’erreur lors de la compilation, vérifiez que votre variable d’environnement `JAVA_HOME` est correctement définie.

Si la compilation de l’application aboutit, le fichier suivant est créé :

`target/aws-kinesis-analytics-java-apps-1.0.jar`

#### Téléchargez le code Java de streaming Apache Flink
<a name="earlier-gs-1_8-exercise-6"></a>

Dans cette section, vous allez créer un compartiment Amazon Simple Storage Service (Amazon S3) et charger votre code d'application.

**Pour charger le code d’application**

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez **Créer un compartiment**.

1. Saisissez **ka-app-code-*<username>*** dans le champ **Nom du compartiment**. Ajoutez un suffixe au nom du compartiment, par exemple votre nom d’utilisateur, pour qu’il soit unique. Choisissez **Suivant**.

1. À l’étape **Configurer les options**, conservez les paramètres, puis choisissez **Suivant**.

1. À l’étape **Définir des autorisations**, conservez les paramètres, puis choisissez **Suivant**.

1. Choisissez **Créer un compartiment**.

1. Dans la console Amazon S3, choisissez le *<username>* compartiment **ka-app-code-**, puis **Upload**.

1. À l’étape **Sélectionner les fichiers**, choisissez **Ajouter des fichiers**. Accédez au fichier `aws-kinesis-analytics-java-apps-1.0.jar` que vous avez créé à l’étape précédente. Choisissez **Suivant**.

1. Vous n’avez pas besoin de modifier les paramètres de l’objet, donc choisissez **Charger**.

Votre code d’application est désormais stocké dans un compartiment Amazon S3 auquel votre application peut accéder.

#### Création et exécution du service géré pour l'application Apache Flink
<a name="earlier-gs-1_8-exercise-7"></a>

Vous pouvez créer et exécuter une application de service géré pour Apache Flink à l’aide de la console ou de l’interface AWS CLI.

**Note**  
Lorsque vous créez l'application à l'aide de la console, vos ressources Gestion des identités et des accès AWS (IAM) et Amazon CloudWatch Logs sont créées pour vous. Lorsque vous créez l'application à l'aide du AWS CLI, vous créez ces ressources séparément.

**Topics**
+ [Création et exécution de l'application (console)](#earlier-gs-1_8-exercise-7-console)
+ [Créez et exécutez l'application (AWS CLI)](#earlier-gs-1_8-exercise-7-cli)

##### Création et exécution de l'application (console)
<a name="earlier-gs-1_8-exercise-7-console"></a>

Suivez ces étapes pour créer, configurer, mettre à jour et exécuter l’application à l’aide de la console.

##### Pour créer l’application
<a name="earlier-gs-1_8-exercise-7-console-create"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le tableau de bord du service géré pour Apache Flink, choisissez **Créer une application d’analyse**.

1. Sur la page **Service géré pour Apache Flink - Créer une application**, fournissez les détails de l’application comme suit :
   + Pour **Nom de l’application**, saisissez **MyApplication**.
   + Pour **Description**, saisissez **My java test app**.
   + Pour **Exécution**, choisissez **Apache Flink**.
   + Laissez le menu déroulant de la version sur **Apache Flink version 1.8 (version recommandée)**.

1. Pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM) `kinesis-analytics-MyApplication-us-west-2`**.

1. Choisissez **Créer une application**.

**Note**  
Lorsque vous créez une application de service géré pour Apache Flink à l’aide de la console, vous avez la possibilité de créer un rôle et une politique IAM pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces ressources IAM sont nommées en utilisant le nom de votre application et la région, comme suit :  
Stratégie : `kinesis-analytics-service-MyApplication-us-west-2`
Rôle : `kinesisanalytics-MyApplication-us-west-2`

##### Modifier la politique IAM
<a name="earlier-gs-1_8-exercise-7-console-iam"></a>

Modifiez la politique IAM pour ajouter des autorisations afin d'accéder aux flux de données Kinesis.

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Choisissez **Stratégies**. Choisissez la politique **`kinesis-analytics-service-MyApplication-us-west-2`** créée pour vous par la console dans la section précédente. 

1. Sur la page **Récapitulatif**, choisissez **Modifier la politique**. Sélectionnez l’onglet **JSON**.

1. Ajoutez la section mise en surbrillance dans l’exemple de stratégie suivant à la politique. Remplacez le compte d'exemple IDs (*012345678901*) par votre identifiant de compte.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-username/aws-kinesis-analytics-java-apps-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Configuration de l'application
<a name="earlier-gs-1_8-exercise-7-console-configure"></a>

1. Sur la **MyApplication**page, choisissez **Configurer**.

1. Sur la page **Configurer l’application**, indiquez l’**emplacement du code**:
   + Pour le compartiment **Amazon S3**, saisissez **ka-app-code-*<username>***.
   + Pour le **chemin de l'objet Amazon S3**, saisissez **aws-kinesis-analytics-java-apps-1.0.jar**.

1. Sous **Accéder aux ressources de l’application**, pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM `kinesis-analytics-MyApplication-us-west-2`**.

1. Entrez les valeurs et propriétés d’application suivantes :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

1. Sous **Surveillance**, assurez-vous que **Surveillance du niveau des métriques** est défini sur **Application**.

1. Pour la **CloudWatch journalisation**, cochez la case **Activer**.

1. Choisissez **Mettre à jour**.

**Note**  
Lorsque vous choisissez d'activer la CloudWatch journalisation Amazon, Managed Service for Apache Flink crée un groupe de journaux et un flux de journaux pour vous. Les noms de ces ressources sont les suivants :   
Groupe de journaux : `/aws/kinesis-analytics/MyApplication`
Flux de journaux : `kinesis-analytics-log-stream`

##### Exécutez l'application
<a name="earlier-gs-1_8-exercise-7-console-run"></a>

1. Sur la **MyApplication**page, choisissez **Exécuter**. Confirmez l’action.

1. Lorsque l’application est en cours d’exécution, actualisez la page. La console affiche le **graphique de l’application**.

##### Arrêtez l'application
<a name="earlier-gs-1_8-exercise-7-console-stop"></a>

Sur la **MyApplication**page, choisissez **Stop**. Confirmez l’action.

##### Mise à jour de l'application
<a name="earlier-gs-1_8-exercise-7-console-update"></a>

À l’aide de la console, vous pouvez mettre à jour les paramètres d’application tels que les paramètres de surveillance, les propriétés d’application et l’emplacement ou le nom du fichier JAR de l’application. Vous pouvez également recharger le fichier JAR de l'application à partir du compartiment Amazon S3 si vous avez besoin de mettre à jour le code de l'application.

Sur la **MyApplication**page, choisissez **Configurer**. Mettez à jour les paramètres de l’application, puis choisissez **Mettre à jour**.

##### Créez et exécutez l'application (AWS CLI)
<a name="earlier-gs-1_8-exercise-7-cli"></a>

Dans cette section, vous allez utiliser le AWS CLI pour créer et exécuter l'application Managed Service for Apache Flink. Le service géré pour Apache Flink utilise la `kinesisanalyticsv2` AWS CLI commande pour créer et interagir avec le service géré pour les applications Apache Flink.

##### Créer une stratégie d’autorisations
<a name="earlier-gs-1_8-exercise-7-cli-policy"></a>

**Note**  
Vous devez créer une stratégie d’autorisations et un rôle pour votre application. Si vous ne créez pas ces ressources IAM, votre application ne peut pas accéder à ses flux de données et de journaux.

Vous commencez par créer une stratégie d’autorisations avec deux instructions : une qui accorde des autorisations pour l’action `read` sur le flux source et une autre qui accorde des autorisations pour les actions `write` sur le flux récepteur. Vous attachez ensuite la politique à un rôle IAM (que vous allez créer dans la section suivante). Ainsi, lorsque le service géré pour Apache Flink assume le rôle, le service dispose des autorisations nécessaires pour lire à partir du flux source et écrire dans le flux récepteur.

Utilisez le code suivant pour créer la politique d’autorisations `AKReadSourceStreamWriteSinkStream`. Remplacez `username` par le nom d’utilisateur que vous avez utilisé pour créer le compartiment Amazon S3 pour stocker le code d’application. Remplacez l'ID de compte dans Amazon Resource Names (ARNs) (`012345678901`) par votre identifiant de compte.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": ["arn:aws:s3:::ka-app-code-username",
                "arn:aws:s3:::ka-app-code-username/*"
            ]
        },
        {
            "Sid": "ReadInputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
        },
        {
            "Sid": "WriteOutputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
        }
    ]
}
```

------

Pour step-by-step obtenir des instructions sur la création d'une politique d'autorisations, voir [Tutoriel : créer et joindre votre première politique gérée par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) dans le *guide de l'utilisateur IAM*.

**Note**  
Pour accéder à d’autres services Amazon, vous pouvez utiliser le AWS SDK pour Java. Le service géré pour Apache Flink définit automatiquement les informations d’identification requises par le kit SDK en fonction du rôle IAM d’exécution du service associé à votre application. Aucune étape supplémentaire n’est nécessaire.

##### Créer un rôle IAM
<a name="earlier-gs-1_8-exercise-7-cli-role"></a>

Dans cette section, vous créez un rôle IAM que l’application de service géré pour Apache Flink peut assumer pour lire un flux source et écrire dans le flux récepteur.

Le service géré pour Apache Flink ne peut pas accéder à votre flux sans autorisation. Vous utilisez un rôle IAM pour accorder ces autorisations. Deux politiques sont attachées à chaque rôle IAM. La politique d’approbation accorde au service géré pour Apache Flink l’autorisation d’assumer le rôle, et la politique d’autorisation détermine ce que le service géré pour Apache Flink peut faire après avoir assumé le rôle.

Vous attachez la politique d’autorisations que vous avez créée dans la section précédente à ce rôle.

**Pour créer un rôle IAM**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le volet de navigation, choisissez **Rôles**, puis **Créer un rôle**.

1. Sous **Sélectionner le type d'identité approuvée**, choisissez **Service AWS **. Sous **Choisir le service qui utilisera ce rôle**, choisissez **EC2**. Sous **Sélectionner votre cas d’utilisation**, choisissez **Kinesis Analytics**.

   Choisissez **Suivant : Autorisations**.

1. Dans la page **Attacher des stratégies d’autorisations**, choisissez **Suivant : vérification**. Vous attachez des stratégies d’autorisations après avoir créé le rôle.

1. Sur la page **Créer un rôle**, saisissez **MF-stream-rw-role** pour le **Nom du rôle**. Sélectionnez **Créer un rôle**.

   Vous venez de créer un nouveau rôle IAM appelé `MF-stream-rw-role`. Ensuite, vous mettez à jour les stratégies d’approbation et d’autorisation pour le rôle.

1. Attachez la politique d’autorisation au rôle.
**Note**  
Dans le cadre de cet exercice, le service géré pour Apache Flink assume ce rôle à la fois pour la lecture des données à partir d’un flux de données Kinesis (source) et pour l’écriture des résultats dans un autre flux de données Kinesis. Vous attachez donc la politique que vous avez créée à l’étape précédente, [Créer une stratégie d’autorisations](#earlier-gs-1_8-exercise-7-cli-policy).

   1. Sur la page **Récapitulatif**, choisissez l’onglet **Autorisations**.

   1. Choisissez **Attacher des stratégies**.

   1. Dans la zone de recherche, saisissez **AKReadSourceStreamWriteSinkStream** (la politique que vous avez créée dans la section précédente).

   1. Sélectionnez la politique **AKReadSourceStreamWriteSinkStream**, puis **Attacher une stratégie**.

Vous avez maintenant créé le rôle d’exécution de service que votre application utilise pour accéder aux ressources. Notez l’ARN du nouveau rôle.

Pour step-by-step obtenir des instructions sur la création d'un rôle, consultez la section [Création d'un rôle IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) dans le guide de l'*utilisateur IAM*.

##### Création du service géré pour l'application Apache Flink
<a name="earlier-gs-1_8-exercise-7-cli-create"></a>

1. Copiez le code JSON suivant dans un fichier nommé `create_request.json`. Remplacez l’exemple d’ARN du rôle par l’ARN du rôle que vous avez créé précédemment. Remplacez le suffixe de l’ARN du compartiment (`username`) par le suffixe que vous avez choisi dans la section précédente. Remplacez l’exemple d’ID de compte (`012345678901`) dans le rôle d’exécution de service par votre ID de compte.

   ```
   {
       "ApplicationName": "test",
       "ApplicationDescription": "my java test app",
       "RuntimeEnvironment": "FLINK-1_8",
       "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
       "ApplicationConfiguration": {
           "ApplicationCodeConfiguration": {
               "CodeContent": {
                   "S3ContentLocation": {
                       "BucketARN": "arn:aws:s3:::ka-app-code-username",
                       "FileKey": "aws-kinesis-analytics-java-apps-1.0.jar"
                   }
               },
               "CodeContentType": "ZIPFILE"
           },
           "EnvironmentProperties":  { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
       }
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) avec la demande précédente pour créer l’application : 

   ```
   aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
   ```

L’application est maintenant créée. Vous démarrez l’application dans l’étape suivante.

##### Lancez l'application
<a name="earlier-gs-1_8-exercise-7-cli-start"></a>

Dans cette section, vous utilisez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) pour démarrer l’application.

**Pour démarrer l’application**

1. Copiez le code JSON suivant dans un fichier nommé `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) avec la demande précédente pour démarrer l’application :

   ```
   aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
   ```

L’application est maintenant en cours d’exécution. Vous pouvez consulter les métriques du service géré pour Apache Flink sur la CloudWatch console Amazon pour vérifier que l'application fonctionne.

##### Arrêtez l'application
<a name="earlier-gs-1_8-exercise-7-cli-stop"></a>

Dans cette section, vous allez utiliser l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) pour arrêter l’application.

**Pour arrêter l’application**

1. Copiez le code JSON suivant dans un fichier nommé `stop_request.json`.

   ```
   {
      "ApplicationName": "test"
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) avec la demande suivante pour arrêter l’application :

   ```
   aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
   ```

L’application est maintenant arrêtée.

##### Ajouter une option de CloudWatch journalisation
<a name="earlier-gs-1_8-exercise-7-cli-cw"></a>

Vous pouvez utiliser le AWS CLI pour ajouter un flux de CloudWatch journal Amazon à votre application. Pour plus d'informations sur l'utilisation de CloudWatch Logs avec votre application, consultez[Configurer la journalisation des applications dans le service géré pour Apache Flink](cloudwatch-logs.md).

##### Mettre à jour les propriétés d'environnement
<a name="earlier-gs-1_8-exercise-7-cli-update-env"></a>

Dans cette section, vous utilisez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) pour modifier les propriétés d’environnement de l’application sans recompiler le code de l’application. Dans cet exemple, vous modifiez la région des flux source et de destination.

**Pour mettre à jour des propriétés d’environnement pour l’application**

1. Copiez le code JSON suivant dans un fichier nommé `update_properties_request.json`.

   ```
   {"ApplicationName": "test",
      "CurrentApplicationVersionId": 1,
      "ApplicationConfigurationUpdate": { 
         "EnvironmentPropertyUpdates": { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
      }
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) avec la demande précédente pour mettre à jour les propriétés de l’environnement :

   ```
   aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
   ```

##### Mise à jour du code de l’application
<a name="earlier-gs-1_8-exercise-7-cli-update-code"></a>

Lorsque vous devez mettre à jour le code de votre application avec une nouvelle version de votre package de code, vous utilisez l'[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) AWS CLI action.

**Note**  
Pour charger une nouvelle version du code de l’application portant le même nom de fichier, vous devez spécifier la nouvelle version de l’objet. Pour de plus amples informations sur l’utilisation des versions d’objet Amazon S3, consultez [Activation et désactivation de la gestion des versions](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

Pour l'utiliser AWS CLI, supprimez votre ancien package de code de votre compartiment Amazon S3, téléchargez la nouvelle version et appelez `UpdateApplication` en spécifiant le même compartiment Amazon S3 et le même nom d'objet, ainsi que la nouvelle version de l'objet. L’application redémarrera avec le nouveau package de code.

L’exemple de demande d’action `UpdateApplication` suivant recharge le code de l’application et redémarre l’application. Mettez à jour l’`CurrentApplicationVersionId` à la version actuelle de l’application. Vous pouvez vérifier la version actuelle de l’application à l’aide des actions `ListApplications` ou `DescribeApplication`. Mettez à jour le suffixe du nom du compartiment (*<username>*) avec le suffixe que vous avez choisi dans la [Création de deux flux de données Amazon Kinesis](#earlier-gs-1_8-exercise-1) section.

```
{
    "ApplicationName": "test",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username",
                    "FileKeyUpdate": "aws-kinesis-analytics-java-apps-1.0.jar",
                    "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU"
                }
            }
        }
    }
}
```

#### Étape suivante
<a name="earlier-gs-1_8-exercise-next-step-4"></a>

[Étape 4 : Nettoyer les AWS ressources](#earlier-gs-1_8-cleanup)

### Étape 4 : Nettoyer les AWS ressources
<a name="earlier-gs-1_8-cleanup"></a>

Cette section inclut les procédures de nettoyage AWS des ressources créées dans le didacticiel Getting Started.

**Topics**
+ [Supprimer votre application Managed Service for Apache Flink](#earlier-gs-1_8-cleanup-app)
+ [Supprimer vos flux de données Kinesis](#earlier-gs-1_8-cleanup-stream)
+ [Supprimer votre objet et votre compartiment Amazon S3](#earlier-gs-1_8-cleanup-s3)
+ [Supprimer vos ressources IAM](#earlier-gs-1_8-cleanup-iam)
+ [Supprimer vos CloudWatch ressources](#earlier-gs-1_8-cleanup-cw)

#### Supprimer votre application Managed Service for Apache Flink
<a name="earlier-gs-1_8-cleanup-app"></a>

1. [Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Dans le panneau Managed Service for Apache Flink, choisissez **MyApplication**.

1. Choisissez **Configurer**.

1. Dans la section **Instantanés**, choisissez **Désactiver**, puis sélectionnez **Mettre à jour**.

1. Sur la page de l’application, choisissez **Supprimer**, puis confirmez la suppression.

#### Supprimer vos flux de données Kinesis
<a name="earlier-gs-1_8-cleanup-stream"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le panneau Kinesis Data Streams, **ExampleInputStream**sélectionnez.

1. Sur la **ExampleInputStream**page, choisissez **Supprimer Kinesis Stream**, puis confirmez la suppression.

1. Sur la page **Kinesis Streams**, choisissez le **ExampleOutputStream**, choisissez **Actions**, choisissez **Supprimer**, puis confirmez la suppression.

#### Supprimer votre objet et votre compartiment Amazon S3
<a name="earlier-gs-1_8-cleanup-s3"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez le ***<username>*compartiment ka-app-code -.**

1. Choisissez **Supprimer**, puis saisissez le nombre du compartiment pour confirmer la suppression.

#### Supprimer vos ressources IAM
<a name="earlier-gs-1_8-cleanup-iam"></a>

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans la barre de navigation, choisissez **Stratégies**.

1. Dans le contrôle du filtre, saisissez **kinesis**.

1. Choisissez la politique **kinesis-analytics-service- MyApplication -us-west-2**.

1. Choisissez **Actions de stratégie**, puis **Supprimer**.

1. Dans la barre de navigation, choisissez **Rôles**.

1. Choisissez le rôle **kinesis-analytics- MyApplication** -us-west-2.

1. Choisissez **Supprimer le rôle**, puis confirmez la suppression.

#### Supprimer vos CloudWatch ressources
<a name="earlier-gs-1_8-cleanup-cw"></a>

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans la barre de navigation, choisissez **Journaux**.

1. Choisissez le groupe**/aws/kinesis-analytics/MyApplication**log.

1. Choisissez **Supprimer le groupe de journaux**, puis confirmez la suppression.

## Pour démarrer : Flink 1.6.2 - obsolète
<a name="earlier-gs-1_6"></a>

**Note**  
Les versions **1.6, 1.8 et 1.11** d'Apache Flink ne sont pas prises en charge par la communauté Apache Flink depuis plus de trois ans. Nous prévoyons de rendre ces versions obsolètes dans Amazon Managed Service pour Apache Flink le **5 novembre 2024**. À partir de cette date, vous ne pourrez plus créer de nouvelles applications pour ces versions de Flink. Vous pouvez continuer à exécuter les applications existantes pour le moment. Vous pouvez mettre à niveau vos applications de manière dynamique à l'aide de la fonctionnalité de mise à niveau de version sur place d'Amazon Managed Service pour Apache Flink. Pour plus d'informations, consultez. [Utiliser des mises à niveau de version sur place pour Apache Flink](how-in-place-version-upgrades.md)

Cette rubrique contient une version du [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md) didacticiel qui utilise Apache Flink 1.6.2.

**Topics**
+ [Composants d'un service géré pour une application Apache Flink](#earlier-gs-1_6-components)
+ [Conditions préalables pour terminer les exercices](#su-1_6-prerequisites)
+ [Étape 1 : configurer un AWS compte et créer un utilisateur administrateur](#earlier-gs-1_6-setting-up)
+ [Étape 2 : configurer le AWS Command Line Interface (AWS CLI)](#su-1_6-awscli)
+ [Étape 3 : créer et exécuter un service géré pour l'application Apache Flink](#earlier-gs-1_6-exercise)
+ [Étape 4 : Nettoyer les AWS ressources](#earlier-gs-1_6-cleanup)

### Composants d'un service géré pour une application Apache Flink
<a name="earlier-gs-1_6-components"></a>

Pour traiter les données, votre application Managed Service for Apache Flink utilise une application Java/Apache Maven ou Scala qui traite les entrées et produit des sorties à l'aide du moteur d'exécution Apache Flink. 

un service géré pour Apache Flink comporte les composants suivants :
+ **Propriétés d’exécution :** vous pouvez utiliser les *propriétés d’exécution* pour configurer votre application sans recompiler le code de votre application. 
+ **Source :** l’application consomme des données en utilisant une *source*. Un connecteur source lit les données d’un flux de données Kinesis, d’un compartiment Amazon S3, etc. Pour plus d’informations, consultez [Ajouter des sources de données de streaming](how-sources.md).
+ **Opérateurs :** l’application traite les données à l’aide d’un ou de plusieurs *opérateurs*. Un opérateur peut transformer, enrichir ou agréger des données. Pour plus d’informations, consultez [Opérateurs](how-operators.md).
+ **Récepteur :** l’application produit des données vers des sources externes à l’aide de *récepteurs*. Un connecteur récepteur écrit des données dans un flux de données Kinesis, un flux Firehose, un compartiment Amazon S3, etc. Pour de plus amples informations, veuillez consulter [Écrire des données à l'aide de récepteurs](how-sinks.md).

Après avoir créé, compilé et empaqueté votre application, vous chargez le package de code dans un compartiment Amazon Simple Storage Service (Amazon S3). Vous créez ensuite une application de service géré pour Apache Flink. Vous transmettez l’emplacement du package de code, un flux de données Kinesis comme source de données de streaming et généralement un emplacement de streaming ou de fichier qui reçoit les données traitées par l’application.

### Conditions préalables pour terminer les exercices
<a name="su-1_6-prerequisites"></a>

Pour exécuter la procédure indiquée dans ce guide, vous devez disposer des éléments suivants :
+ [Kit de développement Java](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) (JDK) version 8. Définissez la variable d’environnement `JAVA_HOME` pour qu’elle pointe vers l’emplacement d’installation de votre JDK.
+ Nous vous recommandons d’utiliser un environnement de développement (par exemple [Eclipse Java Neon](http://www.eclipse.org/downloads/packages/release/neon/3) ou [IntelliJ Idea](https://www.jetbrains.com/idea/)) pour développer et compiler votre application.
+ [Client Git.](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) Installez le client Git si vous ne l’avez pas déjà fait.
+ [Apache Maven Compiler Plugin](https://maven.apache.org/plugins/maven-compiler-plugin/). Maven doit être installé dans votre chemin de travail. Pour tester votre installation Apache Maven, saisissez les informations suivantes :

  ```
  $ mvn -version
  ```

Pour démarrer, accédez à [Étape 1 : configurer un AWS compte et créer un utilisateur administrateur](#earlier-gs-1_6-setting-up).

### Étape 1 : configurer un AWS compte et créer un utilisateur administrateur
<a name="earlier-gs-1_6-setting-up"></a>

#### Inscrivez-vous pour un Compte AWS
<a name="sign-up-for-aws"></a>

Si vous n'en avez pas Compte AWS, procédez comme suit pour en créer un.

**Pour vous inscrire à un Compte AWS**

1. Ouvrez l'[https://portal.aws.amazon.com/billing/inscription.](https://portal.aws.amazon.com/billing/signup)

1. Suivez les instructions en ligne.

   Dans le cadre de la procédure d’inscription, vous recevrez un appel téléphonique ou un SMS et vous saisirez un code de vérification en utilisant le clavier numérique du téléphone.

   Lorsque vous vous inscrivez à un Compte AWS, un *Utilisateur racine d'un compte AWS*est créé. Par défaut, seul l’utilisateur racine a accès à l’ensemble des Services AWS et des ressources de ce compte. La meilleure pratique de sécurité consiste à attribuer un accès administratif à un utilisateur, et à utiliser uniquement l’utilisateur racine pour effectuer les [tâches nécessitant un accès utilisateur racine](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS vous envoie un e-mail de confirmation une fois le processus d'inscription terminé. À tout moment, vous pouvez consulter l'activité actuelle de votre compte et gérer votre compte en accédant à [https://aws.amazon.com/](https://aws.amazon.com/)et en choisissant **Mon compte**.

#### Création d’un utilisateur doté d’un accès administratif
<a name="create-an-admin"></a>

Une fois que vous vous êtes inscrit à un utilisateur administratif Compte AWS, que vous Utilisateur racine d'un compte AWS l'avez sécurisé AWS IAM Identity Center, que vous l'avez activé et que vous en avez créé un, afin de ne pas utiliser l'utilisateur root pour les tâches quotidiennes.

**Sécurisez votre Utilisateur racine d'un compte AWS**

1.  Connectez-vous en [AWS Management Console](https://console.aws.amazon.com/)tant que propriétaire du compte en choisissant **Utilisateur root** et en saisissant votre adresse Compte AWS e-mail. Sur la page suivante, saisissez votre mot de passe.

   Pour obtenir de l’aide pour vous connecter en utilisant l’utilisateur racine, consultez [Connexion en tant qu’utilisateur racine](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) dans le *Guide de l’utilisateur Connexion à AWS *.

1. Activez l’authentification multifactorielle (MFA) pour votre utilisateur racine.

   Pour obtenir des instructions, consultez la section [Activer un périphérique MFA virtuel pour votre utilisateur Compte AWS root (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) dans le guide de l'utilisateur *IAM*.

**Création d’un utilisateur doté d’un accès administratif**

1. Activez IAM Identity Center.

   Pour obtenir des instructions, consultez [Activation d’ AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

1. Dans IAM Identity Center, octroyez un accès administratif à un utilisateur.

   Pour un didacticiel sur l'utilisation du Répertoire IAM Identity Center comme source d'identité, voir [Configurer l'accès utilisateur par défaut Répertoire IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) dans le *Guide de AWS IAM Identity Center l'utilisateur*.

**Connexion en tant qu’utilisateur doté d’un accès administratif**
+ Pour vous connecter avec votre utilisateur IAM Identity Center, utilisez l’URL de connexion qui a été envoyée à votre adresse e-mail lorsque vous avez créé l’utilisateur IAM Identity Center.

  Pour obtenir de l'aide pour vous connecter en utilisant un utilisateur d'IAM Identity Center, consultez la section [Connexion au portail AWS d'accès](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) dans le *guide de l'Connexion à AWS utilisateur*.

**Attribution d’un accès à d’autres utilisateurs**

1. Dans IAM Identity Center, créez un ensemble d’autorisations qui respecte la bonne pratique consistant à appliquer les autorisations de moindre privilège.

   Pour obtenir des instructions, consultez [Création d’un ensemble d’autorisations](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

1. Attribuez des utilisateurs à un groupe, puis attribuez un accès par authentification unique au groupe.

   Pour obtenir des instructions, consultez [Ajout de groupes](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

#### Octroi d’un accès par programmation
<a name="setting-up-access-gs-6"></a>

Les utilisateurs ont besoin d'un accès programmatique s'ils souhaitent interagir avec AWS l'extérieur du AWS Management Console. La manière d'accorder un accès programmatique dépend du type d'utilisateur qui y accède AWS.

Pour accorder aux utilisateurs un accès programmatique, choisissez l’une des options suivantes.


****  

| Quel utilisateur a besoin d’un accès programmatique ? | À | Méthode | 
| --- | --- | --- | 
| IAM | (Recommandé) Utilisez les informations d'identification de la console comme informations d'identification temporaires pour signer les demandes programmatiques adressées au AWS CLI AWS SDKs, ou AWS APIs. |  Suivez les instructions de l’interface que vous souhaitez utiliser. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)  | 
|  Identité de la main-d’œuvre (Utilisateurs gérés dans IAM Identity Center)  | Utilisez des informations d'identification temporaires pour signer les demandes programmatiques adressées au AWS CLI AWS SDKs, ou AWS APIs. |  Suivez les instructions de l’interface que vous souhaitez utiliser. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)  | 
| IAM | Utilisez des informations d'identification temporaires pour signer les demandes programmatiques adressées au AWS CLI AWS SDKs, ou AWS APIs. | Suivez les instructions de la section [Utilisation d'informations d'identification temporaires avec AWS les ressources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) du Guide de l'utilisateur IAM. | 
| IAM | (Non recommandé)Utilisez des informations d'identification à long terme pour signer des demandes programmatiques adressées au AWS CLI AWS SDKs, ou AWS APIs. |  Suivez les instructions de l’interface que vous souhaitez utiliser. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)  | 

### Étape 2 : configurer le AWS Command Line Interface (AWS CLI)
<a name="su-1_6-awscli"></a>

Au cours de cette étape, vous allez télécharger et configurer le AWS CLI à utiliser avec un service géré pour Apache Flink.

**Note**  
Les exercices de mise en route de ce guide supposent que vous utilisez les informations d’identification d’administrateur (`adminuser`) de votre compte pour effectuer les opérations.

**Note**  
Si vous l'avez déjà AWS CLI installé, vous devrez peut-être effectuer une mise à niveau pour bénéficier des dernières fonctionnalités. Pour plus d’informations, consultez [Installation d’ AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) dans le *Guide de l’utilisateur AWS Command Line Interface *. Pour vérifier la version du AWS CLI, exécutez la commande suivante :  

```
aws --version
```
Les exercices présentés dans ce didacticiel nécessitent la AWS CLI version suivante ou une version ultérieure :  

```
aws-cli/1.16.63
```

**Pour configurer le AWS CLI**

1. Téléchargez et configurez l’interface AWS CLI. Pour obtenir des instructions, consultez les rubriques suivantes dans le *Guide de l’utilisateur de l’interface AWS Command Line Interface * : 
   + [Installation de AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)
   + [Configuration de l’interface AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) (français non garanti)

1. Ajoutez un profil nommé pour l'utilisateur administrateur dans le AWS CLI `config` fichier. Vous utiliserez ce profil lorsque vous exécuterez les commandes AWS CLI . Pour plus d'informations sur les profils nommés, consultez la rubrique [Profils nommés](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html) dans le *Guide de l'utilisateur AWS Command Line Interface *.

   ```
   [profile adminuser]
   aws_access_key_id = adminuser access key ID
   aws_secret_access_key = adminuser secret access key
   region = aws-region
   ```

   Pour obtenir la liste des AWS régions disponibles, consultez la section [Régions et points de terminaison](https://docs.aws.amazon.com/general/latest/gr/rande.html) dans le *Référence générale d'Amazon Web Services*.
**Note**  
Les exemples de code et de commandes présentés dans ce didacticiel utilisent la région USA Ouest (Oregon). Pour utiliser une autre région, remplacez la région dans le code et les commandes de ce didacticiel par la région que vous souhaitez utiliser.

1. Vérifiez la configuration en saisissant la commande d’aide suivante à l’invite de commande : 

   ```
   aws help
   ```

Après avoir configuré un AWS compte AWS CLI, vous pouvez passer à l'exercice suivant, dans lequel vous configurez un exemple d'application et testez la end-to-end configuration.

#### Étape suivante
<a name="su-1_6-next-step-3"></a>

[Étape 3 : créer et exécuter un service géré pour l'application Apache Flink](#earlier-gs-1_6-exercise)

### Étape 3 : créer et exécuter un service géré pour l'application Apache Flink
<a name="earlier-gs-1_6-exercise"></a>

Dans cet exercice, vous allez créer une application de service géré pour Apache Flink avec des flux de données comme source et comme récepteur.

**Topics**
+ [Création de deux flux de données Amazon Kinesis](#earlier-gs-1_6-exercise-1)
+ [Écrire des exemples d'enregistrements dans le flux d'entrée](#earlier-gs-1_6-exercise-2)
+ [Téléchargez et examinez le code Java de streaming d'Apache Flink](#earlier-gs-1_6-exercise-5)
+ [Compilez le code de l'application](#earlier-gs-1_6-exercise-5.5)
+ [Téléchargez le code Java de streaming Apache Flink](#earlier-gs-1_6-exercise-6)
+ [Création et exécution du service géré pour l'application Apache Flink](#earlier-gs-1_6-exercise-7)

#### Création de deux flux de données Amazon Kinesis
<a name="earlier-gs-1_6-exercise-1"></a>

Avant de créer une application de service géré pour Apache Flink dans le cadre de cet exercice, commencez par créer deux flux de données Kinesis (`ExampleInputStream` et `ExampleOutputStream`). Votre application utilise ces flux pour les flux source et de destination de l’application.

Vous pouvez créer ces flux à l’aide de la console Amazon Kinesis ou de la commande AWS CLI suivante. Pour obtenir des instructions sur la console, consultez [Création et mise à jour de flux de données](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) dans le *Guide du développeur Amazon Kinesis Data Streams*. 

**Pour créer les flux de données (AWS CLI)**

1. Pour créer le premier flux (`ExampleInputStream`), utilisez la commande Amazon Kinesis `create-stream` AWS CLI suivante.

   ```
   $ aws kinesis create-stream \
   --stream-name ExampleInputStream \
   --shard-count 1 \
   --region us-west-2 \
   --profile adminuser
   ```

1. Pour créer le second flux utilisé par l’application pour écrire la sortie, exécutez la même commande en remplaçant le nom du flux par `ExampleOutputStream`.

   ```
   $ aws kinesis create-stream \
   --stream-name ExampleOutputStream \
   --shard-count 1 \
   --region us-west-2 \
   --profile adminuser
   ```

#### Écrire des exemples d'enregistrements dans le flux d'entrée
<a name="earlier-gs-1_6-exercise-2"></a>

Dans cette section, vous utilisez un script Python pour écrire les exemples d’enregistrements dans le flux pour que l’application les traite.

**Note**  
Cette section nécessite le kit [AWS SDK pour Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

1. Créez un fichier nommé `stock.py` avec le contenu suivant :

   ```
    
   import datetime
   import json
   import random
   import boto3
   
   STREAM_NAME = "ExampleInputStream"
   
   
   def get_data():
       return {
           "EVENT_TIME": datetime.datetime.now().isoformat(),
           "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]),
           "PRICE": round(random.random() * 100, 2),
       }
   
   
   def generate(stream_name, kinesis_client):
       while True:
           data = get_data()
           print(data)
           kinesis_client.put_record(
               StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey"
           )
   
   
   if __name__ == "__main__":
       generate(STREAM_NAME, boto3.client("kinesis"))
   ```

1. Plus loin dans ce didacticiel, vous exécutez le script `stock.py` pour envoyer des données à l’application. 

   ```
   $ python stock.py
   ```

#### Téléchargez et examinez le code Java de streaming d'Apache Flink
<a name="earlier-gs-1_6-exercise-5"></a>

Le code de l'application Java pour cet exemple est disponible sur GitHub. Pour télécharger le code d’application, procédez comme suit :

1. Cloner le référentiel distant à l’aide de la commande suivante :

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Accédez au répertoire `amazon-kinesis-data-analytics-java-examples/GettingStarted_1_6`.

Notez les informations suivantes à propos du code d’application :
+ Un fichier de [modèle d’objet du projet (pom.xml)](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) contient des informations sur la configuration et les dépendances de l’application, y compris les bibliothèques du service géré pour Apache Flink.
+ Le fichier `BasicStreamingJob.java` contient la méthode `main` qui définit la fonctionnalité de l’application.
+ L’application utilise une source Kinesis pour lire à partir du flux source. L’extrait de code suivant crée la source Kinesis :

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ Votre application crée les connecteurs source et récepteur pour accéder aux ressources externes à l’aide d’un objet `StreamExecutionEnvironment`. 
+ L’application crée les connecteurs source et récepteur à l’aide de propriétés statiques. Pour utiliser les propriétés de l’application dynamique, utilisez les méthodes `createSourceFromApplicationProperties` et `createSinkFromApplicationProperties` pour créer les connecteurs. Ces méthodes lisent les propriétés de l’application pour configurer les connecteurs.

  Pour de plus amples informations sur les propriétés d’exécution, consultez [Utiliser les propriétés d'exécution](how-properties.md).

#### Compilez le code de l'application
<a name="earlier-gs-1_6-exercise-5.5"></a>

Dans cette section, vous allez utiliser le compilateur Apache Maven pour créer le code Java pour l’application. Pour obtenir des informations sur l’installation d’Apache Maven et sur le kit de développement Java (JDK), consultez [Conditions préalables pour terminer les exercices](#su-1_6-prerequisites).

**Note**  
**Afin d’utiliser le connecteur Kinesis avec les versions d’Apache Flink antérieures à la version 1.11, vous devez télécharger le code source pour le connecteur et le construire comme décrit dans la [documentation Apache Flink](https://ci.apache.org/projects/flink/flink-docs-release-1.6/dev/connectors/kinesis.html)**.

**Pour compiler le code d’application**

1. Pour utiliser votre code d’application, vous le compilez et l’intégrez dans un fichier JAR. Vous pouvez compiler et intégrer votre code de deux manières :
   + À l’aide de l’outil de ligne de commande Maven. Créez votre fichier JAR en exécutant la commande suivante dans le répertoire qui contient le fichier `pom.xml` :

     ```
     mvn package
     ```
**Note**  
Le paramètre -DFLink.version n’est pas obligatoire pour l’environnement d’exécution du service géré pour Apache Flink version 1.0.1 ; il n’est requis que pour les versions 1.1.0 et ultérieures. Pour plus d’informations, consultez [Spécifiez la version d'Apache Flink de votre application](how-creating-apps.md#how-creating-apps-building-flink).
   + À l’aide de votre environnement de développement. Consultez la documentation de votre environnement de développement pour plus de détails.

   Vous pouvez charger votre package en tant que fichier JAR, ou compresser le package et le charger en tant que fichier ZIP. Si vous créez votre application à l'aide du AWS CLI, vous spécifiez le type de contenu de votre code (JAR ou ZIP).

1. En cas d’erreur lors de la compilation, vérifiez que votre variable d’environnement `JAVA_HOME` est correctement définie.

Si la compilation de l’application aboutit, le fichier suivant est créé :

`target/aws-kinesis-analytics-java-apps-1.0.jar`

#### Téléchargez le code Java de streaming Apache Flink
<a name="earlier-gs-1_6-exercise-6"></a>

Dans cette section, vous allez créer un compartiment Amazon Simple Storage Service (Amazon S3) et charger votre code d'application.

**Pour charger le code d’application**

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez **Créer un compartiment**.

1. Saisissez **ka-app-code-*<username>*** dans le champ **Nom du compartiment**. Ajoutez un suffixe au nom du compartiment, par exemple votre nom d’utilisateur, pour qu’il soit unique. Choisissez **Suivant**.

1. À l’étape **Configurer les options**, conservez les paramètres, puis choisissez **Suivant**.

1. À l’étape **Définir des autorisations**, conservez les paramètres, puis choisissez **Suivant**.

1. Choisissez **Créer un compartiment**.

1. Dans la console Amazon S3, choisissez le *<username>* compartiment **ka-app-code-**, puis **Upload**.

1. À l’étape **Sélectionner les fichiers**, choisissez **Ajouter des fichiers**. Accédez au fichier `aws-kinesis-analytics-java-apps-1.0.jar` que vous avez créé à l’étape précédente. Choisissez **Suivant**.

1. À l'étape **Définir des autorisations**, conservez les paramètres. Choisissez **Suivant**.

1. À l'étape **Définir les propriétés**, conservez les paramètres. Choisissez **Charger**.

Votre code d'application est désormais stocké dans un compartiment Amazon S3 auquel votre application peut accéder.

#### Création et exécution du service géré pour l'application Apache Flink
<a name="earlier-gs-1_6-exercise-7"></a>

Vous pouvez créer et exécuter une application de service géré pour Apache Flink à l’aide de la console ou de l’interface AWS CLI.

**Note**  
Lorsque vous créez l'application à l'aide de la console, vos ressources Gestion des identités et des accès AWS (IAM) et Amazon CloudWatch Logs sont créées pour vous. Lorsque vous créez l'application à l'aide du AWS CLI, vous créez ces ressources séparément.

**Topics**
+ [Création et exécution de l'application (console)](#earlier-gs-1_6-exercise-7-console)
+ [Créez et exécutez l'application (AWS CLI)](#earlier-gs-1_6-exercise-7-cli)

##### Création et exécution de l'application (console)
<a name="earlier-gs-1_6-exercise-7-console"></a>

Suivez ces étapes pour créer, configurer, mettre à jour et exécuter l’application à l’aide de la console.

##### Pour créer l’application
<a name="earlier-gs-1_6-exercise-7-console-create"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le tableau de bord du service géré pour Apache Flink, choisissez **Créer une application d’analyse**.

1. Sur la page **Service géré pour Apache Flink - Créer une application**, fournissez les détails de l’application comme suit :
   + Pour **Nom de l’application**, saisissez **MyApplication**.
   + Pour **Description**, saisissez **My java test app**.
   + Pour **Exécution**, choisissez **Apache Flink**.
**Note**  
Le service géré pour Apache Flink utilise Apache Flink version 1.8.2 ou 1.6.2.
   + Modifiez le menu déroulant de la version sur **Apache Flink 1.6**.

1. Pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM) `kinesis-analytics-MyApplication-us-west-2`**.

1. Choisissez **Créer une application**.

**Note**  
Lorsque vous créez une application de service géré pour Apache Flink à l’aide de la console, vous avez la possibilité de créer un rôle et une politique IAM pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces ressources IAM sont nommées en utilisant le nom de votre application et la région, comme suit :  
Stratégie : `kinesis-analytics-service-MyApplication-us-west-2`
Rôle : `kinesisanalytics-MyApplication-us-west-2`

##### Modifier la politique IAM
<a name="earlier-gs-1_6-exercise-7-console-iam"></a>

Modifiez la politique IAM pour ajouter des autorisations afin d'accéder aux flux de données Kinesis.

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Choisissez **Stratégies**. Choisissez la politique **`kinesis-analytics-service-MyApplication-us-west-2`** créée pour vous par la console dans la section précédente. 

1. Sur la page **Récapitulatif**, choisissez **Modifier la politique**. Sélectionnez l’onglet **JSON**.

1. Ajoutez la section mise en surbrillance dans l’exemple de stratégie suivant à la politique. Remplacez le compte d'exemple IDs (*012345678901*) par votre identifiant de compte.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-username/java-getting-started-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Configuration de l'application
<a name="earlier-gs-1_6-exercise-7-console-configure"></a>

1. Sur la **MyApplication**page, choisissez **Configurer**.

1. Sur la page **Configurer l’application**, indiquez l’**emplacement du code**:
   + Pour le compartiment **Amazon S3**, saisissez **ka-app-code-*<username>***.
   + Pour le **chemin de l'objet Amazon S3**, saisissez **java-getting-started-1.0.jar**.

1. Sous **Accéder aux ressources de l’application**, pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM `kinesis-analytics-MyApplication-us-west-2`**.

1. Entrez les valeurs et propriétés d’application suivantes :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

1. Sous **Surveillance**, assurez-vous que **Surveillance du niveau des métriques** est défini sur **Application**.

1. Pour la **CloudWatch journalisation**, cochez la case **Activer**.

1. Choisissez **Mettre à jour**.

**Note**  
Lorsque vous choisissez d'activer la CloudWatch journalisation Amazon, Managed Service for Apache Flink crée un groupe de journaux et un flux de journaux pour vous. Les noms de ces ressources sont les suivants :   
Groupe de journaux : `/aws/kinesis-analytics/MyApplication`
Flux de journaux : `kinesis-analytics-log-stream`

##### Exécutez l'application
<a name="earlier-gs-1_6-exercise-7-console-run"></a>

1. Sur la **MyApplication**page, choisissez **Exécuter**. Confirmez l’action.

1. Lorsque l’application est en cours d’exécution, actualisez la page. La console affiche le **graphique de l’application**.

##### Arrêtez l'application
<a name="earlier-gs-1_6-exercise-7-console-stop"></a>

Sur la **MyApplication**page, choisissez **Stop**. Confirmez l’action.

##### Mise à jour de l'application
<a name="earlier-gs-1_6-exercise-7-console-update"></a>

À l’aide de la console, vous pouvez mettre à jour les paramètres d’application tels que les paramètres de surveillance, les propriétés d’application et l’emplacement ou le nom du fichier JAR de l’application. Vous pouvez également recharger le fichier JAR de l'application à partir du compartiment Amazon S3 si vous avez besoin de mettre à jour le code de l'application.

Sur la **MyApplication**page, choisissez **Configurer**. Mettez à jour les paramètres de l’application, puis choisissez **Mettre à jour**.

##### Créez et exécutez l'application (AWS CLI)
<a name="earlier-gs-1_6-exercise-7-cli"></a>

Dans cette section, vous allez utiliser le AWS CLI pour créer et exécuter l'application Managed Service for Apache Flink. Le service géré pour Apache Flink utilise la `kinesisanalyticsv2` AWS CLI commande pour créer et interagir avec le service géré pour les applications Apache Flink.

##### Création d’une stratégie d’autorisations
<a name="earlier-gs-1_6-exercise-7-cli-policy"></a>

Vous commencez par créer une stratégie d’autorisations avec deux instructions : une qui accorde des autorisations pour l’action `read` sur le flux source et une autre qui accorde des autorisations pour les actions `write` sur le flux récepteur. Vous attachez ensuite la politique à un rôle IAM (que vous allez créer dans la section suivante). Ainsi, lorsque le service géré pour Apache Flink assume le rôle, le service dispose des autorisations nécessaires pour lire à partir du flux source et écrire dans le flux récepteur.

Utilisez le code suivant pour créer la politique d’autorisations `AKReadSourceStreamWriteSinkStream`. Remplacez `username` par le nom d’utilisateur que vous avez utilisé pour créer le compartiment Amazon S3 pour stocker le code d’application. Remplacez l'ID de compte dans Amazon Resource Names (ARNs) (`012345678901`) par votre identifiant de compte.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": ["arn:aws:s3:::ka-app-code-username",
                "arn:aws:s3:::ka-app-code-username/*"
            ]
        },
        {
            "Sid": "ReadInputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
        },
        {
            "Sid": "WriteOutputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
        }
    ]
}
```

------

Pour step-by-step obtenir des instructions sur la création d'une politique d'autorisations, voir [Tutoriel : créer et joindre votre première politique gérée par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) dans le *guide de l'utilisateur IAM*.

**Note**  
Pour accéder à d’autres services Amazon, vous pouvez utiliser le AWS SDK pour Java. Le service géré pour Apache Flink définit automatiquement les informations d’identification requises par le kit SDK en fonction du rôle IAM d’exécution du service associé à votre application. Aucune étape supplémentaire n’est nécessaire.

##### Créer un rôle IAM
<a name="earlier-gs-1_6-exercise-7-cli-role"></a>

Dans cette section, vous créez un rôle IAM que l’application de service géré pour Apache Flink peut assumer pour lire un flux source et écrire dans le flux récepteur.

Le service géré pour Apache Flink ne peut pas accéder à votre flux sans autorisation. Vous utilisez un rôle IAM pour accorder ces autorisations. Deux politiques sont attachées à chaque rôle IAM. La politique d’approbation accorde au service géré pour Apache Flink l’autorisation d’assumer le rôle, et la politique d’autorisation détermine ce que le service géré pour Apache Flink peut faire après avoir assumé le rôle.

Vous attachez la politique d’autorisations que vous avez créée dans la section précédente à ce rôle.

**Pour créer un rôle IAM**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le volet de navigation, choisissez **Rôles**, puis **Créer un rôle**.

1. Sous **Sélectionner le type d'identité approuvée**, choisissez **Service AWS **. Sous **Choisir le service qui utilisera ce rôle**, choisissez **EC2**. Sous **Sélectionner votre cas d’utilisation**, choisissez **Kinesis Analytics**.

   Choisissez **Suivant : Autorisations**.

1. Dans la page **Attacher des stratégies d’autorisations**, choisissez **Suivant : vérification**. Vous attachez des stratégies d’autorisations après avoir créé le rôle.

1. Sur la page **Créer un rôle**, saisissez **MF-stream-rw-role** pour le **Nom du rôle**. Sélectionnez **Créer un rôle**.

   Vous venez de créer un nouveau rôle IAM appelé `MF-stream-rw-role`. Ensuite, vous mettez à jour les stratégies d’approbation et d’autorisation pour le rôle.

1. Attachez la politique d’autorisation au rôle.
**Note**  
Dans le cadre de cet exercice, le service géré pour Apache Flink assume ce rôle à la fois pour la lecture des données à partir d’un flux de données Kinesis (source) et pour l’écriture des résultats dans un autre flux de données Kinesis. Vous attachez donc la politique que vous avez créée à l’étape précédente, [Création d’une stratégie d’autorisations](#earlier-gs-1_6-exercise-7-cli-policy).

   1. Sur la page **Récapitulatif**, choisissez l’onglet **Autorisations**.

   1. Choisissez **Attacher des stratégies**.

   1. Dans la zone de recherche, saisissez **AKReadSourceStreamWriteSinkStream** (la politique que vous avez créée dans la section précédente).

   1. Sélectionnez la politique **AKReadSourceStreamWriteSinkStream**, puis **Attacher une stratégie**.

Vous avez maintenant créé le rôle d’exécution de service que votre application utilise pour accéder aux ressources. Notez l’ARN du nouveau rôle.

Pour step-by-step obtenir des instructions sur la création d'un rôle, consultez la section [Création d'un rôle IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) dans le guide de l'*utilisateur IAM*.

##### Création du service géré pour l'application Apache Flink
<a name="earlier-gs-1_6-exercise-7-cli-create"></a>

1. Copiez le code JSON suivant dans un fichier nommé `create_request.json`. Remplacez l’exemple d’ARN du rôle par l’ARN du rôle que vous avez créé précédemment. Remplacez le suffixe de l’ARN du compartiment (`username`) par le suffixe que vous avez choisi dans la section précédente. Remplacez l’exemple d’ID de compte (`012345678901`) dans le rôle d’exécution de service par votre ID de compte.

   ```
   {
       "ApplicationName": "test",
       "ApplicationDescription": "my java test app",
       "RuntimeEnvironment": "FLINK-1_6",
       "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
       "ApplicationConfiguration": {
           "ApplicationCodeConfiguration": {
               "CodeContent": {
                   "S3ContentLocation": {
                       "BucketARN": "arn:aws:s3:::ka-app-code-username",
                       "FileKey": "java-getting-started-1.0.jar"
                   }
               },
               "CodeContentType": "ZIPFILE"
           },
           "EnvironmentProperties":  { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
       }
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) avec la demande précédente pour créer l’application : 

   ```
   aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
   ```

L’application est maintenant créée. Vous démarrez l’application dans l’étape suivante.

##### Lancez l'application
<a name="earlier-gs-1_6-exercise-7-cli-start"></a>

Dans cette section, vous utilisez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) pour démarrer l’application.

**Pour démarrer l’application**

1. Copiez le code JSON suivant dans un fichier nommé `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) avec la demande précédente pour démarrer l’application :

   ```
   aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
   ```

L’application est maintenant en cours d’exécution. Vous pouvez consulter les métriques du service géré pour Apache Flink sur la CloudWatch console Amazon pour vérifier que l'application fonctionne.

##### Arrêtez l'application
<a name="earlier-gs-1_6-exercise-7-cli-stop"></a>

Dans cette section, vous allez utiliser l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) pour arrêter l’application.

**Pour arrêter l’application**

1. Copiez le code JSON suivant dans un fichier nommé `stop_request.json`.

   ```
   {
      "ApplicationName": "test"
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) avec la demande suivante pour arrêter l’application :

   ```
   aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
   ```

L’application est maintenant arrêtée.

##### Ajouter une option de CloudWatch journalisation
<a name="earlier-gs-1_6-exercise-7-cli-cw"></a>

Vous pouvez utiliser le AWS CLI pour ajouter un flux de CloudWatch journal Amazon à votre application. Pour plus d'informations sur l'utilisation de CloudWatch Logs avec votre application, consultez[Configurer la journalisation des applications dans le service géré pour Apache Flink](cloudwatch-logs.md).

##### Mettre à jour les propriétés d'environnement
<a name="earlier-gs-1_6-exercise-7-cli-update-env"></a>

Dans cette section, vous utilisez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) pour modifier les propriétés d’environnement de l’application sans recompiler le code de l’application. Dans cet exemple, vous modifiez la région des flux source et de destination.

**Pour mettre à jour des propriétés d’environnement pour l’application**

1. Copiez le code JSON suivant dans un fichier nommé `update_properties_request.json`.

   ```
   {"ApplicationName": "test",
      "CurrentApplicationVersionId": 1,
      "ApplicationConfigurationUpdate": { 
         "EnvironmentPropertyUpdates": { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
      }
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) avec la demande précédente pour mettre à jour les propriétés de l’environnement :

   ```
   aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
   ```

##### Mise à jour du code de l’application
<a name="earlier-gs-1_6-exercise-7-cli-update-code"></a>

Lorsque vous devez mettre à jour le code de votre application avec une nouvelle version de votre package de code, vous utilisez l'[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) AWS CLI action.

Pour l'utiliser AWS CLI, supprimez votre ancien package de code de votre compartiment Amazon S3, téléchargez la nouvelle version et appelez `UpdateApplication` en spécifiant le même compartiment Amazon S3 et le même nom d'objet. L’application redémarrera avec le nouveau package de code.

L’exemple de demande d’action `UpdateApplication` suivant recharge le code de l’application et redémarre l’application. Mettez à jour l’`CurrentApplicationVersionId` à la version actuelle de l’application. Vous pouvez vérifier la version actuelle de l’application à l’aide des actions `ListApplications` ou `DescribeApplication`. Mettez à jour le suffixe du nom du compartiment (*<username>*) avec le suffixe que vous avez choisi dans la [Création de deux flux de données Amazon Kinesis](#earlier-gs-1_6-exercise-1) section.

```
{
    "ApplicationName": "test",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username",
                    "FileKeyUpdate": "java-getting-started-1.0.jar"
                }
            }
        }
    }
}
```

### Étape 4 : Nettoyer les AWS ressources
<a name="earlier-gs-1_6-cleanup"></a>

Cette section inclut les procédures de nettoyage AWS des ressources créées dans le didacticiel Getting Started.

**Topics**
+ [Supprimer votre application Managed Service for Apache Flink](#earlier-gs-1_6-cleanup-app)
+ [Supprimer vos flux de données Kinesis](#earlier-gs-1_6-cleanup-stream)
+ [Supprimer votre objet et votre compartiment Amazon S3](#earlier-gs-1_6-cleanup-s3)
+ [Supprimer vos ressources IAM](#earlier-gs-1_6-cleanup-iam)
+ [Supprimer vos CloudWatch ressources](#earlier-gs-1_6-cleanup-cw)

#### Supprimer votre application Managed Service for Apache Flink
<a name="earlier-gs-1_6-cleanup-app"></a>

1. [Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Dans le panneau Managed Service for Apache Flink, choisissez **MyApplication**.

1. Choisissez **Configurer**.

1. Dans la section **Instantanés**, choisissez **Désactiver**, puis sélectionnez **Mettre à jour**.

1. Sur la page de l’application, choisissez **Supprimer**, puis confirmez la suppression.

#### Supprimer vos flux de données Kinesis
<a name="earlier-gs-1_6-cleanup-stream"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le panneau Kinesis Data Streams, **ExampleInputStream**sélectionnez.

1. Sur la **ExampleInputStream**page, choisissez **Supprimer Kinesis Stream**, puis confirmez la suppression.

1. Sur la page **Kinesis Streams**, choisissez le **ExampleOutputStream**, choisissez **Actions**, choisissez **Supprimer**, puis confirmez la suppression.

#### Supprimer votre objet et votre compartiment Amazon S3
<a name="earlier-gs-1_6-cleanup-s3"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez le ***<username>*compartiment ka-app-code -.**

1. Choisissez **Supprimer**, puis saisissez le nombre du compartiment pour confirmer la suppression.

#### Supprimer vos ressources IAM
<a name="earlier-gs-1_6-cleanup-iam"></a>

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans la barre de navigation, choisissez **Stratégies**.

1. Dans le contrôle du filtre, saisissez **kinesis**.

1. Choisissez la politique **kinesis-analytics-service- MyApplication -us-west-2**.

1. Choisissez **Actions de stratégie**, puis **Supprimer**.

1. Dans la barre de navigation, choisissez **Rôles**.

1. Choisissez le rôle **kinesis-analytics- MyApplication** -us-west-2.

1. Choisissez **Supprimer le rôle**, puis confirmez la suppression.

#### Supprimer vos CloudWatch ressources
<a name="earlier-gs-1_6-cleanup-cw"></a>

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans la barre de navigation, choisissez **Journaux**.

1. Choisissez le groupe**/aws/kinesis-analytics/MyApplication**log.

1. Choisissez **Supprimer le groupe de journaux**, puis confirmez la suppression.

## Exemples de versions antérieures (anciennes) pour le service géré pour Apache Flink
<a name="legacy-examples"></a>

**Note**  
Pour des exemples actuels, voir[Exemples de création et d'utilisation d'un service géré pour les applications Apache Flink](examples-collapsibles.md).

Cette section fournit des exemples de création et d’utilisation d’applications dans le service géré pour Apache Flink. Ils incluent des exemples de code et des step-by-step instructions pour vous aider à créer un service géré pour les applications Apache Flink et à tester vos résultats.

Avant d’explorer ces exemples, nous vous recommandons de consulter les éléments suivants : 
+ [Comment ça marche](how-it-works.md)
+ [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md)

**Note**  
Ces exemples supposent que vous utilisez la région USA Ouest (Oregon) (`us-west-2`). Si vous utilisez une autre région, mettez à jour le code de votre application, les commandes et les rôles IAM de manière appropriée.

**Topics**
+ [DataStream Exemples d'API](#examples-datastream)
+ [Exemples Python](#examples-python)
+ [Exemples de Scala](#examples-scala)

### DataStream Exemples d'API
<a name="examples-datastream"></a>

Les exemples suivants montrent comment créer des applications à l'aide de l' DataStream API Apache Flink.

**Topics**
+ [Exemple : fenêtre à culbuter](#examples-tumbling)
+ [Exemple : fenêtre coulissante](#examples-sliding)
+ [Exemple : écriture dans un compartiment Amazon S3](#examples-s3)
+ [Tutoriel : Utilisation d'un service géré pour l'application Apache Flink afin de répliquer des données d'un sujet d'un cluster MSK vers un autre dans un VPC](#example-msk)
+ [Exemple : utilisation d'un consommateur EFO avec un flux de données Kinesis](#examples-efo)
+ [Exemple : écrire dans Firehose](#get-started-exercise-fh)
+ [Exemple : lecture depuis un flux Kinesis dans un autre compte](#examples-cross)
+ [Tutoriel : Utilisation d'un truststore personnalisé avec Amazon MSK](#example-keystore)

#### Exemple : fenêtre à culbuter
<a name="examples-tumbling"></a>

**Note**  
Pour des exemples actuels, voir[Exemples de création et d'utilisation d'un service géré pour les applications Apache Flink](examples-collapsibles.md).

Dans cet exercice, vous allez créer une application de service géré pour Apache Flink qui agrège les données à l’aide d’une fenêtre bascule. L’agrégation est activée par défaut dans Flink. Pour la désactiver, utilisez la commande suivante :

```
sink.producer.aggregation-enabled' = 'false'
```

**Note**  
Pour configurer les prérequis requis pour cet exercice, commencez par terminer l’exercice [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md).

**Topics**
+ [Création de ressources dépendantes](#examples-tumbling-resources)
+ [Écrire des exemples d'enregistrements dans le flux d'entrée](#examples-tumbling-write)
+ [Téléchargez et examinez le code de l'application](#examples-tumbling-download)
+ [Compilez le code de l'application](#examples-tumbling-compile)
+ [Téléchargez le code Java de streaming Apache Flink](#examples-tumbling-upload)
+ [Création et exécution du service géré pour l'application Apache Flink](#examples-tumbling-create-run)
+ [Nettoyer les AWS ressources](#examples-tumbling-cleanup)

##### Création de ressources dépendantes
<a name="examples-tumbling-resources"></a>

Avant de créer une application de service géré pour Apache Flink dans le cadre de cet exercice, vous commencez par créer les ressources dépendantes suivantes : 
+ Deux flux de données Kinesis (`ExampleInputStream` et `ExampleOutputStream`)
+ Un compartiment Amazon S3 pour stocker le code de l’application (`ka-app-code-<username>`) 

Vous pouvez créer les flux Kinesis et un compartiment S3 à l’aide de la console. Pour obtenir des instructions sur la création de ces ressources, consultez les rubriques suivantes :
+ [Création et mise à jour de flux de données](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) dans le *Guide du développeur Amazon Kinesis Data Streams*. Nommez votre flux de données **ExampleInputStream** et**ExampleOutputStream**.
+ [Comment créer un compartiment S3 ?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) dans le *Guide de l’utilisateur de la console Amazon Simple Storage Service*. Donnez au compartiment Amazon S3 un nom unique au monde en ajoutant votre nom de connexion, tel que **ka-app-code-*<username>***.

##### Écrire des exemples d'enregistrements dans le flux d'entrée
<a name="examples-tumbling-write"></a>

Dans cette section, vous utilisez un script Python pour écrire les exemples d’enregistrements dans le flux pour que l’application les traite.

**Note**  
Cette section nécessite le kit [AWS SDK pour Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

1. Créez un fichier nommé `stock.py` avec le contenu suivant :

   ```
       import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. Exécutez le script `stock.py` : 

   ```
   $ python stock.py
   ```

   Maintenez le script en cours d’exécution pendant que vous terminez le reste du didacticiel.

##### Téléchargez et examinez le code de l'application
<a name="examples-tumbling-download"></a>

Le code de l'application Java pour cet exemple est disponible sur GitHub. Pour télécharger le code d’application, procédez comme suit :

1. Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez [Installation de Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Cloner le référentiel distant à l’aide de la commande suivante :

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Accédez au répertoire `amazon-kinesis-data-analytics-java-examples/TumblingWindow`.

Le code d’application est situé dans le fichier `TumblingWindowStreamingJob.java`. Notez les informations suivantes à propos du code d’application :
+ L’application utilise une source Kinesis pour lire à partir du flux source. L’extrait de code suivant crée la source Kinesis :

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ Ajoutez l’instruction d’importation suivante :

  ```
  import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows; //flink 1.13 onward
  ```
+ L’application utilise l’opérateur `timeWindow` pour déterminer le nombre de valeurs de chaque symbole boursier sur une fenêtre de 5 secondes. Le code suivant crée l’opérateur et envoie les données agrégées vers un nouveau récepteur Kinesis Data Streams :

  ```
  input.flatMap(new Tokenizer()) // Tokenizer for generating words
                      .keyBy(0) // Logically partition the stream for each word
                      
                      .window(TumblingProcessingTimeWindows.of(Time.seconds(5))) //Flink 1.13 onward
                      .sum(1) // Sum the number of words per partition
                      .map(value -> value.f0 + "," + value.f1.toString() + "\n")
                      .addSink(createSinkFromStaticConfig());
  ```

##### Compilez le code de l'application
<a name="examples-tumbling-compile"></a>

Pour compiler l’application, procédez comme suit :

1. Installez Java et Maven si ce n’est pas déjà fait. Pour plus d’informations, consultez [Complétez les prérequis requis](getting-started.md#setting-up-prerequisites) dans le didacticiel [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md).

1. Compilez l’application à l’aide de la commande suivante : 

   ```
   mvn package -Dflink.version=1.15.3
   ```
**Note**  
Le code source fourni repose sur les bibliothèques de Java 11. 

La compilation de l’application crée le fichier JAR de l’application (`target/aws-kinesis-analytics-java-apps-1.0.jar`).

##### Téléchargez le code Java de streaming Apache Flink
<a name="examples-tumbling-upload"></a>

Dans cette section, vous allez charger votre code d’application dans le compartiment Amazon S3 que vous avez créé dans la section [Création de ressources dépendantes](#examples-tumbling-resources).

1. Dans la console Amazon S3, choisissez le *<username>* compartiment **ka-app-code-**, puis **Upload**.

1. À l’étape **Sélectionner les fichiers**, choisissez **Ajouter des fichiers**. Accédez au fichier `aws-kinesis-analytics-java-apps-1.0.jar` que vous avez créé à l’étape précédente. 

1. Vous n’avez pas besoin de modifier les paramètres de l’objet, donc choisissez **Charger**.

Votre code d’application est désormais stocké dans un compartiment Amazon S3 auquel votre application peut accéder.

##### Création et exécution du service géré pour l'application Apache Flink
<a name="examples-tumbling-create-run"></a>

Suivez ces étapes pour créer, configurer, mettre à jour et exécuter l’application à l’aide de la console.

##### Pour créer l’application
<a name="examples-tumbling-create"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le tableau de bord du service géré pour Apache Flink, choisissez **Créer une application d’analyse**.

1. Sur la page **Service géré pour Apache Flink - Créer une application**, fournissez les détails de l’application comme suit :
   + Pour **Nom de l’application**, saisissez **MyApplication**.
   + Pour **Exécution**, choisissez **Apache Flink**.
**Note**  
Le service géré pour Apache Flink utilise Apache Flink version 1.15.2.
   + Laissez le menu déroulant de la version sur **Apache Flink version 1.15.2 (version recommandée)**.

1. Pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM) `kinesis-analytics-MyApplication-us-west-2`**.

1. Choisissez **Créer une application**.

**Note**  
Lorsque vous créez une application de service géré pour Apache Flink à l’aide de la console, vous avez la possibilité de créer un rôle et une politique IAM pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces ressources IAM sont nommées en utilisant le nom de votre application et la région, comme suit :  
Stratégie : `kinesis-analytics-service-MyApplication-us-west-2`
Rôle : `kinesisanalytics-MyApplication-us-west-2`

##### Modifier la politique IAM
<a name="get-started-exercise-7-console-iam"></a>

Modifiez la politique IAM pour ajouter des autorisations afin d'accéder aux flux de données Kinesis.

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Choisissez **Stratégies**. Choisissez la politique **`kinesis-analytics-service-MyApplication-us-west-2`** créée pour vous par la console dans la section précédente. 

1. Sur la page **Récapitulatif**, choisissez **Modifier la politique**. Sélectionnez l’onglet **JSON**.

1. Ajoutez la section mise en surbrillance dans l’exemple de stratégie suivant à la politique. Remplacez le compte d'exemple IDs (*012345678901*) par votre identifiant de compte.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "logs:DescribeLogGroups",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*",
                   "arn:aws:s3:::ka-app-code-<username>/aws-kinesis-analytics-java-apps-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": "logs:DescribeLogStreams",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": "logs:PutLogEvents",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
           },
           {
               "Sid": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Configuration de l'application
<a name="examples-tumbling-configure"></a>

1. Sur la **MyApplication**page, choisissez **Configurer**.

1. Sur la page **Configurer l’application**, indiquez l’**emplacement du code**:
   + Pour le compartiment **Amazon S3**, saisissez **ka-app-code-*<username>***.
   + Pour le **chemin de l'objet Amazon S3**, saisissez **aws-kinesis-analytics-java-apps-1.0.jar**.

1. Sous **Accéder aux ressources de l’application**, pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM `kinesis-analytics-MyApplication-us-west-2`**.

1. Sous **Surveillance**, assurez-vous que **Surveillance du niveau des métriques** est défini sur **Application**.

1. Pour la **CloudWatch journalisation**, cochez la case **Activer**.

1. Choisissez **Mettre à jour**.

**Note**  
Lorsque vous choisissez d'activer la CloudWatch journalisation, le service géré pour Apache Flink crée un groupe de journaux et un flux de journaux pour vous. Les noms de ces ressources sont les suivants :   
Groupe de journaux : `/aws/kinesis-analytics/MyApplication`
Flux de journaux : `kinesis-analytics-log-stream`
Ce flux de journaux est utilisé pour surveiller l’application. Il ne s’agit pas du même flux de journaux que celui utilisé par l’application pour envoyer les résultats.

##### Exécutez l'application
<a name="examples-tumbling-run"></a>

1. Sur la **MyApplication**page, choisissez **Exécuter**. Laissez l’option **Exécuter sans instantané** sélectionnée et confirmez l’action.

1. Lorsque l’application est en cours d’exécution, actualisez la page. La console affiche le **graphique de l’application**.

Vous pouvez vérifier les métriques du service géré pour Apache Flink sur la CloudWatch console pour vérifier que l'application fonctionne. 

##### Nettoyer les AWS ressources
<a name="examples-tumbling-cleanup"></a>

Cette section inclut les procédures de nettoyage AWS des ressources créées dans le didacticiel Tumbling Window.

**Topics**
+ [Supprimer votre application Managed Service for Apache Flink](#examples-tumbling-cleanup-app)
+ [Supprimer vos flux de données Kinesis](#examples-tumbling-cleanup-stream)
+ [Supprimer votre objet et votre compartiment Amazon S3](#examples-tumbling-cleanup-s3)
+ [Supprimer vos ressources IAM](#examples-tumbling-cleanup-iam)
+ [Supprimer vos CloudWatch ressources](#examples-tumbling-cleanup-cw)

##### Supprimer votre application Managed Service for Apache Flink
<a name="examples-tumbling-cleanup-app"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. dans le panneau Managed Service for Apache Flink, sélectionnez **MyApplication**.

1. Sur la page de l’application, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer vos flux de données Kinesis
<a name="examples-tumbling-cleanup-stream"></a>

1. [Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Dans le panneau Kinesis Data Streams, **ExampleInputStream**sélectionnez.

1. Sur la **ExampleInputStream**page, choisissez **Supprimer Kinesis Stream**, puis confirmez la suppression.

1. Sur la page **Kinesis Streams**, choisissez le **ExampleOutputStream**, choisissez **Actions**, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer votre objet et votre compartiment Amazon S3
<a name="examples-tumbling-cleanup-s3"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez le ***<username>*compartiment ka-app-code -.**

1. Choisissez **Supprimer**, puis saisissez le nombre du compartiment pour confirmer la suppression.

##### Supprimer vos ressources IAM
<a name="examples-tumbling-cleanup-iam"></a>

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans la barre de navigation, choisissez **Stratégies**.

1. Dans le contrôle du filtre, saisissez **kinesis**.

1. Choisissez la politique **kinesis-analytics-service- MyApplication -us-west-2**.

1. Choisissez **Actions de stratégie**, puis **Supprimer**.

1. Dans la barre de navigation, choisissez **Rôles**.

1. Choisissez le rôle **kinesis-analytics- MyApplication** -us-west-2.

1. Choisissez **Supprimer le rôle**, puis confirmez la suppression.

##### Supprimer vos CloudWatch ressources
<a name="examples-tumbling-cleanup-cw"></a>

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans la barre de navigation, choisissez **Journaux**.

1. Choisissez le groupe**/aws/kinesis-analytics/MyApplication**log.

1. Choisissez **Supprimer le groupe de journaux**, puis confirmez la suppression.

#### Exemple : fenêtre coulissante
<a name="examples-sliding"></a>

**Note**  
Pour des exemples actuels, voir[Exemples de création et d'utilisation d'un service géré pour les applications Apache Flink](examples-collapsibles.md).

**Note**  
Pour configurer les prérequis requis pour cet exercice, commencez par terminer l’exercice [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md).

**Topics**
+ [Création de ressources dépendantes](#examples-sliding-resources)
+ [Écrire des exemples d'enregistrements dans le flux d'entrée](#examples-sliding-write)
+ [Téléchargez et examinez le code de l'application](#examples-sliding-download)
+ [Compilez le code de l'application](#examples-sliding-compile)
+ [Téléchargez le code Java de streaming Apache Flink](#examples-sliding-upload)
+ [Création et exécution du service géré pour l'application Apache Flink](#examples-sliding-create-run)
+ [Nettoyer les AWS ressources](#examples-sliding-cleanup)

##### Création de ressources dépendantes
<a name="examples-sliding-resources"></a>

Avant de créer une application de service géré pour Apache Flink dans le cadre de cet exercice, vous commencez par créer les ressources dépendantes suivantes : 
+ Deux flux de données Kinesis (`ExampleInputStream` et `ExampleOutputStream`).
+ Un compartiment Amazon S3 pour stocker le code de l’application (`ka-app-code-<username>`) 

Vous pouvez créer les flux Kinesis et un compartiment S3 à l’aide de la console. Pour obtenir des instructions sur la création de ces ressources, consultez les rubriques suivantes :
+ [Création et mise à jour de flux de données](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) dans le *Guide du développeur Amazon Kinesis Data Streams*. Nommez vos flux de données **ExampleInputStream** et **ExampleOutputStream**.
+ [Comment créer un compartiment S3 ?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) dans le *Guide de l’utilisateur de la console Amazon Simple Storage Service*. Donnez au compartiment Amazon S3 un nom unique au monde en ajoutant votre nom de connexion, tel que **ka-app-code-*<username>***.

##### Écrire des exemples d'enregistrements dans le flux d'entrée
<a name="examples-sliding-write"></a>

Dans cette section, vous utilisez un script Python pour écrire les exemples d’enregistrements dans le flux pour que l’application les traite.

**Note**  
Cette section nécessite le kit [AWS SDK pour Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

1. Créez un fichier nommé `stock.py` avec le contenu suivant :

   ```
    
   import datetime
   import json
   import random
   import boto3
   
   STREAM_NAME = "ExampleInputStream"
   
   
   def get_data():
       return {
           "EVENT_TIME": datetime.datetime.now().isoformat(),
           "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]),
           "PRICE": round(random.random() * 100, 2),
       }
   
   
   def generate(stream_name, kinesis_client):
       while True:
           data = get_data()
           print(data)
           kinesis_client.put_record(
               StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey"
           )
   
   
   if __name__ == "__main__":
       generate(STREAM_NAME, boto3.client("kinesis"))
   ```

1. Exécutez le script `stock.py` : 

   ```
   $ python stock.py
   ```

   Maintenez le script en cours d’exécution pendant que vous terminez le reste du didacticiel.

##### Téléchargez et examinez le code de l'application
<a name="examples-sliding-download"></a>

Le code de l'application Java pour cet exemple est disponible sur GitHub. Pour télécharger le code d’application, procédez comme suit :

1. Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez [Installation de Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Cloner le référentiel distant à l’aide de la commande suivante :

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Accédez au répertoire `amazon-kinesis-data-analytics-java-examples/SlidingWindow`.

Le code d’application est situé dans le fichier `SlidingWindowStreamingJobWithParallelism.java`. Notez les informations suivantes à propos du code d’application :
+ L’application utilise une source Kinesis pour lire à partir du flux source. L’extrait de code suivant crée la source Kinesis :

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ L’application utilise l’opérateur `timeWindow` pour trouver la valeur minimale de chaque symbole boursier sur une fenêtre de 10 secondes qui glisse de 5 secondes. Le code suivant crée l’opérateur et envoie les données agrégées vers un nouveau récepteur Kinesis Data Streams :
+ Ajoutez l’instruction d’importation suivante :

  ```
  import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows; //flink 1.13 onward
  ```
+ L’application utilise l’opérateur `timeWindow` pour déterminer le nombre de valeurs de chaque symbole boursier sur une fenêtre de 5 secondes. Le code suivant crée l’opérateur et envoie les données agrégées vers un nouveau récepteur Kinesis Data Streams :

  ```
  input.flatMap(new Tokenizer()) // Tokenizer for generating words
                  .keyBy(0) // Logically partition the stream for each word
                 
  		.window(TumblingProcessingTimeWindows.of(Time.seconds(5))) //Flink 1.13 onward
                  .sum(1) // Sum the number of words per partition
                  .map(value -> value.f0 + "," + value.f1.toString() + "\n")
                  .addSink(createSinkFromStaticConfig());
  ```

##### Compilez le code de l'application
<a name="examples-sliding-compile"></a>

Pour compiler l’application, procédez comme suit :

1. Installez Java et Maven si ce n’est pas déjà fait. Pour plus d’informations, consultez [Complétez les prérequis requis](getting-started.md#setting-up-prerequisites) dans le didacticiel [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md).

1. Compilez l’application à l’aide de la commande suivante : 

   ```
   mvn package -Dflink.version=1.15.3
   ```
**Note**  
Le code source fourni repose sur les bibliothèques de Java 11. 

La compilation de l’application crée le fichier JAR de l’application (`target/aws-kinesis-analytics-java-apps-1.0.jar`).

##### Téléchargez le code Java de streaming Apache Flink
<a name="examples-sliding-upload"></a>

Dans cette section, vous allez charger votre code d’application dans le compartiment Amazon S3 que vous avez créé dans la section [Création de ressources dépendantes](#examples-sliding-resources).

1. Dans la console Amazon S3, choisissez le *<username>* compartiment **ka-app-code-**, puis choisissez **Upload**.

1. À l’étape **Sélectionner les fichiers**, choisissez **Ajouter des fichiers**. Accédez au fichier `aws-kinesis-analytics-java-apps-1.0.jar` que vous avez créé à l’étape précédente. 

1. Vous n’avez pas besoin de modifier les paramètres de l’objet, donc choisissez **Charger**.

Votre code d’application est désormais stocké dans un compartiment Amazon S3 auquel votre application peut accéder.

##### Création et exécution du service géré pour l'application Apache Flink
<a name="examples-sliding-create-run"></a>

Suivez ces étapes pour créer, configurer, mettre à jour et exécuter l’application à l’aide de la console.

##### Pour créer l’application
<a name="examples-sliding-create"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le tableau de bord du service géré pour Apache Flink, choisissez **Créer une application d’analyse**.

1. Sur la page **Service géré pour Apache Flink - Créer une application**, fournissez les détails de l’application comme suit :
   + Pour **Nom de l’application**, saisissez **MyApplication**.
   + Pour **Exécution**, choisissez **Apache Flink**.
   + Laissez le menu déroulant de la version sur **Apache Flink version 1.15.2 (version recommandée)**.

1. Pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM) `kinesis-analytics-MyApplication-us-west-2`**.

1. Choisissez **Créer une application**.

**Note**  
Lorsque vous créez une application de service géré pour Apache Flink à l’aide de la console, vous avez la possibilité de créer un rôle et une politique IAM pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces ressources IAM sont nommées en utilisant le nom de votre application et la région, comme suit :  
Stratégie : `kinesis-analytics-service-MyApplication-us-west-2`
Rôle : `kinesisanalytics-MyApplication-us-west-2`

##### Modifier la politique IAM
<a name="get-started-exercise-7-console-iam"></a>

Modifiez la politique IAM pour ajouter des autorisations afin d'accéder aux flux de données Kinesis.

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Choisissez **Stratégies**. Choisissez la politique **`kinesis-analytics-service-MyApplication-us-west-2`** créée pour vous par la console dans la section précédente. 

1. Sur la page **Récapitulatif**, choisissez **Modifier la politique**. Sélectionnez l’onglet **JSON**.

1. Ajoutez la section mise en surbrillance dans l’exemple de stratégie suivant à la politique. Remplacez le compte d'exemple IDs (*012345678901*) par votre identifiant de compte.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "logs:DescribeLogGroups",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*",
                   "arn:aws:s3:::ka-app-code-<username>/aws-kinesis-analytics-java-apps-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": "logs:DescribeLogStreams",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": "logs:PutLogEvents",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
           },
           {
               "Sid": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Configuration de l'application
<a name="examples-sliding-configure"></a>

1. Sur la **MyApplication**page, choisissez **Configurer**.

1. Sur la page **Configurer l’application**, indiquez l’**emplacement du code**:
   + Pour le compartiment **Amazon S3**, saisissez **ka-app-code-*<username>***.
   + Pour le **chemin de l'objet Amazon S3**, saisissez **aws-kinesis-analytics-java-apps-1.0.jar**.

1. Sous **Accéder aux ressources de l’application**, pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM `kinesis-analytics-MyApplication-us-west-2`**.

1. Sous **Surveillance**, assurez-vous que **Surveillance du niveau des métriques** est défini sur **Application**.

1. Pour la **CloudWatch journalisation**, cochez la case **Activer**.

1. Choisissez **Mettre à jour**.

**Note**  
Lorsque vous choisissez d'activer la CloudWatch journalisation Amazon, Managed Service for Apache Flink crée un groupe de journaux et un flux de journaux pour vous. Les noms de ces ressources sont les suivants :   
Groupe de journaux : `/aws/kinesis-analytics/MyApplication`
Flux de journaux : `kinesis-analytics-log-stream`
Ce flux de journaux est utilisé pour surveiller l’application. Il ne s’agit pas du même flux de journaux que celui utilisé par l’application pour envoyer les résultats.

##### Configuration du parallélisme des applications
<a name="examples-sliding-parallelism"></a>

Cet exemple d’application utilise l’exécution parallèle de tâches. Le code d’application suivant définit le parallélisme de l’opérateur `min` :

```
.setParallelism(3) // Set parallelism for the min operator
```

Le parallélisme de l’application ne peut pas être supérieur au parallélisme provisionné, dont la valeur par défaut est 1. Pour augmenter le parallélisme de votre application, procédez comme suit : AWS CLI 

```
aws kinesisanalyticsv2 update-application
      --application-name MyApplication
      --current-application-version-id <VersionId>
      --application-configuration-update "{\"FlinkApplicationConfigurationUpdate\": { \"ParallelismConfigurationUpdate\": {\"ParallelismUpdate\": 5, \"ConfigurationTypeUpdate\": \"CUSTOM\" }}}"
```

Vous pouvez récupérer l'ID de version actuel de l'application à l'aide [ListApplications](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ListApplications.html)des actions [DescribeApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_DescribeApplication.html)ou.

##### Exécutez l'application
<a name="examples-sliding-run"></a>

Le graphique des tâches Flink peut être visualisé en exécutant l’application, en ouvrant le tableau de bord Apache Flink et en choisissant la tâche Flink souhaitée.

Vous pouvez vérifier les métriques du service géré pour Apache Flink sur la CloudWatch console pour vérifier que l'application fonctionne. 

##### Nettoyer les AWS ressources
<a name="examples-sliding-cleanup"></a>

Cette section inclut les procédures de nettoyage AWS des ressources créées dans le didacticiel Sliding Window.

**Topics**
+ [Supprimer votre application Managed Service for Apache Flink](#examples-sliding-cleanup-app)
+ [Supprimer vos flux de données Kinesis](#examples-sliding-cleanup-stream)
+ [Supprimer votre objet et votre compartiment Amazon S3](#examples-sliding-cleanup-s3)
+ [Supprimer vos ressources IAM](#examples-sliding-cleanup-iam)
+ [Supprimer vos CloudWatch ressources](#examples-sliding-cleanup-cw)

##### Supprimer votre application Managed Service for Apache Flink
<a name="examples-sliding-cleanup-app"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le panneau Managed Service for Apache Flink, choisissez **MyApplication**.

1. Sur la page de l’application, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer vos flux de données Kinesis
<a name="examples-sliding-cleanup-stream"></a>

1. [Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Dans le panneau Kinesis Data Streams, **ExampleInputStream**sélectionnez.

1. Sur la **ExampleInputStream**page, choisissez **Supprimer Kinesis Stream**, puis confirmez la suppression.

1. Sur la page **Kinesis Streams**, choisissez le **ExampleOutputStream**, choisissez **Actions**, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer votre objet et votre compartiment Amazon S3
<a name="examples-sliding-cleanup-s3"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez le ***<username>*compartiment ka-app-code -.**

1. Choisissez **Supprimer**, puis saisissez le nombre du compartiment pour confirmer la suppression.

##### Supprimer vos ressources IAM
<a name="examples-sliding-cleanup-iam"></a>

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans la barre de navigation, choisissez **Stratégies**.

1. Dans le contrôle du filtre, saisissez **kinesis**.

1. Choisissez la politique **kinesis-analytics-service- MyApplication -us-west-2**.

1. Choisissez **Actions de stratégie**, puis **Supprimer**.

1. Dans la barre de navigation, choisissez **Rôles**.

1. Choisissez le rôle **kinesis-analytics- MyApplication** -us-west-2.

1. Choisissez **Supprimer le rôle**, puis confirmez la suppression.

##### Supprimer vos CloudWatch ressources
<a name="examples-sliding-cleanup-cw"></a>

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans la barre de navigation, choisissez **Journaux**.

1. Choisissez le groupe**/aws/kinesis-analytics/MyApplication**log.

1. Choisissez **Supprimer le groupe de journaux**, puis confirmez la suppression.

#### Exemple : écriture dans un compartiment Amazon S3
<a name="examples-s3"></a>

Dans cet exercice, vous allez créer une application de service géré pour Apache Flink qui utilise un flux de données Kinesis comme source et un compartiment Amazon S3 comme récepteur. À l’aide du récepteur, vous pouvez vérifier la sortie de l’application dans la console Amazon S3. 

**Note**  
Pour configurer les prérequis requis pour cet exercice, commencez par terminer l’exercice [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md).

**Topics**
+ [Création de ressources dépendantes](#examples-s3-resources)
+ [Écrire des exemples d'enregistrements dans le flux d'entrée](#examples-s3-write)
+ [Téléchargez et examinez le code de l'application](#examples-s3-download)
+ [Modifier le code de l'application](#examples-s3-modify)
+ [Compilez le code de l'application](#examples-s3-compile)
+ [Téléchargez le code Java de streaming Apache Flink](#examples-s3-upload)
+ [Création et exécution du service géré pour l'application Apache Flink](#examples-s3-create-run)
+ [Vérifiez le résultat de l'application](#examples-s3-verify)
+ [Facultatif : personnalisez la source et le récepteur](#examples-s3-customize)
+ [Nettoyer les AWS ressources](#examples-s3-cleanup)

##### Création de ressources dépendantes
<a name="examples-s3-resources"></a>

Avant de créer un service géré pour Apache Flink dans le cadre de cet exercice, vous commencez par créer les ressources dépendantes suivantes : 
+ Un flux de données Kinesis (`ExampleInputStream`).
+ Un compartiment Amazon S3 pour stocker le code et la sortie de l’application (`ka-app-code-<username>`) 

**Note**  
Le service géré pour Apache Flink ne peut pas écrire de données sur Amazon S3 lorsque le chiffrement côté serveur est activé sur le service géré pour Apache Flink.

Vous pouvez créer un flux Kinesis et un compartiment S3 à l’aide de la console. Pour obtenir des instructions sur la création de ces ressources, consultez les rubriques suivantes :
+ [Création et mise à jour de flux de données](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) dans le *Guide du développeur Amazon Kinesis Data Streams*. Attribuez un nom à votre flux de données **ExampleInputStream**.
+ [Comment créer un compartiment S3 ?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) dans le *Guide de l’utilisateur de la console Amazon Simple Storage Service*. Donnez au compartiment Amazon S3 un nom unique au monde en ajoutant votre nom de connexion, tel que **ka-app-code-*<username>***. Créez deux dossiers (**code** et **data**) dans le compartiment Amazon S3.

L'application crée les CloudWatch ressources suivantes si elles n'existent pas déjà :
+ Un groupe de journaux appelé `/AWS/KinesisAnalytics-java/MyApplication`.
+ Un flux de journaux appelé `kinesis-analytics-log-stream`

##### Écrire des exemples d'enregistrements dans le flux d'entrée
<a name="examples-s3-write"></a>

Dans cette section, vous utilisez un script Python pour écrire les exemples d’enregistrements dans le flux pour que l’application les traite.

**Note**  
Cette section nécessite le kit [AWS SDK pour Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

1. Créez un fichier nommé `stock.py` avec le contenu suivant :

   ```
       import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. Exécutez le script `stock.py` : 

   ```
   $ python stock.py
   ```

   Maintenez le script en cours d’exécution pendant que vous terminez le reste du didacticiel.

##### Téléchargez et examinez le code de l'application
<a name="examples-s3-download"></a>

Le code de l'application Java pour cet exemple est disponible sur GitHub. Pour télécharger le code d’application, procédez comme suit :

1. Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez [Installation de Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Cloner le référentiel distant à l’aide de la commande suivante :

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Accédez au répertoire `amazon-kinesis-data-analytics-java-examples/S3Sink`.

Le code d’application est situé dans le fichier `S3StreamingSinkJob.java`. Notez les informations suivantes à propos du code d’application :
+ L’application utilise une source Kinesis pour lire à partir du flux source. L’extrait de code suivant crée la source Kinesis :

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ Vous devez ajouter l’instruction d’importation suivante :

  ```
  import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows;
  ```
+ L’application utilise un récepteur Apache Flink S3 pour écrire sur Amazon S3. 

  Le récepteur lit les messages dans une fenêtre défilante, code les messages dans des objets du compartiment S3 et envoie les objets codés au récepteur S3. Le code suivant code les objets à envoyer à Amazon S3 :

  ```
  input.map(value -> { // Parse the JSON
                  JsonNode jsonNode = jsonParser.readValue(value, JsonNode.class);
                  return new Tuple2<>(jsonNode.get("ticker").toString(), 1);
              }).returns(Types.TUPLE(Types.STRING, Types.INT))
              .keyBy(v -> v.f0) // Logically partition the stream for each word
              .window(TumblingProcessingTimeWindows.of(Time.minutes(1)))
              .sum(1) // Count the appearances by ticker per partition
              .map(value -> value.f0 + " count: " + value.f1.toString() + "\n")
              .addSink(createS3SinkFromStaticConfig());
  ```

**Note**  
L’application utilise un objet `StreamingFileSink` Flink pour écrire sur Amazon S3. Pour plus d'informations à ce sujet`StreamingFileSink`, consultez [StreamingFileSink](https://nightlies.apache.org/flink/flink-docs-release-1.13/dev/connectors/streamfile_sink.html)la [documentation d'Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.13/).

##### Modifier le code de l'application
<a name="examples-s3-modify"></a>

Dans cette section, vous modifiez le code de l’application pour écrire le résultat dans votre compartiment Amazon S3.

Mettez à jour la ligne suivante avec votre nom d’utilisateur pour spécifier l’emplacement de sortie de l’application :

```
private static final String s3SinkPath = "s3a://ka-app-code-<username>/data";
```

##### Compilez le code de l'application
<a name="examples-s3-compile"></a>

Pour compiler l’application, procédez comme suit :

1. Installez Java et Maven si ce n’est pas déjà fait. Pour plus d’informations, consultez [Complétez les prérequis requis](getting-started.md#setting-up-prerequisites) dans le didacticiel [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md).

1. Compilez l’application à l’aide de la commande suivante : 

   ```
   mvn package -Dflink.version=1.15.3
   ```

La compilation de l’application crée le fichier JAR de l’application (`target/aws-kinesis-analytics-java-apps-1.0.jar`).

**Note**  
Le code source fourni repose sur les bibliothèques de Java 11. 

##### Téléchargez le code Java de streaming Apache Flink
<a name="examples-s3-upload"></a>

Dans cette section, vous allez charger votre code d’application dans le compartiment Amazon S3 que vous avez créé dans la section [Création de ressources dépendantesÉcrire des exemples d'enregistrements dans le flux d'entrée](#examples-s3-resources).

1. Dans la console Amazon S3, choisissez le *<username>* compartiment **ka-app-code-**, accédez au dossier de **code**, puis choisissez **Upload**.

1. À l’étape **Sélectionner les fichiers**, choisissez **Ajouter des fichiers**. Accédez au fichier `aws-kinesis-analytics-java-apps-1.0.jar` que vous avez créé à l’étape précédente. 

1. Vous n’avez pas besoin de modifier les paramètres de l’objet, donc choisissez **Charger**.

Votre code d’application est désormais stocké dans un compartiment Amazon S3 auquel votre application peut accéder.

##### Création et exécution du service géré pour l'application Apache Flink
<a name="examples-s3-create-run"></a>

Suivez ces étapes pour créer, configurer, mettre à jour et exécuter l’application à l’aide de la console.

##### Pour créer l’application
<a name="examples-s3-create"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le tableau de bord du service géré pour Apache Flink, choisissez **Créer une application d’analyse**.

1. Sur la page **Service géré pour Apache Flink - Créer une application**, fournissez les détails de l’application comme suit :
   + Pour **Nom de l’application**, saisissez **MyApplication**.
   + Pour **Exécution**, choisissez **Apache Flink**.
   + Laissez le menu déroulant de la version sur **Apache Flink version 1.15.2 (version recommandée)**.

1. Pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM) `kinesis-analytics-MyApplication-us-west-2`**.

1. Choisissez **Créer une application**.
**Note**  
Lorsque vous créez une application de service géré pour Apache Flink à l’aide de la console, vous avez la possibilité de créer un rôle et une politique IAM pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces ressources IAM sont nommées en utilisant le nom de votre application et la région, comme suit :  
Pour **Nom de l’application**, saisissez **MyApplication**.
Pour **Exécution**, choisissez **Apache Flink**.
Laissez la version sur **Apache Flink 1.15.2 (version recommandée)**.

1. Pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM) `kinesis-analytics-MyApplication-us-west-2`**.

1. Choisissez **Créer une application**.

**Note**  
Lorsque vous créez un service géré pour Apache Flink à l’aide de la console, vous avez la possibilité de créer un rôle et une politique IAM pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces ressources IAM sont nommées en utilisant le nom de votre application et la région, comme suit :  
Stratégie : `kinesis-analytics-service-MyApplication-us-west-2`
Rôle : `kinesisanalytics-MyApplication-us-west-2`

##### Modifier la politique IAM
<a name="get-started-exercise-7-console-iam"></a>

Modifiez la politique IAM pour ajouter des autorisations afin d’accéder aux flux de données Kinesis.

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Choisissez **Stratégies**. Choisissez la politique **`kinesis-analytics-service-MyApplication-us-west-2`** créée pour vous par la console dans la section précédente. 

1. Sur la page **Récapitulatif**, choisissez **Modifier la politique**. Sélectionnez l’onglet **JSON**.

1. Ajoutez la section mise en surbrillance dans l’exemple de stratégie suivant à la politique. Remplacez le compte d'exemple IDs (*012345678901*) par votre identifiant de compte. Remplacez <username> par votre nom d’utilisateur.

   ```
   {
               "Sid": "S3",
               "Effect": "Allow",
               "Action": [
                   "s3:Abort*",
                   "s3:DeleteObject*",
                   "s3:GetObject*",
                   "s3:GetBucket*",
                   "s3:List*",
                   "s3:ListBucket",
                   "s3:PutObject"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-<username>",
                   "arn:aws:s3:::ka-app-code-<username>/*"
               ]
             }, 
           {
               "Sid": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:region:account-id:log-group:*"
               ]
           },
           {
               "Sid": "ListCloudwatchLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:region:account-id:log-group:%LOG_GROUP_PLACEHOLDER%:log-stream:*"
               ]
           },
           {
               "Sid": "PutCloudwatchLogs",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:region:account-id:log-group:%LOG_GROUP_PLACEHOLDER%:log-stream:%LOG_STREAM_PLACEHOLDER%"
               ]
           }
           ,
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           
       ]
   }
   ```

##### Configuration de l'application
<a name="examples-s3-configure"></a>

1. Sur la **MyApplication**page, choisissez **Configurer**.

1. Sur la page **Configurer l’application**, indiquez l’**emplacement du code**:
   + Pour le compartiment **Amazon S3**, saisissez **ka-app-code-*<username>***.
   + Pour le **chemin de l'objet Amazon S3**, saisissez **code/aws-kinesis-analytics-java-apps-1.0.jar**.

1. Sous **Accéder aux ressources de l’application**, pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM `kinesis-analytics-MyApplication-us-west-2`**.

1. Sous **Surveillance**, assurez-vous que **Surveillance du niveau des métriques** est défini sur **Application**.

1. Pour la **CloudWatch journalisation**, cochez la case **Activer**.

1. Choisissez **Mettre à jour**.

**Note**  
Lorsque vous choisissez d'activer la CloudWatch journalisation, le service géré pour Apache Flink crée un groupe de journaux et un flux de journaux pour vous. Les noms de ces ressources sont les suivants :   
Groupe de journaux : `/aws/kinesis-analytics/MyApplication`
Flux de journaux : `kinesis-analytics-log-stream`
Ce flux de journaux est utilisé pour surveiller l’application. Il ne s’agit pas du même flux de journaux que celui utilisé par l’application pour envoyer les résultats.

##### Exécutez l'application
<a name="examples-s3-run"></a>

1. Sur la **MyApplication**page, choisissez **Exécuter**. Laissez l’option **Exécuter sans instantané** sélectionnée et confirmez l’action.

1. Lorsque l’application est en cours d’exécution, actualisez la page. La console affiche le **graphique de l’application**.

##### Vérifiez le résultat de l'application
<a name="examples-s3-verify"></a>

Dans la console Amazon S3, ouvrez le dossier de **données** dans votre compartiment S3.

Au bout de quelques minutes, des objets contenant des données agrégées provenant de l’application apparaîtront.

**Note**  
L’agrégation est activée par défaut dans Flink. Pour la désactiver, utilisez la commande suivante :  

```
sink.producer.aggregation-enabled' = 'false'
```

##### Facultatif : personnalisez la source et le récepteur
<a name="examples-s3-customize"></a>

Dans cette section, vous allez personnaliser les paramètres des objets source et récepteur.

**Note**  
Après avoir modifié les sections de code décrites dans les sections suivantes, procédez comme suit pour recharger le code de l’application :  
Répétez les étapes décrites dans la section [Compilez le code de l'application](#examples-s3-compile) pour compiler le code d’application mis à jour.
Répétez les étapes décrites dans la section [Téléchargez le code Java de streaming Apache Flink](#examples-s3-upload) pour télécharger le code d’application mis à jour.
Sur la page de l’application dans la console, choisissez **Configurer**, puis choisissez **Mettre à jour** pour recharger le code d’application mis à jour dans votre application.

**Topics**
+ [Configuration du partitionnement des données](#examples-s3-configure-partition)
+ [Configuration de la fréquence de lecture](#examples-s3-configure-read)
+ [Configuration de la mise en mémoire tampon d'écriture](#examples-s3-configure-write)

##### Configuration du partitionnement des données
<a name="examples-s3-configure-partition"></a>

Dans cette section, vous allez configurer les noms des dossiers créés par le récepteur de fichiers de streaming dans le compartiment S3. Pour ce faire, ajoutez un assignateur de compartiment au récepteur de fichiers de streaming.

Pour personnaliser les noms de dossiers créés dans le compartiment S3, procédez comme suit :

1. Ajoutez les instructions d’importation suivantes au début du fichier `S3StreamingSinkJob.java` :

   ```
   import org.apache.flink.streaming.api.functions.sink.filesystem.rollingpolicies.DefaultRollingPolicy;
   import org.apache.flink.streaming.api.functions.sink.filesystem.bucketassigners.DateTimeBucketAssigner;
   ```

1. Mettez à jour la méthode `createS3SinkFromStaticConfig()` dans le code pour qu’elle se présente comme suit :

   ```
   private static StreamingFileSink<String> createS3SinkFromStaticConfig() {
   
       final StreamingFileSink<String> sink = StreamingFileSink
           .forRowFormat(new Path(s3SinkPath), new SimpleStringEncoder<String>("UTF-8"))
           .withBucketAssigner(new DateTimeBucketAssigner("yyyy-MM-dd--HH"))
           .withRollingPolicy(DefaultRollingPolicy.create().build())
           .build();
       return sink;
   }
   ```

L’exemple de code précédent utilise le `DateTimeBucketAssigner` avec un format de date personnalisé pour créer des dossiers dans le compartiment S3. Le `DateTimeBucketAssigner` utilise l’heure actuelle du système pour créer les noms des compartiments. Si vous souhaitez créer un assignateur de compartiment personnalisé afin de personnaliser davantage les noms de dossiers créés, vous pouvez créer une classe qui implémente [BucketAssigner](https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/streaming/api/functions/sink/filesystem/BucketAssigner.html). Vous implémentez votre logique personnalisée à l’aide de la méthode `getBucketId`.

Une implémentation personnalisée du `BucketAssigner` peut utiliser le paramètre [Context](https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/streaming/api/functions/sink/filesystem/BucketAssigner.Context.html) pour obtenir plus d’informations sur un enregistrement afin de déterminer son dossier de destination.

##### Configuration de la fréquence de lecture
<a name="examples-s3-configure-read"></a>

Dans cette section, vous allez configurer la fréquence des lectures sur le flux source.

Par défaut, le consommateur Kinesis Streams lit le flux source cinq fois par seconde. Cette fréquence peut entraîner des problèmes si plusieurs clients lisent le flux ou si l’application doit réessayer de lire un enregistrement. Vous pouvez éviter ces problèmes en définissant la fréquence de lecture du consommateur.

Pour définir la fréquence de lecture du client Kinesis, vous devez définir le paramètre `SHARD_GETRECORDS_INTERVAL_MILLIS`.

L’exemple de code suivant définit le paramètre `SHARD_GETRECORDS_INTERVAL_MILLIS` sur une seconde :

```
kinesisConsumerConfig.setProperty(ConsumerConfigConstants.SHARD_GETRECORDS_INTERVAL_MILLIS, "1000");
```

##### Configuration de la mise en mémoire tampon d'écriture
<a name="examples-s3-configure-write"></a>

Dans cette section, vous allez configurer la fréquence d’écriture et les autres paramètres du récepteur.

Par défaut, l’application écrit dans le compartiment de destination toutes les minutes. Vous pouvez modifier cet intervalle et d’autres paramètres en configurant l’objet `DefaultRollingPolicy`.

**Note**  
Le récepteur de fichiers de streaming Apache Flink écrit dans son compartiment de sortie chaque fois que l’application crée un point de contrôle. L’application crée un point de contrôle toutes les minutes par défaut. Pour augmenter l’intervalle d’écriture du récepteur S3, vous devez également augmenter l’intervalle de point de contrôle.

Pour configurer l’objet `DefaultRollingPolicy`, procédez comme suit :

1. Augmentez le paramètre `CheckpointInterval` de l’application. L'entrée suivante pour l'[ UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)action définit l'intervalle entre les points de contrôle à 10 minutes :

   ```
   {
      "ApplicationConfigurationUpdate": {  
         "FlinkApplicationConfigurationUpdate": { 
            "CheckpointConfigurationUpdate": {
               "ConfigurationTypeUpdate" : "CUSTOM", 
               "CheckpointIntervalUpdate": 600000
            }
         }
      },
      "ApplicationName": "MyApplication",
      "CurrentApplicationVersionId": 5
   }
   ```

   Pour utiliser le code précédent, spécifiez la version actuelle de l’application. Vous pouvez récupérer la version de l'application à l'aide de l'[ListApplications](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ListApplications.html)action.

1. Ajoutez l’instruction d’importation suivante au début du fichier `S3StreamingSinkJob.java` :

   ```
   import java.util.concurrent.TimeUnit; 
   ```

1. Mettez à jour la méthode `createS3SinkFromStaticConfig` dans le fichier `S3StreamingSinkJob.java` pour qu’elle se présente comme suit :

   ```
   private static StreamingFileSink<String> createS3SinkFromStaticConfig() {
   
           final StreamingFileSink<String> sink = StreamingFileSink
                   .forRowFormat(new Path(s3SinkPath), new SimpleStringEncoder<String>("UTF-8"))
                   .withBucketAssigner(new DateTimeBucketAssigner("yyyy-MM-dd--HH"))
                   .withRollingPolicy(
                           DefaultRollingPolicy.create()
                               .withRolloverInterval(TimeUnit.MINUTES.toMillis(8))
                               .withInactivityInterval(TimeUnit.MINUTES.toMillis(5))
                               .withMaxPartSize(1024 * 1024 * 1024)
                               .build())
                   .build();
           return sink;
       }
   ```

   L’exemple de code précédent définit la fréquence des écritures dans le compartiment Amazon S3 à 8 minutes.

Pour plus d’informations sur la configuration du récepteur de fichiers de streaming Apache Flink, consultez la section [Row-encoded Formats](https://nightlies.apache.org/flink/flink-docs-release-1.13/dev/connectors/streamfile_sink.html#row-encoded-formats) dans la [documentation d’Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.13/).

##### Nettoyer les AWS ressources
<a name="examples-s3-cleanup"></a>

Cette section inclut les procédures de nettoyage AWS des ressources que vous avez créées dans le didacticiel Amazon S3.

**Topics**
+ [Supprimer votre application Managed Service for Apache Flink](#examples-s3-cleanup-app)
+ [Supprimer votre flux de données Kinesis](#examples-s3-cleanup-stream)
+ [Supprimer vos objets et votre compartiment Amazon S3](#examples-s3-cleanup-s3)
+ [Supprimer vos ressources IAM](#examples-s3-cleanup-iam)
+ [Supprimer vos CloudWatch ressources](#examples-s3-cleanup-cw)

##### Supprimer votre application Managed Service for Apache Flink
<a name="examples-s3-cleanup-app"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le panneau Managed Service for Apache Flink, choisissez **MyApplication**.

1. Sur la page de l’application, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer votre flux de données Kinesis
<a name="examples-s3-cleanup-stream"></a>

1. [Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Dans le panneau Kinesis Data Streams, **ExampleInputStream**sélectionnez.

1. Sur la **ExampleInputStream**page, choisissez **Supprimer Kinesis Stream**, puis confirmez la suppression.

##### Supprimer vos objets et votre compartiment Amazon S3
<a name="examples-s3-cleanup-s3"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez le ***<username>*compartiment ka-app-code -.**

1. Choisissez **Supprimer**, puis saisissez le nombre du compartiment pour confirmer la suppression.

##### Supprimer vos ressources IAM
<a name="examples-s3-cleanup-iam"></a>

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans la barre de navigation, choisissez **Stratégies**.

1. Dans le contrôle du filtre, saisissez **kinesis**.

1. Choisissez la politique **kinesis-analytics-service- MyApplication -us-west-2**.

1. Choisissez **Actions de stratégie**, puis **Supprimer**.

1. Dans la barre de navigation, choisissez **Rôles**.

1. Choisissez le rôle **kinesis-analytics- MyApplication** -us-west-2.

1. Choisissez **Supprimer le rôle**, puis confirmez la suppression.

##### Supprimer vos CloudWatch ressources
<a name="examples-s3-cleanup-cw"></a>

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans la barre de navigation, choisissez **Journaux**.

1. Choisissez le groupe**/aws/kinesis-analytics/MyApplication**log.

1. Choisissez **Supprimer le groupe de journaux**, puis confirmez la suppression.

#### Tutoriel : Utilisation d'un service géré pour l'application Apache Flink afin de répliquer des données d'un sujet d'un cluster MSK vers un autre dans un VPC
<a name="example-msk"></a>

**Note**  
Pour des exemples actuels, voir[Exemples de création et d'utilisation d'un service géré pour les applications Apache Flink](examples-collapsibles.md).

Le didacticiel suivant explique comment créer un Amazon VPC avec un cluster Amazon MSK et deux rubriques, et comment créer une application de service géré pour une Apache Flink qui lit une rubrique Amazon MSK et écrit dans une autre.

**Note**  
Pour configurer les prérequis requis pour cet exercice, commencez par terminer l’exercice [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md). 

**Topics**
+ [Créer un Amazon VPC avec un cluster Amazon MSK](#example-msk-createcluster)
+ [Créez le code de l'application](#example-msk-code)
+ [Téléchargez le code Java de streaming Apache Flink](#example-msk-upload)
+ [Pour créer l’application](#example-msk-create)
+ [Configuration de l'application](#example-msk-configure)
+ [Exécutez l'application](#example-msk-run)
+ [Tester l'application](#example-msk-test)

##### Créer un Amazon VPC avec un cluster Amazon MSK
<a name="example-msk-createcluster"></a>

Pour créer un exemple de VPC et de cluster Amazon MSK auquel accéder depuis une application de service géré pour Apache Flink, suivez le didacticiel [Mise en route avec Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html).

Lorsque vous avez terminé le didacticiel, notez ce qui suit :
+ À l’[étape 3 : création d’une rubrique](https://docs.aws.amazon.com/msk/latest/developerguide/create-topic.html), répétez la commande `kafka-topics.sh --create` pour créer une rubrique de destination nommée `AWSKafkaTutorialTopicDestination` :

  ```
  bin/kafka-topics.sh --create --zookeeper ZooKeeperConnectionString --replication-factor 3 --partitions 1 --topic AWS KafkaTutorialTopicDestination
  ```
+ Enregistrez la liste des serveurs bootstrap de votre cluster. Vous pouvez obtenir la liste des serveurs bootstrap à l'aide de la commande suivante (remplacez-la *ClusterArn* par l'ARN de votre cluster MSK) :

  ```
  aws kafka get-bootstrap-brokers --region us-west-2 --cluster-arn ClusterArn
  {...
      "BootstrapBrokerStringTls": "b-2.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-1.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-3.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094"
  }
  ```
+ Lorsque vous suivez les étapes décrites dans les didacticiels, veillez à utiliser AWS la région sélectionnée dans le code, les commandes et les entrées de console.

##### Créez le code de l'application
<a name="example-msk-code"></a>

Dans cette section, vous allez télécharger et compiler le fichier JAR de l’application. Nous vous recommandons d’utiliser Java 11.

Le code de l'application Java pour cet exemple est disponible sur GitHub. Pour télécharger le code d’application, procédez comme suit :

1. Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez [Installation de Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Cloner le référentiel distant à l’aide de la commande suivante :

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Le code d’application est situé dans le fichier `amazon-kinesis-data-analytics-java-examples/KafkaConnectors/KafkaGettingStartedJob.java`. Vous pouvez examiner le code pour vous familiariser avec la structure du code de l’application de service géré pour Apache Flink.

1. Utilisez l’outil de ligne de commande Maven ou votre environnement de développement préféré pour créer le fichier JAR. Pour compiler le fichier JAR à l’aide de l’outil de ligne de commande Maven, saisissez ce qui suit :

   ```
   mvn package -Dflink.version=1.15.3
   ```

   En cas de succès de la génération, le fichier suivant est créé :

   ```
   target/KafkaGettingStartedJob-1.0.jar
   ```
**Note**  
Le code source fourni repose sur les bibliothèques de Java 11. Si vous utilisez un environnement de développement, 

##### Téléchargez le code Java de streaming Apache Flink
<a name="example-msk-upload"></a>

Dans cette section, vous allez charger votre code d’application dans le compartiment Amazon S3 que vous avez créé dans le didacticiel [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md).

**Note**  
Si vous avez supprimé le compartiment Amazon S3 du didacticiel Mise en route, suivez à nouveau l’étape [Téléchargez le fichier JAR du code de l'application](get-started-exercise.md#get-started-exercise-6).

1. Dans la console Amazon S3, choisissez le *<username>* compartiment **ka-app-code-**, puis **Upload**.

1. À l’étape **Sélectionner les fichiers**, choisissez **Ajouter des fichiers**. Accédez au fichier `KafkaGettingStartedJob-1.0.jar` que vous avez créé à l’étape précédente. 

1. Vous n’avez pas besoin de modifier les paramètres de l’objet, donc choisissez **Charger**.

Votre code d’application est désormais stocké dans un compartiment Amazon S3 auquel votre application peut accéder.

##### Pour créer l’application
<a name="example-msk-create"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink..

1. Dans le tableau de bord du service géré pour Apache Flink, choisissez **Créer une application d’analyse**.

1. Sur la page **Service géré pour Apache Flink - Créer une application**, fournissez les détails de l’application comme suit :
   + Pour **Nom de l’application**, saisissez **MyApplication**.
   + Pour **Exécution**, choisissez **Apache Flink 1.15.2**.

1. Pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM) `kinesis-analytics-MyApplication-us-west-2`**.

1. Choisissez **Créer une application**.

**Note**  
Lorsque vous créez une application de service géré pour Apache Flink à l’aide de la console, vous avez la possibilité de créer un rôle et une politique IAM pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces ressources IAM sont nommées en utilisant le nom de votre application et la région, comme suit :  
Stratégie : `kinesis-analytics-service-MyApplication-us-west-2`
Rôle : `kinesisanalytics-MyApplication-us-west-2`

##### Configuration de l'application
<a name="example-msk-configure"></a>

1. Sur la **MyApplication**page, choisissez **Configurer**.

1. Sur la page **Configurer l’application**, indiquez l’**emplacement du code**:
   + Pour le compartiment **Amazon S3**, saisissez **ka-app-code-*<username>***.
   + Pour le **chemin de l'objet Amazon S3**, saisissez **KafkaGettingStartedJob-1.0.jar**.

1. Sous **Accéder aux ressources de l’application**, pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM `kinesis-analytics-MyApplication-us-west-2`**.
**Note**  
Lorsque vous spécifiez des ressources d'application à l'aide de la console (comme CloudWatch Logs ou un Amazon VPC), la console modifie votre rôle d'exécution d'application pour autoriser l'accès à ces ressources.

1. Sous **Propriétés**, sélectionnez **Ajouter un groupe**. Saisissez les propriétés suivantes :  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)
**Note**  
Le **ssl.truststore.password** du certificat par défaut est « changeit » ; vous n’avez pas besoin de modifier cette valeur si vous utilisez le certificat par défaut.

   Choisissez à nouveau **Ajouter un groupe**. Saisissez les propriétés suivantes :  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

   Le code de l’application lit les propriétés de l’application ci-dessus pour configurer la source et le récepteur utilisés pour interagir avec votre VPC et votre cluster Amazon MSK. Pour obtenir plus d’informations sur l’utilisation des propriétés, consultez [Utiliser les propriétés d'exécution](how-properties.md).

1. Sous **Instantanés**, choisissez **Désactiver**. Cela facilitera la mise à jour de l’application sans charger de données d’état de l’application non valides.

1. Sous **Surveillance**, assurez-vous que **Surveillance du niveau des métriques** est défini sur **Application**.

1. Pour la **CloudWatch journalisation**, cochez la case **Activer**.

1. Dans la section **Cloud privé virtuel (VPC)**, choisissez le VPC à associer à votre application. Choisissez les sous-réseaux et le groupe de sécurité associés à votre VPC que vous souhaitez que l’application utilise pour accéder aux ressources du VPC.

1. Choisissez **Mettre à jour**.

**Note**  
Lorsque vous choisissez d'activer la CloudWatch journalisation, le service géré pour Apache Flink crée un groupe de journaux et un flux de journaux pour vous. Les noms de ces ressources sont les suivants :   
Groupe de journaux : `/aws/kinesis-analytics/MyApplication`
Flux de journaux : `kinesis-analytics-log-stream`
Ce flux de journaux est utilisé pour surveiller l’application.

##### Exécutez l'application
<a name="example-msk-run"></a>

Le graphique des tâches Flink peut être visualisé en exécutant l’application, en ouvrant le tableau de bord Apache Flink et en choisissant la tâche Flink souhaitée.

##### Tester l'application
<a name="example-msk-test"></a>

Dans cette section, vous allez écrire des enregistrements dans a rubrique source. L’application lit les enregistrements de la rubrique source et les écrit dans la rubrique de destination. Vous vérifiez que l’application fonctionne en écrivant des enregistrements dans la rubrique source et en lisant des enregistrements dans la rubrique de destination.

Pour écrire et lire des enregistrements issus des rubriques, suivez les étapes décrites à l’[Étape 6 : produire et consommer des données](https://docs.aws.amazon.com/msk/latest/developerguide/produce-consume.html) du didacticiel [Mise en route avec Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html).

Pour lire la rubrique de destination, utilisez le nom de la rubrique de destination au lieu de la rubrique source lors de votre deuxième connexion au cluster :

```
bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerString --consumer.config client.properties --topic AWS KafkaTutorialTopicDestination --from-beginning
```

Si aucun enregistrement n’apparaît dans la rubrique de destination, consultez la section[Impossible d'accéder aux ressources d'un VPC](troubleshooting-symptoms.md#troubleshooting-rt-vpc) de la rubrique [Résoudre les problèmes liés au service géré pour Apache Flink](troubleshooting.md).

#### Exemple : utilisation d'un consommateur EFO avec un flux de données Kinesis
<a name="examples-efo"></a>

**Note**  
Pour des exemples actuels, voir[Exemples de création et d'utilisation d'un service géré pour les applications Apache Flink](examples-collapsibles.md).

Dans cet exercice, vous allez créer un service géré pour une application Apache Flink qui lit à partir d'un flux de données Kinesis à l'aide d'[un consommateur EFO (Enhanced Fan-Out](https://docs.aws.amazon.com/streams/latest/dev/enhanced-consumers.html)). Si un client Kinesis utilise EFO, le service Kinesis Data Streams lui fournit sa propre bande passante dédiée, au lieu que le consommateur partage la bande passante fixe du flux avec les autres consommateurs lisant le flux.

Pour plus d’informations sur l’utilisation d’EFO avec le consommateur Kinesis, consultez[ FLIP-128: Enhanced Fan Out for Kinesis Consumers](https://cwiki.apache.org/confluence/display/FLINK/FLIP-128%3A+Enhanced+Fan+Out+for+AWS+Kinesis+Consumers).

L'application que vous créez dans cet exemple utilise le connecteur AWS Kinesis (flink-connector-kinesis) 1.15.3.

**Note**  
Pour configurer les prérequis requis pour cet exercice, commencez par terminer l’exercice [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md).

**Topics**
+ [Création de ressources dépendantes](#examples-efo-resources)
+ [Écrire des exemples d'enregistrements dans le flux d'entrée](#examples-efo-write)
+ [Téléchargez et examinez le code de l'application](#examples-efo-download)
+ [Compilez le code de l'application](#examples-efo-compile)
+ [Téléchargez le code Java de streaming Apache Flink](#examples-efo-upload)
+ [Création et exécution du service géré pour l'application Apache Flink](#examples-efo-create-run)
+ [Nettoyer les AWS ressources](#examples-efo-cleanup)

##### Création de ressources dépendantes
<a name="examples-efo-resources"></a>

Avant de créer une application de service géré pour Apache Flink dans le cadre de cet exercice, vous commencez par créer les ressources dépendantes suivantes : 
+ Deux flux de données Kinesis (`ExampleInputStream` et `ExampleOutputStream`)
+ Un compartiment Amazon S3 pour stocker le code de l’application (`ka-app-code-<username>`) 

Vous pouvez créer les flux Kinesis et un compartiment S3 à l’aide de la console. Pour obtenir des instructions sur la création de ces ressources, consultez les rubriques suivantes :
+ [Création et mise à jour de flux de données](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) dans le *Guide du développeur Amazon Kinesis Data Streams*. Nommez votre flux de données **ExampleInputStream** et**ExampleOutputStream**.
+ [Comment créer un compartiment S3 ?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) dans le *Guide de l’utilisateur de la console Amazon Simple Storage Service*. Donnez au compartiment Amazon S3 un nom unique au monde en ajoutant votre nom de connexion, tel que **ka-app-code-*<username>***.

##### Écrire des exemples d'enregistrements dans le flux d'entrée
<a name="examples-efo-write"></a>

Dans cette section, vous utilisez un script Python pour écrire les exemples d’enregistrements dans le flux pour que l’application les traite.

**Note**  
Cette section nécessite le kit [AWS SDK pour Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

1. Créez un fichier nommé `stock.py` avec le contenu suivant :

   ```
    
       import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. Exécutez le script `stock.py` : 

   ```
   $ python stock.py
   ```

   Maintenez le script en cours d’exécution pendant que vous terminez le reste du didacticiel.

##### Téléchargez et examinez le code de l'application
<a name="examples-efo-download"></a>

Le code de l'application Java pour cet exemple est disponible sur GitHub. Pour télécharger le code d’application, procédez comme suit :

1. Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez [Installation de Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Cloner le référentiel distant à l’aide de la commande suivante :

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Accédez au répertoire `amazon-kinesis-data-analytics-java-examples/EfoConsumer`.

Le code d’application est situé dans le fichier `EfoApplication.java`. Notez les informations suivantes à propos du code d’application :
+ Vous activez le consommateur EFO en définissant les paramètres suivants sur le consommateur Kinesis :
  + **RECORD\$1PUBLISHER\$1TYPE :** définissez ce paramètre sur **EFO** pour que votre application utilise un consommateur EFO pour accéder aux données du flux de données Kinesis. 
  + **EFO\$1CONSUMER\$1NAME :** définissez ce paramètre sur une valeur de chaîne unique parmi les consommateurs de ce flux. La réutilisation d’un nom de consommateur dans le même flux de données Kinesis entraînera la résiliation du client qui utilisait ce nom précédemment. 
+ L’exemple de code suivant montre comment attribuer des valeurs aux propriétés de configuration du consommateur afin d’utiliser un consommateur EFO pour lire à partir du flux source :

  ```
  consumerConfig.putIfAbsent(RECORD_PUBLISHER_TYPE, "EFO");
  consumerConfig.putIfAbsent(EFO_CONSUMER_NAME, "basic-efo-flink-app");
  ```

##### Compilez le code de l'application
<a name="examples-efo-compile"></a>

Pour compiler l’application, procédez comme suit :

1. Installez Java et Maven si ce n’est pas déjà fait. Pour plus d’informations, consultez [Complétez les prérequis requis](getting-started.md#setting-up-prerequisites) dans le didacticiel [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md).

1. Compilez l’application à l’aide de la commande suivante : 

   ```
   mvn package -Dflink.version=1.15.3
   ```
**Note**  
Le code source fourni repose sur les bibliothèques de Java 11. 

La compilation de l’application crée le fichier JAR de l’application (`target/aws-kinesis-analytics-java-apps-1.0.jar`).

##### Téléchargez le code Java de streaming Apache Flink
<a name="examples-efo-upload"></a>

Dans cette section, vous allez charger votre code d’application dans le compartiment Amazon S3 que vous avez créé dans la section [Création de ressources dépendantes](#examples-efo-resources).

1. Dans la console Amazon S3, choisissez le *<username>* compartiment **ka-app-code-**, puis **Upload**.

1. À l’étape **Sélectionner les fichiers**, choisissez **Ajouter des fichiers**. Accédez au fichier `aws-kinesis-analytics-java-apps-1.0.jar` que vous avez créé à l’étape précédente. 

1. Vous n’avez pas besoin de modifier les paramètres de l’objet, donc choisissez **Charger**.

Votre code d’application est désormais stocké dans un compartiment Amazon S3 auquel votre application peut accéder.

##### Création et exécution du service géré pour l'application Apache Flink
<a name="examples-efo-create-run"></a>

Suivez ces étapes pour créer, configurer, mettre à jour et exécuter l’application à l’aide de la console.

##### Pour créer l’application
<a name="examples-efo-create"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le tableau de bord du service géré pour Apache Flink, choisissez **Créer une application d’analyse**.

1. Sur la page **Service géré pour Apache Flink - Créer une application**, fournissez les détails de l’application comme suit :
   + Pour **Nom de l’application**, saisissez **MyApplication**.
   + Pour **Exécution**, choisissez **Apache Flink**.
**Note**  
Le service géré pour Apache Flink utilise Apache Flink version 1.15.2.
   + Laissez le menu déroulant de la version sur **Apache Flink version 1.15.2 (version recommandée)**.

1. Pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM) `kinesis-analytics-MyApplication-us-west-2`**.

1. Choisissez **Créer une application**.

**Note**  
Lorsque vous créez une application de service géré pour Apache Flink à l’aide de la console, vous avez la possibilité de créer un rôle et une politique IAM pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces ressources IAM sont nommées en utilisant le nom de votre application et la région, comme suit :  
Stratégie : `kinesis-analytics-service-MyApplication-us-west-2`
Rôle : `kinesisanalytics-MyApplication-us-west-2`

##### Modifier la politique IAM
<a name="get-started-exercise-7-console-iam"></a>

Modifiez la politique IAM pour ajouter des autorisations afin d'accéder aux flux de données Kinesis.

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Choisissez **Stratégies**. Choisissez la politique **`kinesis-analytics-service-MyApplication-us-west-2`** créée pour vous par la console dans la section précédente. 

1. Sur la page **Récapitulatif**, choisissez **Modifier la politique**. Sélectionnez l’onglet **JSON**.

1. Ajoutez la section mise en surbrillance dans l’exemple de stratégie suivant à la politique. Remplacez le compte d'exemple IDs (*012345678901*) par votre identifiant de compte.
**Note**  
Ces autorisations permettent à l’application d’accéder au consommateur EFO.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "logs:DescribeLogGroups",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*",
                   "arn:aws:s3:::ka-app-code-<username>/aws-kinesis-analytics-java-apps-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": "logs:DescribeLogStreams",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": "logs:PutLogEvents",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
           },
           {
               "Sid": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "AllStreams",
               "Effect": "Allow",
               "Action": [
                   "kinesis:ListShards",
                   "kinesis:ListStreamConsumers",
                   "kinesis:DescribeStreamSummary"
               ],
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/*"
           },
           {
               "Sid": "Stream",
               "Effect": "Allow",
               "Action": [
                   "kinesis:DescribeStream",
                   "kinesis:RegisterStreamConsumer",
                   "kinesis:DeregisterStreamConsumer"
               ],
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           },
           {
               "Sid": "Consumer",
               "Effect": "Allow",
               "Action": [
                   "kinesis:DescribeStreamConsumer",
                   "kinesis:SubscribeToShard"
               ],
               "Resource": [
                   "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream/consumer/my-efo-flink-app",
                   "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream/consumer/my-efo-flink-app:*"
               ]
           }
       ]
   }
   ```

------

##### Configuration de l'application
<a name="examples-efo-configure"></a>

1. Sur la **MyApplication**page, choisissez **Configurer**.

1. Sur la page **Configurer l’application**, indiquez l’**emplacement du code**:
   + Pour le compartiment **Amazon S3**, saisissez **ka-app-code-*<username>***.
   + Pour le **chemin de l'objet Amazon S3**, saisissez **aws-kinesis-analytics-java-apps-1.0.jar**.

1. Sous **Accéder aux ressources de l’application**, pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM `kinesis-analytics-MyApplication-us-west-2`**.

1. Sous **Propriétés**, sélectionnez **Créer un groupe**. 

1. Entrez les valeurs et propriétés d’application suivantes :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

1. Sous **Propriétés**, sélectionnez **Créer un groupe**. 

1. Entrez les valeurs et propriétés d’application suivantes :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

1. Sous **Surveillance**, assurez-vous que **Surveillance du niveau des métriques** est défini sur **Application**.

1. Pour la **CloudWatch journalisation**, cochez la case **Activer**.

1. Choisissez **Mettre à jour**.

**Note**  
Lorsque vous choisissez d'activer la CloudWatch journalisation, le service géré pour Apache Flink crée un groupe de journaux et un flux de journaux pour vous. Les noms de ces ressources sont les suivants :   
Groupe de journaux : `/aws/kinesis-analytics/MyApplication`
Flux de journaux : `kinesis-analytics-log-stream`
Ce flux de journaux est utilisé pour surveiller l’application. Il ne s’agit pas du même flux de journaux que celui utilisé par l’application pour envoyer les résultats.

##### Exécutez l'application
<a name="examples-efo-run"></a>

Le graphique des tâches Flink peut être visualisé en exécutant l’application, en ouvrant le tableau de bord Apache Flink et en choisissant la tâche Flink souhaitée.

Vous pouvez vérifier les métriques du service géré pour Apache Flink sur la CloudWatch console pour vérifier que l'application fonctionne. 

Vous pouvez également consulter la console Kinesis Data Streams, dans l'onglet **Enhanced fan-out du flux de** données, pour trouver le nom de votre client (). *basic-efo-flink-app*

##### Nettoyer les AWS ressources
<a name="examples-efo-cleanup"></a>

Cette section inclut les procédures de nettoyage AWS des ressources créées dans le didacticiel efo Window.

**Topics**
+ [Supprimer votre application Managed Service for Apache Flink](#examples-efo-cleanup-app)
+ [Supprimer vos flux de données Kinesis](#examples-efo-cleanup-stream)
+ [Supprimer votre objet et votre compartiment Amazon S3](#examples-efo-cleanup-s3)
+ [Supprimer vos ressources IAM](#examples-efo-cleanup-iam)
+ [Supprimer vos CloudWatch ressources](#examples-efo-cleanup-cw)

##### Supprimer votre application Managed Service for Apache Flink
<a name="examples-efo-cleanup-app"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. dans le panneau Managed Service for Apache Flink, sélectionnez **MyApplication**.

1. Sur la page de l’application, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer vos flux de données Kinesis
<a name="examples-efo-cleanup-stream"></a>

1. [Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Dans le panneau Kinesis Data Streams, **ExampleInputStream**sélectionnez.

1. Sur la **ExampleInputStream**page, choisissez **Supprimer Kinesis Stream**, puis confirmez la suppression.

1. Sur la page **Kinesis Streams**, choisissez le **ExampleOutputStream**, choisissez **Actions**, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer votre objet et votre compartiment Amazon S3
<a name="examples-efo-cleanup-s3"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez le ***<username>*compartiment ka-app-code -.**

1. Choisissez **Supprimer**, puis saisissez le nombre du compartiment pour confirmer la suppression.

##### Supprimer vos ressources IAM
<a name="examples-efo-cleanup-iam"></a>

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans la barre de navigation, choisissez **Stratégies**.

1. Dans le contrôle du filtre, saisissez **kinesis**.

1. Choisissez la politique **kinesis-analytics-service- MyApplication -us-west-2**.

1. Choisissez **Actions de stratégie**, puis **Supprimer**.

1. Dans la barre de navigation, choisissez **Rôles**.

1. Choisissez le rôle **kinesis-analytics- MyApplication** -us-west-2.

1. Choisissez **Supprimer le rôle**, puis confirmez la suppression.

##### Supprimer vos CloudWatch ressources
<a name="examples-efo-cleanup-cw"></a>

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans la barre de navigation, choisissez **Journaux**.

1. Choisissez le groupe**/aws/kinesis-analytics/MyApplication**log.

1. Choisissez **Supprimer le groupe de journaux**, puis confirmez la suppression.

#### Exemple : écrire dans Firehose
<a name="get-started-exercise-fh"></a>

**Note**  
Pour des exemples actuels, voir[Exemples de création et d'utilisation d'un service géré pour les applications Apache Flink](examples-collapsibles.md).

Dans cet exercice, vous allez créer un service géré pour une application Apache Flink qui possède un flux de données Kinesis comme source et un flux Firehose comme récepteur. À l'aide du récepteur, vous pouvez vérifier la sortie de l'application dans un compartiment Amazon S3.

**Note**  
Pour configurer les prérequis requis pour cet exercice, commencez par terminer l’exercice [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md).

**Topics**
+ [Création de ressources dépendantes](#get-started-exercise-fh-1)
+ [Écrire des exemples d'enregistrements dans le flux d'entrée](#get-started-exercise-fh-2)
+ [Téléchargez et examinez le code Java de streaming d'Apache Flink](#get-started-exercise-fh-5)
+ [Compilez le code de l'application](#get-started-exercise-fh-5.5)
+ [Téléchargez le code Java de streaming Apache Flink](#get-started-exercise-fh-6)
+ [Création et exécution du service géré pour l'application Apache Flink](#get-started-exercise-fh-7)
+ [Nettoyer les AWS ressources](#getting-started-fh-cleanup)

##### Création de ressources dépendantes
<a name="get-started-exercise-fh-1"></a>

Avant de créer un service géré pour Apache Flink dans le cadre de cet exercice, vous commencez par créer les ressources dépendantes suivantes :
+ Un flux de données Kinesis (`ExampleInputStream`) 
+ Un flux Firehose dans lequel l'application écrit la sortie ()`ExampleDeliveryStream`. 
+ Un compartiment Amazon S3 pour stocker le code de l’application (`ka-app-code-<username>`)

Vous pouvez créer le flux Kinesis, les compartiments Amazon S3 et le flux Firehose à l'aide de la console. Pour obtenir des instructions sur la création de ces ressources, consultez les rubriques suivantes :
+ [Création et mise à jour de flux de données](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) dans le *Guide du développeur Amazon Kinesis Data Streams*. Attribuez un nom à votre flux de données **ExampleInputStream**.
+ [Création d'un flux de diffusion Amazon Kinesis Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) dans *le manuel du développeur Amazon Data Firehose*. Donnez un nom à votre stream Firehose. **ExampleDeliveryStream** **Lorsque vous créez le flux Firehose, créez également la **destination S3** et le rôle IAM du flux Firehose.** 
+ [Comment créer un compartiment S3 ?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) dans le *Guide de l’utilisateur de la console Amazon Simple Storage Service*. Donnez au compartiment Amazon S3 un nom unique au monde en ajoutant votre nom de connexion, tel que **ka-app-code-*<username>***.

##### Écrire des exemples d'enregistrements dans le flux d'entrée
<a name="get-started-exercise-fh-2"></a>

Dans cette section, vous utilisez un script Python pour écrire les exemples d’enregistrements dans le flux pour que l’application les traite.

**Note**  
Cette section nécessite le kit [AWS SDK pour Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

1. Créez un fichier nommé `stock.py` avec le contenu suivant :

   ```
    import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. Exécutez le script `stock.py` : 

   ```
   $ python stock.py
   ```

   Maintenez le script en cours d’exécution pendant que vous terminez le reste du didacticiel.

##### Téléchargez et examinez le code Java de streaming d'Apache Flink
<a name="get-started-exercise-fh-5"></a>

Le code de l'application Java pour cet exemple est disponible sur GitHub. Pour télécharger le code d’application, procédez comme suit :

1. Cloner le référentiel distant à l’aide de la commande suivante :

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Accédez au répertoire `amazon-kinesis-data-analytics-java-examples/FirehoseSink`.

Le code d’application est situé dans le fichier `FirehoseSinkStreamingJob.java`. Notez les informations suivantes à propos du code d’application :
+ L’application utilise une source Kinesis pour lire à partir du flux source. L’extrait de code suivant crée la source Kinesis :

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ L'application utilise un récepteur Firehose pour écrire des données dans un flux Firehose. L'extrait de code suivant crée le récepteur Firehose :

  ```
  private static KinesisFirehoseSink<String> createFirehoseSinkFromStaticConfig() {
          Properties sinkProperties = new Properties();
          sinkProperties.setProperty(AWS_REGION, region);
  
          return KinesisFirehoseSink.<String>builder()
                  .setFirehoseClientProperties(sinkProperties)
                  .setSerializationSchema(new SimpleStringSchema())
                  .setDeliveryStreamName(outputDeliveryStreamName)
                  .build();
      }
  ```

##### Compilez le code de l'application
<a name="get-started-exercise-fh-5.5"></a>

Pour compiler l’application, procédez comme suit :

1. Installez Java et Maven si ce n’est pas déjà fait. Pour plus d’informations, consultez [Complétez les prérequis requis](getting-started.md#setting-up-prerequisites) dans le didacticiel [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md).

1. **Pour utiliser le connecteur Kinesis pour l’application suivante, vous devez télécharger, construire et installer Apache Maven. Pour plus d'informations, consultez [Utilisation du connecteur Apache Flink Kinesis Streams avec les versions précédentes d'Apache Flink](#how-creating-apps-building-kinesis).**

1. Compilez l’application à l’aide de la commande suivante : 

   ```
   mvn package -Dflink.version=1.15.3
   ```
**Note**  
Le code source fourni repose sur les bibliothèques de Java 11. 

La compilation de l’application crée le fichier JAR de l’application (`target/aws-kinesis-analytics-java-apps-1.0.jar`).

##### Téléchargez le code Java de streaming Apache Flink
<a name="get-started-exercise-fh-6"></a>

Dans cette section, vous allez charger votre code d’application dans le compartiment Amazon S3 que vous avez créé dans la section [Création de ressources dépendantes](#get-started-exercise-fh-1).

**Pour charger le code d’application**

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans la console, choisissez le *<username>* compartiment **ka-app-code-**, puis choisissez **Upload**.

1. À l’étape **Sélectionner les fichiers**, choisissez **Ajouter des fichiers**. Accédez au fichier `java-getting-started-1.0.jar` que vous avez créé à l’étape précédente. 

1. Vous n’avez pas besoin de modifier les paramètres de l’objet, donc choisissez **Charger**.

Votre code d’application est désormais stocké dans un compartiment Amazon S3 auquel votre application peut accéder.

##### Création et exécution du service géré pour l'application Apache Flink
<a name="get-started-exercise-fh-7"></a>

Vous pouvez créer et exécuter une application de service géré pour Apache Flink à l’aide de la console ou de l’interface AWS CLI.

**Note**  
Lorsque vous créez l'application à l'aide de la console, vos ressources Gestion des identités et des accès AWS (IAM) et Amazon CloudWatch Logs sont créées pour vous. Lorsque vous créez l'application à l'aide du AWS CLI, vous créez ces ressources séparément.

**Topics**
+ [Création et exécution de l'application (console)](#get-started-exercise-fh-7-console)
+ [Créez et exécutez l'application (AWS CLI)](#get-started-exercise-fh-7-cli)

##### Création et exécution de l'application (console)
<a name="get-started-exercise-fh-7-console"></a>

Suivez ces étapes pour créer, configurer, mettre à jour et exécuter l’application à l’aide de la console.

##### Pour créer l’application
<a name="get-started-exercise-fh-7-console-create"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le tableau de bord du service géré pour Apache Flink, choisissez **Créer une application d’analyse**.

1. Sur la page **Service géré pour Apache Flink - Créer une application**, fournissez les détails de l’application comme suit :
   + Pour **Nom de l’application**, saisissez **MyApplication**.
   + Pour **Description**, saisissez **My java test app**.
   + Pour **Exécution**, choisissez **Apache Flink**.
**Note**  
Le service géré pour Apache Flink utilise Apache Flink version 1.15.2.
   + Laissez le menu déroulant de la version sur **Apache Flink version 1.15.2 (version recommandée)**.

1. Pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM) `kinesis-analytics-MyApplication-us-west-2`**.

1. Choisissez **Créer une application**.

**Note**  
Lorsque vous créez l’application à l’aide de la console, un rôle et une politique IAM peuvent être créés pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces ressources IAM sont nommées en utilisant le nom de votre application et la région, comme suit :  
Stratégie : `kinesis-analytics-service-MyApplication-us-west-2`
Rôle : `kinesisanalytics-MyApplication-us-west-2`

##### Modifier la politique IAM
<a name="get-started-exercise-fh-7-console-iam"></a>

Modifiez la politique IAM pour ajouter des autorisations d'accès au flux de données Kinesis et au flux Firehose.

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Choisissez **Stratégies**. Choisissez la politique **`kinesis-analytics-service-MyApplication-us-west-2`** créée pour vous par la console dans la section précédente. 

1. Sur la page **Récapitulatif**, choisissez **Modifier la politique**. Sélectionnez l’onglet **JSON**.

1. Ajoutez la section mise en surbrillance dans l’exemple de stratégie suivant à la politique. Remplacez toutes les instances de l'exemple de compte IDs (*012345678901*) par votre identifiant de compte.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-username/java-getting-started-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
              ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteDeliveryStream",
               "Effect": "Allow",
               "Action": "firehose:*",
               "Resource": "arn:aws:firehose:us-west-2:012345678901:deliverystream/ExampleDeliveryStream"
           }
       ]
   }
   ```

------

##### Configuration de l'application
<a name="get-started-exercise-fh-7-console-configure"></a>

1. Sur la **MyApplication**page, choisissez **Configurer**.

1. Sur la page **Configurer l’application**, indiquez l’**emplacement du code**:
   + Pour le compartiment **Amazon S3**, saisissez **ka-app-code-*<username>***.
   + Pour le **chemin de l'objet Amazon S3**, saisissez **java-getting-started-1.0.jar**.

1. Sous **Accéder aux ressources de l’application**, pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM `kinesis-analytics-MyApplication-us-west-2`**.

1. Sous **Surveillance**, assurez-vous que **Surveillance du niveau des métriques** est défini sur **Application**.

1. Pour la **CloudWatch journalisation**, cochez la case **Activer**.

1. Choisissez **Mettre à jour**.

**Note**  
Lorsque vous choisissez d'activer la CloudWatch journalisation, le service géré pour Apache Flink crée un groupe de journaux et un flux de journaux pour vous. Les noms de ces ressources sont les suivants :   
Groupe de journaux : `/aws/kinesis-analytics/MyApplication`
Flux de journaux : `kinesis-analytics-log-stream`

##### Exécutez l'application
<a name="get-started-exercise-fh-7-console-run"></a>

Le graphique des tâches Flink peut être visualisé en exécutant l’application, en ouvrant le tableau de bord Apache Flink et en choisissant la tâche Flink souhaitée.

##### Arrêtez l'application
<a name="get-started-exercise-fh-7-console-stop"></a>

Sur la **MyApplication**page, choisissez **Stop**. Confirmez l’action.

##### Mise à jour de l'application
<a name="get-started-exercise-fh-7-console-update"></a>

À l’aide de la console, vous pouvez mettre à jour les paramètres d’application tels que les paramètres de surveillance, les propriétés d’application et l’emplacement ou le nom du fichier JAR de l’application. 

Sur la **MyApplication**page, choisissez **Configurer**. Mettez à jour les paramètres de l’application, puis choisissez **Mettre à jour**.

**Note**  
Pour mettre à jour le code de l’application dans la console, vous devez soit modifier le nom de l’objet du fichier JAR, soit utiliser un autre compartiment S3, soit utiliser l’interface AWS CLI comme décrit dans la section [Mise à jour du code de l’application](#get-started-exercise-fh-7-cli-update-code). Si le nom du fichier ou le compartiment ne change pas, le code de l’application n’est pas rechargé lorsque vous choisissez **Mettre à jour** sur la page **Configurer**.

##### Créez et exécutez l'application (AWS CLI)
<a name="get-started-exercise-fh-7-cli"></a>

Dans cette section, vous allez utiliser le AWS CLI pour créer et exécuter l'application Managed Service for Apache Flink.

##### Création d’une stratégie d’autorisations
<a name="get-started-exercise-fh-7-cli-policy"></a>

Vous commencez par créer une stratégie d’autorisations avec deux instructions : une qui accorde des autorisations pour l’action `read` sur le flux source et une autre qui accorde des autorisations pour les actions `write` sur le flux récepteur. Vous attachez ensuite la politique à un rôle IAM (que vous allez créer dans la section suivante). Ainsi, lorsque le service géré pour Apache Flink assume le rôle, le service dispose des autorisations nécessaires pour lire à partir du flux source et écrire dans le flux récepteur.

Utilisez le code suivant pour créer la politique d’autorisations `AKReadSourceStreamWriteSinkStream`. *username*Remplacez-le par le nom d'utilisateur que vous utiliserez pour créer le compartiment Amazon S3 destiné à stocker le code de l'application. Remplacez l'ID de compte dans Amazon Resource Names (ARNs) (`012345678901`) par votre identifiant de compte.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": ["arn:aws:s3:::ka-app-code-username",
                "arn:aws:s3:::ka-app-code-username/*"
            ]
        },
        {
            "Sid": "ReadInputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
        },
        {
            "Sid": "WriteDeliveryStream",
            "Effect": "Allow",
            "Action": "firehose:*",
            "Resource": "arn:aws:firehose:us-west-2:012345678901:deliverystream/ExampleDeliveryStream"
        }
    ]
}
```

------

Pour step-by-step obtenir des instructions sur la création d'une politique d'autorisations, voir [Tutoriel : créer et joindre votre première politique gérée par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) dans le *guide de l'utilisateur IAM*.

**Note**  
Pour accéder à d’autres services Amazon, vous pouvez utiliser le AWS SDK pour Java. Le service géré pour Apache Flink définit automatiquement les informations d’identification requises par le kit SDK en fonction du rôle IAM d’exécution du service associé à votre application. Aucune étape supplémentaire n’est nécessaire.

##### Créer un rôle IAM
<a name="get-started-exercise-fh-7-cli-role"></a>

Dans cette section, vous créez un rôle IAM que l’application de service géré pour Apache Flink peut assumer pour lire un flux source et écrire dans le flux récepteur.

Le service géré Managed Service for Apache Flink ne peut pas accéder à votre flux sans autorisation. Vous utilisez un rôle IAM pour accorder ces autorisations. Deux politiques sont attachées à chaque rôle IAM. La politique d’approbation accorde au service géré pour Apache Flink l’autorisation d’assumer le rôle. La politique d’autorisation détermine ce que le service géré pour Apache Flink peut faire après avoir assumé le rôle.

Vous attachez la politique d’autorisations que vous avez créée dans la section précédente à ce rôle.

**Pour créer un rôle IAM**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le volet de navigation, choisissez **Rôles**, puis **Créer un rôle**.

1. Sous **Sélectionner le type d'identité approuvée**, choisissez **Service AWS **. Sous **Choisir le service qui utilisera ce rôle**, choisissez **EC2**. Sous **Sélectionner votre cas d’utilisation**, choisissez **Kinesis Analytics**.

   Choisissez **Suivant : Autorisations**.

1. Dans la page **Attacher des stratégies d’autorisations**, choisissez **Suivant : vérification**. Vous attachez des stratégies d’autorisations après avoir créé le rôle.

1. Sur la page **Créer un rôle**, saisissez **MF-stream-rw-role** pour le **Nom du rôle**. Sélectionnez **Créer un rôle**.

   Vous venez de créer un nouveau rôle IAM appelé `MF-stream-rw-role`. Ensuite, vous mettez à jour les stratégies d’approbation et d’autorisation pour le rôle.

1. Attachez la politique d’autorisation au rôle.
**Note**  
Dans le cadre de cet exercice, le service géré pour Apache Flink assume ce rôle à la fois pour la lecture des données à partir d’un flux de données Kinesis (source) et pour l’écriture des résultats dans un autre flux de données Kinesis. Vous attachez donc la politique que vous avez créée à l’étape précédente, [Création d’une stratégie d’autorisations](#get-started-exercise-fh-7-cli-policy).

   1. Sur la page **Récapitulatif**, choisissez l’onglet **Autorisations**.

   1. Choisissez **Attacher des stratégies**.

   1. Dans la zone de recherche, saisissez **AKReadSourceStreamWriteSinkStream** (la politique que vous avez créée dans la section précédente).

   1. Sélectionnez la politique **AKReadSourceStreamWriteSinkStream**, puis **Attacher une stratégie**.

Vous avez maintenant créé le rôle d’exécution de service que votre application utilisera pour accéder aux ressources. Notez l’ARN du nouveau rôle.

Pour step-by-step obtenir des instructions sur la création d'un rôle, consultez la section [Création d'un rôle IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) dans le guide de l'*utilisateur IAM*.

##### Création du service géré pour l'application Apache Flink
<a name="get-started-exercise-fh-7-cli-create"></a>

1. Copiez le code JSON suivant dans un fichier nommé `create_request.json`. Remplacez l’exemple d’ARN du rôle par l’ARN du rôle que vous avez créé précédemment. Remplacez le suffixe de l’ARN du compartiment par le suffixe que vous avez choisi dans la section [Création de ressources dépendantes](#get-started-exercise-fh-1) (`ka-app-code-<username>`). Remplacez l’exemple d’ID de compte (*012345678901*) dans le rôle d’exécution de service par votre ID de compte.

   ```
   {
       "ApplicationName": "test",
       "ApplicationDescription": "my java test app",
       "RuntimeEnvironment": "FLINK-1_15",
       "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
       "ApplicationConfiguration": {
           "ApplicationCodeConfiguration": {
               "CodeContent": {
                   "S3ContentLocation": {
                       "BucketARN": "arn:aws:s3:::ka-app-code-username",
                       "FileKey": "java-getting-started-1.0.jar"
                   }
               },
               "CodeContentType": "ZIPFILE"
           }
         }
       }
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) avec la demande précédente pour créer l’application : 

   ```
   aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
   ```

L’application est maintenant créée. Vous démarrez l’application dans l’étape suivante.

##### Lancez l'application
<a name="get-started-exercise-fh-7-cli-start"></a>

Dans cette section, vous utilisez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) pour démarrer l’application.

**Pour démarrer l’application**

1. Copiez le code JSON suivant dans un fichier nommé `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) avec la demande précédente pour démarrer l’application :

   ```
   aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
   ```

L’application est maintenant en cours d’exécution. Vous pouvez consulter les métriques du service géré pour Apache Flink sur la CloudWatch console Amazon pour vérifier que l'application fonctionne.

##### Arrêtez l'application
<a name="get-started-exercise-fh-7-cli-stop"></a>

Dans cette section, vous allez utiliser l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) pour arrêter l’application.

**Pour arrêter l’application**

1. Copiez le code JSON suivant dans un fichier nommé `stop_request.json`.

   ```
   {
       "ApplicationName": "test"
   }
   ```

1. Exécutez l’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) avec la demande suivante pour arrêter l’application :

   ```
   aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
   ```

L’application est maintenant arrêtée.

##### Ajouter une option de CloudWatch journalisation
<a name="get-started-exercise-fh-7-cli-cw"></a>

Vous pouvez utiliser le AWS CLI pour ajouter un flux de CloudWatch journal Amazon à votre application. Pour plus d'informations sur l'utilisation de CloudWatch Logs avec votre application, consultez[Configurer la journalisation des applications dans le service géré pour Apache Flink](cloudwatch-logs.md).

##### Mise à jour du code de l’application
<a name="get-started-exercise-fh-7-cli-update-code"></a>

Lorsque vous devez mettre à jour le code de votre application avec une nouvelle version de votre package de code, vous utilisez l'[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) AWS CLI action.

Pour l'utiliser AWS CLI, supprimez votre ancien package de code de votre compartiment Amazon S3, téléchargez la nouvelle version et appelez `UpdateApplication` en spécifiant le même compartiment Amazon S3 et le même nom d'objet.

L’exemple de demande d’action `UpdateApplication` suivant recharge le code de l’application et redémarre l’application. Mettez à jour l’`CurrentApplicationVersionId` à la version actuelle de l’application. Vous pouvez vérifier la version actuelle de l’application à l’aide des actions `ListApplications` ou `DescribeApplication`. Mettez à jour le suffixe du nom du compartiment (< *username* >) avec le suffixe que vous avez choisi dans la [Création de ressources dépendantes](#get-started-exercise-fh-1) section.

```
{
    "ApplicationName": "test",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username",
                    "FileKeyUpdate": "java-getting-started-1.0.jar"
                }
            }
        }
    }
}
```

##### Nettoyer les AWS ressources
<a name="getting-started-fh-cleanup"></a>

Cette section inclut les procédures de nettoyage AWS des ressources créées dans le didacticiel Getting Started.

**Topics**
+ [Supprimer votre application Managed Service for Apache Flink](#getting-started-fh-cleanup-app)
+ [Supprimer votre flux de données Kinesis](#getting-started-fh-cleanup-stream)
+ [Supprimer votre stream Firehose](#getting-started-fh-cleanup-fh)
+ [Supprimer votre objet et votre compartiment Amazon S3](#getting-started-fh-cleanup-s3)
+ [Supprimer vos ressources IAM](#getting-started-fh-cleanup-iam)
+ [Supprimer vos CloudWatch ressources](#getting-started-fh-cleanup-cw)

##### Supprimer votre application Managed Service for Apache Flink
<a name="getting-started-fh-cleanup-app"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le panneau Managed Service for Apache Flink, choisissez **MyApplication**.

1. Choisissez **Configurer**.

1. Dans la section **Instantanés**, choisissez **Désactiver**, puis sélectionnez **Mettre à jour**.

1. Sur la page de l’application, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer votre flux de données Kinesis
<a name="getting-started-fh-cleanup-stream"></a>

1. [Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Dans le panneau Kinesis Data Streams, **ExampleInputStream**sélectionnez.

1. Sur la **ExampleInputStream**page, choisissez **Supprimer Kinesis Stream**, puis confirmez la suppression.

##### Supprimer votre stream Firehose
<a name="getting-started-fh-cleanup-fh"></a>

1. [Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Dans le panneau Firehose, choisissez. **ExampleDeliveryStream**

1. Sur la **ExampleDeliveryStream**page, choisissez **Delete Firehose stream**, puis confirmez la suppression.

##### Supprimer votre objet et votre compartiment Amazon S3
<a name="getting-started-fh-cleanup-s3"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez le ***<username>*compartiment ka-app-code -.**

1. Choisissez **Supprimer**, puis saisissez le nombre du compartiment pour confirmer la suppression.

1. Si vous avez créé un compartiment Amazon S3 pour la destination de votre flux Firehose, supprimez-le également.

##### Supprimer vos ressources IAM
<a name="getting-started-fh-cleanup-iam"></a>

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans la barre de navigation, choisissez **Stratégies**.

1. Dans le contrôle du filtre, saisissez **kinesis**.

1. Choisissez la politique **kinesis-analytics-service- MyApplication -us-west-2**.

1. Choisissez **Actions de stratégie**, puis **Supprimer**.

1. Si vous avez créé une nouvelle politique pour votre stream Firehose, supprimez-la également.

1. Dans la barre de navigation, choisissez **Rôles**.

1. Choisissez le rôle **kinesis-analytics- MyApplication** -us-west-2.

1. Choisissez **Supprimer le rôle**, puis confirmez la suppression.

1. Si vous avez créé un nouveau rôle pour votre stream Firehose, supprimez-le également.

##### Supprimer vos CloudWatch ressources
<a name="getting-started-fh-cleanup-cw"></a>

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans la barre de navigation, choisissez **Journaux**.

1. Choisissez le groupe**/aws/kinesis-analytics/MyApplication**log.

1. Choisissez **Supprimer le groupe de journaux**, puis confirmez la suppression.

#### Exemple : lecture depuis un flux Kinesis dans un autre compte
<a name="examples-cross"></a>

**Note**  
Pour des exemples actuels, voir[Exemples de création et d'utilisation d'un service géré pour les applications Apache Flink](examples-collapsibles.md).

Cet exemple montre comment créer une application de service géré pour Apache Flink qui lit les données d’un flux Kinesis dans un autre compte. Dans cet exemple, vous allez utiliser un compte pour le flux Kinesis source et un second compte pour l’application de service géré pour Apache Flink et le flux Kinesis récepteur.

**Topics**
+ [Conditions préalables](#examples-cross-prerequisites)
+ [Configuration](#examples-cross-setup)
+ [Création d'un flux Kinesis source](#examples-cross-streams)
+ [Création et mise à jour des rôles et politiques IAM](#examples-cross-iam)
+ [Mettre à jour le script Python](#examples-cross-python)
+ [Mettre à jour l'application Java](#examples-cross-app)
+ [Créez, téléchargez et exécutez l'application](#examples-cross-run)

##### Conditions préalables
<a name="examples-cross-prerequisites"></a>
+ Dans ce didacticiel, vous allez modifier l’exemple *Mise en route* pour lire les données d’un flux Kinesis dans un autre compte. Terminez le didacticiel [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md) avant de continuer.
+ Vous avez besoin de deux AWS comptes pour suivre ce didacticiel : un pour le flux source et un pour l'application et le flux récepteur. Utilisez le AWS compte que vous avez utilisé pour le didacticiel Getting Started pour l'application et le flux récepteur. Utilisez un autre compte AWS pour le flux source.

##### Configuration
<a name="examples-cross-setup"></a>

Vous accéderez à vos deux AWS comptes en utilisant des profils nommés. Modifiez vos AWS informations d'identification et vos fichiers de configuration pour inclure deux profils contenant les informations de région et de connexion pour vos deux comptes.

L’exemple de fichier d’informations d’identification suivant contient deux profils nommés, `ka-source-stream-account-profile` et `ka-sink-stream-account-profile`. Utilisez le compte que vous avez utilisé pour le didacticiel Mise en route pour le compte du flux récepteur.

```
[ka-source-stream-account-profile]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

[ka-sink-stream-account-profile]
aws_access_key_id=AKIAI44QH8DHBEXAMPLE
aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
```

L’exemple de fichier de configuration suivant contient des profils portant le même nom avec des informations de région et de format de sortie.

```
[profile ka-source-stream-account-profile]
region=us-west-2
output=json

[profile ka-sink-stream-account-profile]
region=us-west-2
output=json
```

**Note**  
Ce didacticiel n’utilise pas le `ka-sink-stream-account-profile`. Il est inclus à titre d'exemple de la façon d'accéder à deux AWS comptes différents à l'aide de profils.

Pour plus d'informations sur l'utilisation de profils nommés avec le AWS CLI, consultez la section [Profils nommés](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) dans la *AWS Command Line Interface*documentation.

##### Création d'un flux Kinesis source
<a name="examples-cross-streams"></a>

Dans cette section, vous allez créer le flux Kinesis dans le compte source.

Saisissez la commande suivante pour créer le flux Kinesis que l’application utilisera pour l’entrée. Notez que le paramètre `--profile` indique le profil de compte à utiliser.

```
$ aws kinesis create-stream \
--stream-name SourceAccountExampleInputStream \
--shard-count 1 \
--profile ka-source-stream-account-profile
```

##### Création et mise à jour des rôles et politiques IAM
<a name="examples-cross-iam"></a>

Pour autoriser l'accès aux objets entre AWS les comptes, vous devez créer un rôle et une politique IAM dans le compte source. Ensuite, vous modifiez la politique IAM dans le compte récepteur. Pour obtenir des informations sur la création des rôles et politiques IAM, consultez les rubriques suivantes dans le *Guide de l’utilisateur Gestion des identités et des accès AWS * :
+ [Création de rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)
+ [Création de politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)

##### Rôles et politiques du compte Sink
<a name="examples-cross-iam-sink"></a>

1. Modifiez la politique `kinesis-analytics-service-MyApplication-us-west-2` dans le didacticiel de mise en route. Cette politique permet d’assumer le rôle dans le compte source afin de lire le flux source. 
**Note**  
Lorsque vous utilisez la console pour créer votre application, la console crée une politique appelée `kinesis-analytics-service-<application name>-<application region>` et un rôle appelé `kinesisanalytics-<application name>-<application region>`. 

   Ajoutez la section surlignée ci-dessous à la politique. Remplacez l'exemple d'ID de compte (*SOURCE01234567*) par l'ID du compte que vous utiliserez pour le flux source.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AssumeRoleInSourceAccount",
               "Effect": "Allow",
               "Action": "sts:AssumeRole",
               "Resource": "arn:aws:iam::123456789012:role/KA-Source-Stream-Role"
           },
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-username/aws-kinesis-analytics-java-apps-1.0.jar"
               ]
           },
           {
               "Sid": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:123456789012:log-group:*"
               ]
           },
           {
               "Sid": "ListCloudwatchLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:123456789012:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutCloudwatchLogs",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:123456789012:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           }
       ]
   }
   ```

------

1. Ouvrez le rôle `kinesis-analytics-MyApplication-us-west-2` et notez son Amazon Resource Name (ARN). Vous en aurez besoin pour la section suivante. Le rôle ARN ressemble à ceci : 

   ```
   arn:aws:iam::SINK012345678:role/service-role/kinesis-analytics-MyApplication-us-west-2
   ```

##### Rôles et politiques du compte source
<a name="examples-cross-iam-source"></a>

1. Créez une politique appelée `KA-Source-Stream-Policy` dans le compte source. Utilisez le JSON suivant pour la politique. Remplacez l’exemple de numéro de compte par le numéro du compte source.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": [
                   "kinesis:DescribeStream",
                   "kinesis:GetRecords",
                   "kinesis:GetShardIterator",
                   "kinesis:ListShards"
               ],
               "Resource": "arn:aws:kinesis:us-west-2:111122223333:stream/SourceAccountExampleInputStream"
           }
       ]
   }
   ```

------

1. Créez un rôle appelé `MF-Source-Stream-Role` dans le compte source. Procédez comme suit pour créer le rôle à l’aide du cas d’utilisation **Managed Flink** :

   1. Dans IAM Management Console, choisissez **Créer un rôle**.

   1. Sur la page **Créer un rôle**, choisissez **Service AWS **. Dans la liste des services, choisissez **Kinesis**.

   1. Sous **Sélectionnez votre cas d’utilisation**, choisissez **service géré pour Apache Flink**.

   1. Choisissez **Suivant : Autorisations**.

   1. Ajoutez la politique d’autorisations `KA-Source-Stream-Policy` que vous avez créée à l’étape précédente. Choisissez **Suivant : balises**.

   1. Choisissez **Suivant : vérification**.

   1. Nommez le rôle `KA-Source-Stream-Role`. Votre application utilisera ce rôle pour accéder au flux source.

1. Ajoutez l’ARN `kinesis-analytics-MyApplication-us-west-2` du compte récepteur à la relation d’approbation du rôle `KA-Source-Stream-Role` dans le compte source :

   1. Ouvrez le `KA-Source-Stream-Role` dans la console IAM.

   1. Choisissez l’onglet **Relations d’approbation**.

   1. Choisissez **Modifier la relation d’approbation**.

   1. Utilisez le code suivant pour la relation d’approbation. Remplacez l'exemple d'identifiant de compte (**SINK012345678**) par votre identifiant de compte récepteur.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:role/service-role/kinesis-analytics-MyApplication-us-west-2"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

##### Mettre à jour le script Python
<a name="examples-cross-python"></a>

Dans cette section, vous allez mettre à jour le script Python qui génère des exemples de données afin d’utiliser le profil du compte source.

Mettez à jour le script `stock.py` avec les modifications mises en évidence ci-dessous.

```
import json
import boto3
import random
import datetime
import os

os.environ['AWS_PROFILE'] ='ka-source-stream-account-profile'
os.environ['AWS_DEFAULT_REGION'] = 'us-west-2'


kinesis = boto3.client('kinesis')
def getReferrer():
    data = {}
    now = datetime.datetime.now()
    str_now = now.isoformat()
    data['event_time'] = str_now
    data['ticker'] = random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV'])
    price = random.random() * 100
    data['price'] = round(price, 2)
    return data

while True:
        data = json.dumps(getReferrer())
        print(data)
        kinesis.put_record(
                StreamName="SourceAccountExampleInputStream",
                Data=data,
                PartitionKey="partitionkey")
```

##### Mettre à jour l'application Java
<a name="examples-cross-app"></a>

Dans cette section, vous allez mettre à jour le code de l’application Java pour qu’il assume le rôle de compte source lors de la lecture depuis le flux source.

Apportez les modifications suivantes au fichier `BasicStreamingJob.java`. Remplacez l'exemple de numéro de compte source (*SOURCE01234567*) par votre numéro de compte source.

```
package com.amazonaws.services.managed-flink;

import com.amazonaws.services.managed-flink.runtime.KinesisAnalyticsRuntime;
import org.apache.flink.api.common.serialization.SimpleStringSchema;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.connectors.kinesis.FlinkKinesisConsumer;
import org.apache.flink.streaming.connectors.kinesis.FlinkKinesisProducer;
import org.apache.flink.streaming.connectors.kinesis.config.ConsumerConfigConstants;
import org.apache.flink.streaming.connectors.kinesis.config.AWSConfigConstants;

import java.io.IOException;
import java.util.Map;
import java.util.Properties;

 /**
 * A basic Managed Service for Apache Flink for Java application with Kinesis data streams
 * as source and sink.
 */
public class BasicStreamingJob {
    private static final String region = "us-west-2";
    private static final String inputStreamName = "SourceAccountExampleInputStream";
    private static final String outputStreamName = ExampleOutputStream;
    private static final String roleArn = "arn:aws:iam::SOURCE01234567:role/KA-Source-Stream-Role";
    private static final String roleSessionName = "ksassumedrolesession";

    private static DataStream<String> createSourceFromStaticConfig(StreamExecutionEnvironment env) {
        Properties inputProperties = new Properties();
        inputProperties.setProperty(AWSConfigConstants.AWS_CREDENTIALS_PROVIDER, "ASSUME_ROLE");
        inputProperties.setProperty(AWSConfigConstants.AWS_ROLE_ARN, roleArn);
        inputProperties.setProperty(AWSConfigConstants.AWS_ROLE_SESSION_NAME, roleSessionName);
        inputProperties.setProperty(ConsumerConfigConstants.AWS_REGION, region);
        inputProperties.setProperty(ConsumerConfigConstants.STREAM_INITIAL_POSITION, "LATEST");

        return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
    }

    private static KinesisStreamsSink<String> createSinkFromStaticConfig() {
        Properties outputProperties = new Properties();
        outputProperties.setProperty(AWSConfigConstants.AWS_REGION, region);

        return KinesisStreamsSink.<String>builder()
                .setKinesisClientProperties(outputProperties)
                .setSerializationSchema(new SimpleStringSchema())
                .setStreamName(outputProperties.getProperty("OUTPUT_STREAM", "ExampleOutputStream"))
                .setPartitionKeyGenerator(element -> String.valueOf(element.hashCode()))
                .build();
    }

    public static void main(String[] args) throws Exception {
        // set up the streaming execution environment
        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        DataStream<String> input = createSourceFromStaticConfig(env);

        input.addSink(createSinkFromStaticConfig());

        env.execute("Flink Streaming Java API Skeleton");
    }
}
```

##### Créez, téléchargez et exécutez l'application
<a name="examples-cross-run"></a>

Procédez comme suit pour mettre à jour et exécuter l’application :

1. Créez à nouveau l’application en exécutant la commande suivante dans le répertoire contenant le fichier `pom.xml`.

   ```
   mvn package -Dflink.version=1.15.3
   ```

1. Supprimez le précédent fichier JAR de votre compartiment Amazon Simple Storage Service (Amazon S3), puis chargez le nouveau fichier `aws-kinesis-analytics-java-apps-1.0.jar` dans le compartiment S3.

1. Sur la page de l’application, dans la console du service géré pour Apache Flink, choisissez **Configurer**, **Mettre à jour** pour recharger le fichier JAR de l’application.

1. Exécutez le script `stock.py` pour envoyer les données au flux source.

   ```
   python stock.py
   ```

L’application lit désormais les données du flux Kinesis dans l’autre compte.

Vous pouvez vérifier que l’application fonctionne en vérifier la métrique `PutRecords.Bytes` du flux `ExampleOutputStream`. Si vous voyez de l’activité dans le flux de sortie, l’application fonctionne correctement.

#### Tutoriel : Utilisation d'un truststore personnalisé avec Amazon MSK
<a name="example-keystore"></a>

**Note**  
Pour des exemples actuels, voir[Exemples de création et d'utilisation d'un service géré pour les applications Apache Flink](examples-collapsibles.md).

##### Source de données actuelle APIs
<a name="example-keystore-test-new"></a>

Si vous utilisez la source de données actuelle APIs, votre application peut tirer parti de l'utilitaire Amazon MSK Config Providers décrit [ici](https://github.com/aws-samples/msk-config-providers). Cela permet à votre KafkaSource fonction d'accéder à votre keystore et à votre truststore pour le protocole TLS mutuel dans Amazon S3.

```
...
// define names of config providers:
builder.setProperty("config.providers", "secretsmanager,s3import");

// provide implementation classes for each provider:
builder.setProperty("config.providers.secretsmanager.class", "com.amazonaws.kafka.config.providers.SecretsManagerConfigProvider");
builder.setProperty("config.providers.s3import.class", "com.amazonaws.kafka.config.providers.S3ImportConfigProvider");

String region = appProperties.get(Helpers.S3_BUCKET_REGION_KEY).toString();
String keystoreS3Bucket = appProperties.get(Helpers.KEYSTORE_S3_BUCKET_KEY).toString();
String keystoreS3Path = appProperties.get(Helpers.KEYSTORE_S3_PATH_KEY).toString();
String truststoreS3Bucket = appProperties.get(Helpers.TRUSTSTORE_S3_BUCKET_KEY).toString();
String truststoreS3Path = appProperties.get(Helpers.TRUSTSTORE_S3_PATH_KEY).toString();
String keystorePassSecret = appProperties.get(Helpers.KEYSTORE_PASS_SECRET_KEY).toString();
String keystorePassSecretField = appProperties.get(Helpers.KEYSTORE_PASS_SECRET_FIELD_KEY).toString();

// region, etc..
builder.setProperty("config.providers.s3import.param.region", region);

// properties
builder.setProperty("ssl.truststore.location", "${s3import:" + region + ":" + truststoreS3Bucket + "/" + truststoreS3Path + "}");
builder.setProperty("ssl.keystore.type", "PKCS12");
builder.setProperty("ssl.keystore.location", "${s3import:" + region + ":" + keystoreS3Bucket + "/" + keystoreS3Path + "}");
builder.setProperty("ssl.keystore.password", "${secretsmanager:" + keystorePassSecret + ":" + keystorePassSecretField + "}");
builder.setProperty("ssl.key.password", "${secretsmanager:" + keystorePassSecret + ":" + keystorePassSecretField + "}");
...
```

Vous trouverez plus de détails et une procédure détaillée [ici.](https://github.com/aws-samples/amazon-kinesisanalytics-examples/tree/master/CustomKeystoreWithConfigProviders) 

##### Héritage SourceFunction APIs
<a name="example-keystore-legacy"></a>

Si vous utilisez l'ancienne version SourceFunction APIs, votre application utilisera des schémas de sérialisation et de désérialisation personnalisés qui remplacent la `open` méthode de chargement du truststore personnalisé. Cela met le truststore à la disposition de l’application après le redémarrage de l’application ou le remplacement des threads. 

Le truststore personnalisé est récupéré et stocké à l’aide du code suivant :

```
public static void initializeKafkaTruststore() {
    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    URL inputUrl = classLoader.getResource("kafka.client.truststore.jks");
    File dest = new File("/tmp/kafka.client.truststore.jks");

    try {
        FileUtils.copyURLToFile(inputUrl, dest);
    } catch (Exception ex) {
        throw new FlinkRuntimeException("Failed to initialize Kakfa truststore", ex);
    }
}
```

**Note**  
Apache Flink nécessite que le truststore soit au format [JKS](https://en.wikipedia.org/wiki/Java_KeyStore). 

**Note**  
Pour configurer les prérequis requis pour cet exercice, commencez par terminer l’exercice [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md). 

Le didacticiel suivant explique comment se connecter en toute sécurité (chiffrement en transit) à un cluster Kafka qui utilise des certificats de serveur émis par une autorité de certification (CA) personnalisée, privée ou même auto-hébergée. 

Pour connecter un client Kafka en toute sécurité via TLS à un cluster Kafka, le client Kafka (comme l'exemple de l'application Flink) doit faire confiance à la chaîne de confiance complète présentée par les certificats de serveur du cluster Kafka (de l'autorité de certification émettrice à l'autorité de certification de niveau racine). À titre d'exemple pour un truststore personnalisé, nous utiliserons un cluster Amazon MSK avec l'authentification mutuelle TLS (MTLS) activée. Cela implique que les nœuds du cluster MSK utilisent des certificats de serveur émis par une autorité de AWS certification privée de Certificate Manager (ACM Private CA) qui est privée de votre compte et de votre région et qui n'est donc pas approuvée par le truststore par défaut de la machine virtuelle Java (JVM) exécutant l'application Flink. 

**Note**  
Un **keystore** est utilisé pour stocker les clés privées et les certificats d'identité qu'une application doit présenter au serveur ou au client pour vérification.
Un **truststore** est utilisé pour stocker les certificats des autorités certifiées (CA) qui vérifient le certificat présenté par le serveur dans le cadre d'une connexion SSL.

 Vous pouvez également utiliser la technique décrite dans ce didacticiel pour les interactions entre une application de service géré pour Apache Flink et d’autres sources Apache Kafka, telles que :
+ Un cluster Apache Kafka personnalisé hébergé dans AWS ([Amazon EC2 ou [Amazon](https://aws.amazon.com/eks/)](https://aws.amazon.com/ec2/) EKS)
+ Un cluster [Confluent Kafka hébergé](https://www.confluent.io) dans AWS
+ Un cluster Kafka sur site accessible via [AWS Direct Connect](https://aws.amazon.com/directconnect/) ou un VPN

**Topics**
+ [Source de données actuelle APIs](#example-keystore-test-new)
+ [Héritage SourceFunction APIs](#example-keystore-legacy)
+ [Création d'un VPC avec un cluster Amazon MSK](#example-keystore-createcluster)
+ [Créez un truststore personnalisé et appliquez-le à votre cluster](#example-keystore-cert)
+ [Créez le code de l'application](#example-keystore-code)
+ [Téléchargez le code Java de streaming Apache Flink](#example-keystore-upload)
+ [Pour créer l’application](#example-keystore-create)
+ [Configuration de l'application](#example-keystore-configure)
+ [Exécutez l'application](#example-keystore-run)
+ [Tester l'application](#example-keystore-test)

##### Création d'un VPC avec un cluster Amazon MSK
<a name="example-keystore-createcluster"></a>

Pour créer un exemple de VPC et de cluster Amazon MSK auquel accéder depuis une application de service géré pour Apache Flink, suivez le didacticiel [Mise en route avec Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html).

Lorsque vous avez terminé le didacticiel, effectuez ce qui suit :
+ À l’[étape 3 : création d’une rubrique](https://docs.aws.amazon.com/msk/latest/developerguide/create-topic.html), répétez la commande `kafka-topics.sh --create` pour créer une rubrique de destination nommée `AWS KafkaTutorialTopicDestination` :

  ```
  bin/kafka-topics.sh --create --bootstrap-server ZooKeeperConnectionString --replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopicDestination
  ```
**Note**  
Si la `kafka-topics.sh` commande renvoie une `ZooKeeperClientTimeoutException`, vérifiez que le groupe de sécurité du cluster Kafka dispose d’une règle entrante autorisant tout le trafic provenant de l’adresse IP privée de l’instance cliente.
+ Enregistrez la liste des serveurs bootstrap de votre cluster. Vous pouvez obtenir la liste des serveurs bootstrap à l'aide de la commande suivante (remplacez-la *ClusterArn* par l'ARN de votre cluster MSK) :

  ```
  aws kafka get-bootstrap-brokers --region us-west-2 --cluster-arn ClusterArn
  {...
      "BootstrapBrokerStringTls": "b-2.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-1.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-3.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094"
  }
  ```
+ Lorsque vous suivez les étapes de ce didacticiel et les didacticiels prérequis, veillez à utiliser AWS la région sélectionnée dans le code, les commandes et les entrées de console.

##### Créez un truststore personnalisé et appliquez-le à votre cluster
<a name="example-keystore-cert"></a>

Dans cette section, vous allez créer une autorité de certification (CA) personnalisée, l’utiliser pour générer un truststore personnalisé et l’appliquer à votre cluster MSK.

Pour créer et appliquer votre truststore personnalisé, suivez le didacticiel [Authentification client](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html) figurant dans le *guide du développeur Amazon Managed Streaming for Apache Kafka*.

##### Créez le code de l'application
<a name="example-keystore-code"></a>

Dans cette section, vous allez télécharger et compiler le fichier JAR de l’application.

Le code de l'application Java pour cet exemple est disponible sur GitHub. Pour télécharger le code d’application, procédez comme suit :

1. Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez [Installation de Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Cloner le référentiel distant à l’aide de la commande suivante :

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Le code d’application est situé dans le fichier `amazon-kinesis-data-analytics-java-examples/CustomKeystore`. Vous pouvez examiner le code pour vous familiariser avec la structure du code du service géré pour Apache Flink.

1. Utilisez l’outil de ligne de commande Maven ou votre environnement de développement préféré pour créer le fichier JAR. Pour compiler le fichier JAR à l’aide de l’outil de ligne de commande Maven, saisissez ce qui suit :

   ```
   mvn package -Dflink.version=1.15.3
   ```

   En cas de succès de la génération, le fichier suivant est créé :

   ```
   target/flink-app-1.0-SNAPSHOT.jar
   ```
**Note**  
Le code source fourni repose sur les bibliothèques de Java 11. 

##### Téléchargez le code Java de streaming Apache Flink
<a name="example-keystore-upload"></a>

Dans cette section, vous allez charger votre code d’application dans le compartiment Amazon S3 que vous avez créé dans le didacticiel [Tutoriel : Commencez à utiliser l' DataStream API dans Managed Service pour Apache Flink](getting-started.md).

**Note**  
Si vous avez supprimé le compartiment Amazon S3 du didacticiel Mise en route, suivez à nouveau l’étape [Téléchargez le fichier JAR du code de l'application](get-started-exercise.md#get-started-exercise-6).

1. Dans la console Amazon S3, choisissez le *<username>* compartiment **ka-app-code-**, puis **Upload**.

1. À l’étape **Sélectionner les fichiers**, choisissez **Ajouter des fichiers**. Accédez au fichier `flink-app-1.0-SNAPSHOT.jar` que vous avez créé à l’étape précédente. 

1. Vous n’avez pas besoin de modifier les paramètres de l’objet, donc choisissez **Charger**.

Votre code d’application est désormais stocké dans un compartiment Amazon S3 auquel votre application peut accéder.

##### Pour créer l’application
<a name="example-keystore-create"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le tableau de bord du service géré pour Apache Flink, choisissez **Créer une application d’analyse**.

1. Sur la page **Service géré pour Apache Flink - Créer une application**, fournissez les détails de l’application comme suit :
   + Pour **Nom de l’application**, saisissez **MyApplication**.
   + Pour **Exécution**, choisissez **Apache Flink 1.15.2**.

1. Pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM) `kinesis-analytics-MyApplication-us-west-2`**.

1. Choisissez **Créer une application**.

**Note**  
Lorsque vous créez un service géré pour Apache Flink à l’aide de la console, vous avez la possibilité de créer un rôle et une politique IAM pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces ressources IAM sont nommées en utilisant le nom de votre application et la région, comme suit :  
Stratégie : `kinesis-analytics-service-MyApplication-us-west-2`
Rôle : `kinesisanalytics-MyApplication-us-west-2`

##### Configuration de l'application
<a name="example-keystore-configure"></a>

1. Sur la **MyApplication**page, choisissez **Configurer**.

1. Sur la page **Configurer l’application**, indiquez l’**emplacement du code**:
   + Pour le compartiment **Amazon S3**, saisissez **ka-app-code-*<username>***.
   + Pour le **chemin de l'objet Amazon S3**, saisissez **flink-app-1.0-SNAPSHOT.jar**.

1. Sous **Accéder aux ressources de l’application**, pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM `kinesis-analytics-MyApplication-us-west-2`**.
**Note**  
Lorsque vous spécifiez des ressources d’application à l’aide de la console (comme les journaux ou un VPC), la console modifie le rôle d’exécution de votre application pour autoriser l’accès à ces ressources.

1. Sous **Propriétés**, sélectionnez **Ajouter un groupe**. Saisissez les propriétés suivantes :  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)
**Note**  
Le **ssl.truststore.password** du certificat par défaut est « changeit » ; vous n’avez pas besoin de modifier cette valeur si vous utilisez le certificat par défaut.

   Choisissez à nouveau **Ajouter un groupe**. Saisissez les propriétés suivantes :  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

   Le code de l’application lit les propriétés de l’application ci-dessus pour configurer la source et le récepteur utilisés pour interagir avec votre VPC et votre cluster Amazon MSK. Pour obtenir plus d’informations sur l’utilisation des propriétés, consultez [Utiliser les propriétés d'exécution](how-properties.md).

1. Sous **Instantanés**, choisissez **Désactiver**. Cela facilitera la mise à jour de l’application sans charger de données d’état de l’application non valides.

1. Sous **Surveillance**, assurez-vous que **Surveillance du niveau des métriques** est défini sur **Application**.

1. Pour la **CloudWatch journalisation**, cochez la case **Activer**.

1. Dans la section **Cloud privé virtuel (VPC)**, choisissez le VPC à associer à votre application. Choisissez les sous-réseaux et le groupe de sécurité associés à votre VPC que vous souhaitez que l’application utilise pour accéder aux ressources du VPC.

1. Choisissez **Mettre à jour**.

**Note**  
Lorsque vous choisissez d'activer la CloudWatch journalisation, le service géré pour Apache Flink crée un groupe de journaux et un flux de journaux pour vous. Les noms de ces ressources sont les suivants :   
Groupe de journaux : `/aws/kinesis-analytics/MyApplication`
Flux de journaux : `kinesis-analytics-log-stream`
Ce flux de journaux est utilisé pour surveiller l’application.

##### Exécutez l'application
<a name="example-keystore-run"></a>

Le graphique des tâches Flink peut être visualisé en exécutant l’application, en ouvrant le tableau de bord Apache Flink et en choisissant la tâche Flink souhaitée.

##### Tester l'application
<a name="example-keystore-test"></a>

Dans cette section, vous allez écrire des enregistrements dans a rubrique source. L’application lit les enregistrements de la rubrique source et les écrit dans la rubrique de destination. Vous vérifiez que l’application fonctionne en écrivant des enregistrements dans la rubrique source et en lisant des enregistrements dans la rubrique de destination.

Pour écrire et lire des enregistrements issus des rubriques, suivez les étapes décrites à l’[Étape 6 : produire et consommer des données](https://docs.aws.amazon.com/msk/latest/developerguide/produce-consume.html) du didacticiel [Mise en route avec Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html).

Pour lire la rubrique de destination, utilisez le nom de la rubrique de destination au lieu de la rubrique source lors de votre deuxième connexion au cluster :

```
bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerString --consumer.config client.properties --topic AWS KafkaTutorialTopicDestination --from-beginning
```

Si aucun enregistrement n’apparaît dans la rubrique de destination, consultez la section[Impossible d'accéder aux ressources d'un VPC](troubleshooting-symptoms.md#troubleshooting-rt-vpc) de la rubrique [Résoudre les problèmes liés au service géré pour Apache Flink](troubleshooting.md).

### Exemples Python
<a name="examples-python"></a>

Les exemples suivants montrent comment créer des applications à l’aide de Python avec l’API de table Apache Flink.

**Topics**
+ [Exemple : création d'une fenêtre déroulante en Python](#examples-python-tumbling)
+ [Exemple : création d'une fenêtre coulissante en Python](#examples-python-sliding)
+ [Exemple : envoyer des données de streaming à Amazon S3 en Python](#examples-python-s3)

#### Exemple : création d'une fenêtre déroulante en Python
<a name="examples-python-tumbling"></a>

**Note**  
Pour des exemples actuels, voir[Exemples de création et d'utilisation d'un service géré pour les applications Apache Flink](examples-collapsibles.md).

Dans cet exercice, vous allez créer une application de service géré Python pour Apache Flink qui agrège les données à l’aide d’une fenêtre bascule. 

**Note**  
Pour configurer les prérequis requis pour cet exercice, commencez par terminer l’exercice [Tutoriel : Commencez à utiliser Python dans le service géré pour Apache Flink](gs-python.md).

**Topics**
+ [Création de ressources dépendantes](#examples-python-tumbling-resources)
+ [Écrire des exemples d'enregistrements dans le flux d'entrée](#examples-python-tumbling-write)
+ [Téléchargez et examinez le code de l'application](#examples-python-tumbling-download)
+ [Compressez et téléchargez le code Python de streaming d'Apache Flink](#examples-python-tumbling-upload)
+ [Création et exécution du service géré pour l'application Apache Flink](#examples-python-tumbling-create-run)
+ [Nettoyer les AWS ressources](#examples-python-tumbling-cleanup)

##### Création de ressources dépendantes
<a name="examples-python-tumbling-resources"></a>

Avant de créer une application de service géré pour Apache Flink dans le cadre de cet exercice, vous commencez par créer les ressources dépendantes suivantes : 
+ Deux flux de données Kinesis (`ExampleInputStream` et `ExampleOutputStream`)
+ Un compartiment Amazon S3 pour stocker le code de l’application (`ka-app-code-<username>`) 

Vous pouvez créer les flux Kinesis et un compartiment S3 à l’aide de la console. Pour obtenir des instructions sur la création de ces ressources, consultez les rubriques suivantes :
+ [Création et mise à jour de flux de données](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) dans le *Guide du développeur Amazon Kinesis Data Streams*. Nommez vos flux de données **ExampleInputStream** et **ExampleOutputStream**.
+ [Comment créer un compartiment S3 ?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) dans le *Guide de l’utilisateur de la console Amazon Simple Storage Service*. Donnez au compartiment Amazon S3 un nom unique au monde en ajoutant votre nom de connexion, tel que **ka-app-code-*<username>***.

##### Écrire des exemples d'enregistrements dans le flux d'entrée
<a name="examples-python-tumbling-write"></a>

Dans cette section, vous utilisez un script Python pour écrire les exemples d’enregistrements dans le flux pour que l’application les traite.

**Note**  
Cette section nécessite le kit [AWS SDK pour Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

**Note**  
Le script Python de cette section utilise l’interface AWS CLI. Vous devez configurer votre compte AWS CLI pour utiliser les informations d'identification de votre compte et la région par défaut. Pour configurer votre AWS CLI, entrez les informations suivantes :  

```
aws configure
```

1. Créez un fichier nommé `stock.py` avec le contenu suivant :

   ```
       import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. Exécutez le script `stock.py` : 

   ```
   $ python stock.py
   ```

   Maintenez le script en cours d’exécution pendant que vous terminez le reste du didacticiel.

##### Téléchargez et examinez le code de l'application
<a name="examples-python-tumbling-download"></a>

Le code de l'application Python pour cet exemple est disponible sur GitHub. Pour télécharger le code d’application, procédez comme suit :

1. Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez [Installation de Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Cloner le référentiel distant à l’aide de la commande suivante :

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Accédez au répertoire `amazon-kinesis-data-analytics-java-examples/python/TumblingWindow`.

Le code d’application est situé dans le fichier `tumbling-windows.py`. Notez les informations suivantes à propos du code d’application :
+ L’application utilise une source de table Kinesis pour lire à partir du flux source. L’extrait de code suivant appelle la fonction `create_table` permettant de créer la source de table Kinesis :

  ```
  table_env.execute_sql(
          create_input_table(input_table_name, input_stream, input_region, stream_initpos)
      )
  ```

  La fonction `create_table` utilise une commande SQL pour créer une table soutenue par la source de streaming :

  ```
  def create_input_table(table_name, stream_name, region, stream_initpos):
      return """ CREATE TABLE {0} (
                  ticker VARCHAR(6),
                  price DOUBLE,
                  event_time TIMESTAMP(3),
                  WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND
                )
                PARTITIONED BY (ticker)
                WITH (
                  'connector' = 'kinesis',
                  'stream' = '{1}',
                  'aws.region' = '{2}',
                  'scan.stream.initpos' = '{3}',
                  'format' = 'json',
                  'json.timestamp-format.standard' = 'ISO-8601'
                ) """.format(table_name, stream_name, region, stream_initpos)
  ```
+ L’application utilise l’opérateur `Tumble` pour agréger les enregistrements dans une fenêtre bascule spécifiée et renvoyer les enregistrements agrégés sous forme d’objet de table :

  ```
  tumbling_window_table = (
          input_table.window(
              Tumble.over("10.seconds").on("event_time").alias("ten_second_window")
          )
          .group_by("ticker, ten_second_window")
          .select("ticker, price.min as price, to_string(ten_second_window.end) as event_time")
  ```
+ L’application utilise le connecteur Kinesis Flink du [https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2](https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2).

##### Compressez et téléchargez le code Python de streaming d'Apache Flink
<a name="examples-python-tumbling-upload"></a>

Dans cette section, vous allez charger votre code d’application dans le compartiment Amazon S3 que vous avez créé dans la section [Création de ressources dépendantes](#examples-python-tumbling-resources).

1. Utilisez votre application de compression préférée pour compresser les fichiers `tumbling-windows.py` et `flink-sql-connector-kinesis-1.15.2.jar`. Nommez l’archive `myapp.zip`.

1. Dans la console Amazon S3, choisissez le *<username>* compartiment **ka-app-code-**, puis **Upload**.

1. À l’étape **Sélectionner les fichiers**, choisissez **Ajouter des fichiers**. Accédez au fichier `myapp.zip` que vous avez créé à l’étape précédente. 

1. Vous n’avez pas besoin de modifier les paramètres de l’objet, donc choisissez **Charger**.

Votre code d’application est désormais stocké dans un compartiment Amazon S3 auquel votre application peut accéder.

##### Création et exécution du service géré pour l'application Apache Flink
<a name="examples-python-tumbling-create-run"></a>

Suivez ces étapes pour créer, configurer, mettre à jour et exécuter l’application à l’aide de la console.

##### Pour créer l’application
<a name="examples-python-tumbling-create"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le tableau de bord du service géré pour Apache Flink, choisissez **Créer une application d’analyse**. 

1. Sur la page **Service géré pour Apache Flink - Créer une application**, fournissez les détails de l’application comme suit :
   + Pour **Nom de l’application**, saisissez **MyApplication**.
   + Pour **Exécution**, choisissez **Apache Flink**.
**Note**  
Le service géré pour Apache Flink utilise Apache Flink version 1.15.2.
   + Laissez le menu déroulant de la version sur **Apache Flink version 1.15.2 (version recommandée)**.

1. Pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM) `kinesis-analytics-MyApplication-us-west-2`**. 

1. Choisissez **Créer une application**.

**Note**  
Lorsque vous créez une application de service géré pour Apache Flink à l’aide de la console, vous avez la possibilité de créer un rôle et une politique IAM pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces ressources IAM sont nommées en utilisant le nom de votre application et la région, comme suit :  
Stratégie : `kinesis-analytics-service-MyApplication-us-west-2`
Rôle : `kinesisanalytics-MyApplication-us-west-2`

##### Configuration de l'application
<a name="examples-python-tumbling-configure"></a>

1. Sur la **MyApplication**page, choisissez **Configurer**.

1. Sur la page **Configurer l’application**, indiquez l’**emplacement du code**:
   + Pour le compartiment **Amazon S3**, saisissez **ka-app-code-*<username>***.
   + Pour le **chemin de l'objet Amazon S3**, saisissez **myapp.zip**.

1. Sous **Accéder aux ressources de l’application**, pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM `kinesis-analytics-MyApplication-us-west-2`**.

1. Sous **Propriétés**, sélectionnez **Ajouter un groupe**. 

1. Saisissez :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

   Choisissez **Enregistrer**.

1. Sous **Propriétés**, sélectionnez à nouveau **Ajouter un groupe**. 

1. Saisissez :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

1. Sous **Propriétés**, sélectionnez à nouveau **Ajouter un groupe**. Pour **ID du groupe**, saisissez **kinesis.analytics.flink.run.options**. Ce groupe de propriétés spécial indique à votre application où se trouvent ses ressources de code. Pour plus d’informations, consultez [Spécifiez vos fichiers de code](how-python-creating.md#how-python-creating-code).

1. Saisissez :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

1. Sous **Surveillance**, assurez-vous que **Surveillance du niveau des métriques** est défini sur **Application**.

1. Pour la **CloudWatch journalisation**, cochez la case **Activer**.

1. Choisissez **Mettre à jour**.

**Note**  
Lorsque vous choisissez d'activer la CloudWatch journalisation, le service géré pour Apache Flink crée un groupe de journaux et un flux de journaux pour vous. Les noms de ces ressources sont les suivants :   
Groupe de journaux : `/aws/kinesis-analytics/MyApplication`
Flux de journaux : `kinesis-analytics-log-stream`
Ce flux de journaux est utilisé pour surveiller l’application. Il ne s’agit pas du même flux de journaux que celui utilisé par l’application pour envoyer les résultats.

##### Modifier la politique IAM
<a name="examples-python-tumbling-iam"></a>

Modifiez la politique IAM pour ajouter des autorisations afin d'accéder aux flux de données Kinesis.

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Choisissez **Stratégies**. Choisissez la politique **`kinesis-analytics-service-MyApplication-us-west-2`** créée pour vous par la console dans la section précédente. 

1. Sur la page **Récapitulatif**, choisissez **Modifier la politique**. Sélectionnez l’onglet **JSON**.

1. Ajoutez la section mise en surbrillance dans l’exemple de stratégie suivant à la politique. Remplacez le compte d'exemple IDs (*012345678901*) par votre identifiant de compte.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "logs:DescribeLogGroups",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*",
                   "arn:aws:s3:::ka-app-code-<username>/myapp.zip"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": "logs:DescribeLogStreams",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": "logs:PutLogEvents",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
           },
           {
               "Sid": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Exécutez l'application
<a name="examples-python-tumbling-run"></a>

Le graphique des tâches Flink peut être visualisé en exécutant l’application, en ouvrant le tableau de bord Apache Flink et en choisissant la tâche Flink souhaitée.

Vous pouvez vérifier les métriques du service géré pour Apache Flink sur la CloudWatch console pour vérifier que l'application fonctionne. 

##### Nettoyer les AWS ressources
<a name="examples-python-tumbling-cleanup"></a>

Cette section inclut les procédures de nettoyage AWS des ressources créées dans le didacticiel Tumbling Window.

**Topics**
+ [Supprimer votre application Managed Service for Apache Flink](#examples-python-tumbling-cleanup-app)
+ [Supprimer vos flux de données Kinesis](#examples-python-tumbling-cleanup-stream)
+ [Supprimer votre objet et votre compartiment Amazon S3](#examples-python-tumbling-cleanup-s3)
+ [Supprimer vos ressources IAM](#examples-python-tumbling-cleanup-iam)
+ [Supprimer vos CloudWatch ressources](#examples-python-tumbling-cleanup-cw)

##### Supprimer votre application Managed Service for Apache Flink
<a name="examples-python-tumbling-cleanup-app"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. dans le panneau Managed Service for Apache Flink, sélectionnez **MyApplication**.

1. Sur la page de l’application, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer vos flux de données Kinesis
<a name="examples-python-tumbling-cleanup-stream"></a>

1. [Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Dans le panneau Kinesis Data Streams, **ExampleInputStream**sélectionnez.

1. Sur la **ExampleInputStream**page, choisissez **Supprimer Kinesis Stream**, puis confirmez la suppression.

1. Sur la page **Kinesis Streams**, choisissez le **ExampleOutputStream**, choisissez **Actions**, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer votre objet et votre compartiment Amazon S3
<a name="examples-python-tumbling-cleanup-s3"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez le ***<username>*compartiment ka-app-code -.**

1. Choisissez **Supprimer**, puis saisissez le nombre du compartiment pour confirmer la suppression.

##### Supprimer vos ressources IAM
<a name="examples-python-tumbling-cleanup-iam"></a>

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans la barre de navigation, choisissez **Stratégies**.

1. Dans le contrôle du filtre, saisissez **kinesis**.

1. Choisissez la politique **kinesis-analytics-service- MyApplication -us-west-2**.

1. Choisissez **Actions de stratégie**, puis **Supprimer**.

1. Dans la barre de navigation, choisissez **Rôles**.

1. Choisissez le rôle **kinesis-analytics- MyApplication** -us-west-2.

1. Choisissez **Supprimer le rôle**, puis confirmez la suppression.

##### Supprimer vos CloudWatch ressources
<a name="examples-python-tumbling-cleanup-cw"></a>

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans la barre de navigation, choisissez **Journaux**.

1. Choisissez le groupe**/aws/kinesis-analytics/MyApplication**log.

1. Choisissez **Supprimer le groupe de journaux**, puis confirmez la suppression.

#### Exemple : création d'une fenêtre coulissante en Python
<a name="examples-python-sliding"></a>

**Note**  
Pour des exemples actuels, voir[Exemples de création et d'utilisation d'un service géré pour les applications Apache Flink](examples-collapsibles.md).

**Note**  
Pour configurer les prérequis requis pour cet exercice, commencez par terminer l’exercice [Tutoriel : Commencez à utiliser Python dans le service géré pour Apache Flink](gs-python.md).

**Topics**
+ [Création de ressources dépendantes](#examples-python-sliding-resources)
+ [Écrire des exemples d'enregistrements dans le flux d'entrée](#examples-python-sliding-write)
+ [Téléchargez et examinez le code de l'application](#examples-python-sliding-download)
+ [Compressez et téléchargez le code Python de streaming d'Apache Flink](#examples-python-sliding-upload)
+ [Création et exécution du service géré pour l'application Apache Flink](#examples-python-sliding-create-run)
+ [Nettoyer les AWS ressources](#examples-python-sliding-cleanup)

##### Création de ressources dépendantes
<a name="examples-python-sliding-resources"></a>

Avant de créer une application de service géré pour Apache Flink dans le cadre de cet exercice, vous commencez par créer les ressources dépendantes suivantes : 
+ Deux flux de données Kinesis (`ExampleInputStream` et `ExampleOutputStream`)
+ Un compartiment Amazon S3 pour stocker le code de l’application (`ka-app-code-<username>`) 

Vous pouvez créer les flux Kinesis et un compartiment S3 à l’aide de la console. Pour obtenir des instructions sur la création de ces ressources, consultez les rubriques suivantes :
+ [Création et mise à jour de flux de données](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) dans le *Guide du développeur Amazon Kinesis Data Streams*. Nommez vos flux de données **ExampleInputStream** et **ExampleOutputStream**.
+ [Comment créer un compartiment S3 ?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) dans le *Guide de l’utilisateur de la console Amazon Simple Storage Service*. Donnez au compartiment Amazon S3 un nom unique au monde en ajoutant votre nom de connexion, tel que **ka-app-code-*<username>***.

##### Écrire des exemples d'enregistrements dans le flux d'entrée
<a name="examples-python-sliding-write"></a>

Dans cette section, vous utilisez un script Python pour écrire les exemples d’enregistrements dans le flux pour que l’application les traite.

**Note**  
Cette section nécessite le kit [AWS SDK pour Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

**Note**  
Le script Python de cette section utilise l’interface AWS CLI. Vous devez configurer votre compte AWS CLI pour utiliser les informations d'identification de votre compte et la région par défaut. Pour configurer votre AWS CLI, entrez les informations suivantes :  

```
aws configure
```

1. Créez un fichier nommé `stock.py` avec le contenu suivant :

   ```
       import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. Exécutez le script `stock.py` : 

   ```
   $ python stock.py
   ```

   Maintenez le script en cours d’exécution pendant que vous terminez le reste du didacticiel.

##### Téléchargez et examinez le code de l'application
<a name="examples-python-sliding-download"></a>

Le code de l'application Python pour cet exemple est disponible sur GitHub. Pour télécharger le code d’application, procédez comme suit :

1. Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez [Installation de Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Cloner le référentiel distant à l’aide de la commande suivante :

   ```
   git clone https://github.com/aws-samples/>amazon-kinesis-data-analytics-java-examples
   ```

1. Accédez au répertoire `amazon-kinesis-data-analytics-java-examples/python/SlidingWindow`.

Le code d’application est situé dans le fichier `sliding-windows.py`. Notez les informations suivantes à propos du code d’application :
+ L’application utilise une source de table Kinesis pour lire à partir du flux source. L’extrait de code suivant appelle la fonction `create_input_table` permettant de créer la source de table Kinesis :

  ```
  table_env.execute_sql(
          create_input_table(input_table_name, input_stream, input_region, stream_initpos)
      )
  ```

  La fonction `create_input_table` utilise une commande SQL pour créer une table soutenue par la source de streaming :

  ```
  def create_input_table(table_name, stream_name, region, stream_initpos):
      return """ CREATE TABLE {0} (
                  ticker VARCHAR(6),
                  price DOUBLE,
                  event_time TIMESTAMP(3),
                  WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND
                )
                PARTITIONED BY (ticker)
                WITH (
                  'connector' = 'kinesis',
                  'stream' = '{1}',
                  'aws.region' = '{2}',
                  'scan.stream.initpos' = '{3}',
                  'format' = 'json',
                  'json.timestamp-format.standard' = 'ISO-8601'
                ) """.format(table_name, stream_name, region, stream_initpos)
   }
  ```
+ L’application utilise l’opérateur `Slide` pour agréger les enregistrements dans une fenêtre défilante spécifiée et renvoyer les enregistrements agrégés sous forme d’objet de table :

  ```
  sliding_window_table = (
          input_table
              .window(
                  Slide.over("10.seconds")
                  .every("5.seconds")
                  .on("event_time")
                  .alias("ten_second_window")
              )
              .group_by("ticker, ten_second_window")
              .select("ticker, price.min as price, to_string(ten_second_window.end) as event_time")
      )
  ```
+ [L'application utilise le connecteur Kinesis Flink, issu du fichier -1.15.2.jar. flink-sql-connector-kinesis](https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2)

##### Compressez et téléchargez le code Python de streaming d'Apache Flink
<a name="examples-python-sliding-upload"></a>

Dans cette section, vous allez charger votre code d’application dans le compartiment Amazon S3 que vous avez créé dans la section [Création de ressources dépendantes](#examples-python-sliding-resources).

Cette section décrit comment empaqueter votre application Python.

1. Utilisez votre application de compression préférée pour compresser les fichiers `sliding-windows.py` et `flink-sql-connector-kinesis-1.15.2.jar`. Nommez l’archive `myapp.zip`.

1. Dans la console Amazon S3, choisissez le *<username>* compartiment **ka-app-code-**, puis **Upload**.

1. À l’étape **Sélectionner les fichiers**, choisissez **Ajouter des fichiers**. Accédez au fichier `myapp.zip` que vous avez créé à l’étape précédente. 

1. Vous n’avez pas besoin de modifier les paramètres de l’objet, donc choisissez **Charger**.

Votre code d’application est désormais stocké dans un compartiment Amazon S3 auquel votre application peut accéder.

##### Création et exécution du service géré pour l'application Apache Flink
<a name="examples-python-sliding-create-run"></a>

Suivez ces étapes pour créer, configurer, mettre à jour et exécuter l’application à l’aide de la console.

##### Pour créer l’application
<a name="examples-python-sliding-create"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le tableau de bord du service géré pour Apache Flink, choisissez **Créer une application d’analyse**. 

1. Sur la page **Service géré pour Apache Flink - Créer une application**, fournissez les détails de l’application comme suit :
   + Pour **Nom de l’application**, saisissez **MyApplication**.
   + Pour **Exécution**, choisissez **Apache Flink**.
**Note**  
Le service géré pour Apache Flink utilise Apache Flink version 1.15.2.
   + Laissez le menu déroulant de la version sur **Apache Flink version 1.15.2 (version recommandée)**.

1. Pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM) `kinesis-analytics-MyApplication-us-west-2`**. 

1. Choisissez **Créer une application**.

**Note**  
Lorsque vous créez une application de service géré pour Apache Flink à l’aide de la console, vous avez la possibilité de créer un rôle et une politique IAM pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces ressources IAM sont nommées en utilisant le nom de votre application et la région, comme suit :  
Stratégie : `kinesis-analytics-service-MyApplication-us-west-2`
Rôle : `kinesisanalytics-MyApplication-us-west-2`

##### Configuration de l'application
<a name="examples-python-sliding-configure"></a>

1. Sur la **MyApplication**page, choisissez **Configurer**.

1. Sur la page **Configurer l’application**, indiquez l’**emplacement du code**:
   + Pour le compartiment **Amazon S3**, saisissez **ka-app-code-*<username>***.
   + Pour le **chemin de l'objet Amazon S3**, saisissez **myapp.zip**.

1. Sous **Accéder aux ressources de l’application**, pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM `kinesis-analytics-MyApplication-us-west-2`**.

1. Sous **Propriétés**, sélectionnez **Ajouter un groupe**. 

1. Entrez les valeurs et propriétés d’application suivantes :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

   Choisissez **Enregistrer**.

1. Sous **Propriétés**, sélectionnez à nouveau **Ajouter un groupe**. 

1. Entrez les valeurs et propriétés d’application suivantes :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

1. Sous **Propriétés**, sélectionnez à nouveau **Ajouter un groupe**. Pour **ID du groupe**, saisissez **kinesis.analytics.flink.run.options**. Ce groupe de propriétés spécial indique à votre application où se trouvent ses ressources de code. Pour plus d’informations, consultez [Spécifiez vos fichiers de code](how-python-creating.md#how-python-creating-code).

1. Entrez les valeurs et propriétés d’application suivantes :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

1. Sous **Surveillance**, assurez-vous que **Surveillance du niveau des métriques** est défini sur **Application**.

1. Pour la **CloudWatch journalisation**, cochez la case **Activer**.

1. Choisissez **Mettre à jour**.

**Note**  
Lorsque vous choisissez d'activer la CloudWatch journalisation, le service géré pour Apache Flink crée un groupe de journaux et un flux de journaux pour vous. Les noms de ces ressources sont les suivants :   
Groupe de journaux : `/aws/kinesis-analytics/MyApplication`
Flux de journaux : `kinesis-analytics-log-stream`
Ce flux de journaux est utilisé pour surveiller l’application. Il ne s’agit pas du même flux de journaux que celui utilisé par l’application pour envoyer les résultats.

##### Modifier la politique IAM
<a name="examples-python-sliding-iam"></a>

Modifiez la politique IAM pour ajouter des autorisations afin d'accéder aux flux de données Kinesis.

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Choisissez **Stratégies**. Choisissez la politique **`kinesis-analytics-service-MyApplication-us-west-2`** créée pour vous par la console dans la section précédente. 

1. Sur la page **Récapitulatif**, choisissez **Modifier la politique**. Sélectionnez l’onglet **JSON**.

1. Ajoutez la section mise en surbrillance dans l’exemple de stratégie suivant à la politique. Remplacez le compte d'exemple IDs (*012345678901*) par votre identifiant de compte.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "logs:DescribeLogGroups",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*",
                   "arn:aws:s3:::ka-app-code-<username>/myapp.zip"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": "logs:DescribeLogStreams",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": "logs:PutLogEvents",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
           },
           {
               "Sid": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Exécutez l'application
<a name="examples-python-sliding-run"></a>

Le graphique des tâches Flink peut être visualisé en exécutant l’application, en ouvrant le tableau de bord Apache Flink et en choisissant la tâche Flink souhaitée.

Vous pouvez vérifier les métriques du service géré pour Apache Flink sur la CloudWatch console pour vérifier que l'application fonctionne. 

##### Nettoyer les AWS ressources
<a name="examples-python-sliding-cleanup"></a>

Cette section inclut les procédures de nettoyage AWS des ressources créées dans le didacticiel Sliding Window.

**Topics**
+ [Supprimer votre application Managed Service for Apache Flink](#examples-python-sliding-cleanup-app)
+ [Supprimer vos flux de données Kinesis](#examples-python-sliding-cleanup-stream)
+ [Supprimer votre objet et votre compartiment Amazon S3](#examples-python-sliding-cleanup-s3)
+ [Supprimer vos ressources IAM](#examples-python-sliding-cleanup-iam)
+ [Supprimer vos CloudWatch ressources](#examples-python-sliding-cleanup-cw)

##### Supprimer votre application Managed Service for Apache Flink
<a name="examples-python-sliding-cleanup-app"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. dans le panneau Managed Service for Apache Flink, sélectionnez **MyApplication**.

1. Sur la page de l’application, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer vos flux de données Kinesis
<a name="examples-python-sliding-cleanup-stream"></a>

1. [Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Dans le panneau Kinesis Data Streams, **ExampleInputStream**sélectionnez.

1. Sur la **ExampleInputStream**page, choisissez **Supprimer Kinesis Stream**, puis confirmez la suppression.

1. Sur la page **Kinesis Streams**, choisissez le **ExampleOutputStream**, choisissez **Actions**, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer votre objet et votre compartiment Amazon S3
<a name="examples-python-sliding-cleanup-s3"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez le ***<username>*compartiment ka-app-code -.**

1. Choisissez **Supprimer**, puis saisissez le nombre du compartiment pour confirmer la suppression.

##### Supprimer vos ressources IAM
<a name="examples-python-sliding-cleanup-iam"></a>

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans la barre de navigation, choisissez **Stratégies**.

1. Dans le contrôle du filtre, saisissez **kinesis**.

1. Choisissez la politique **kinesis-analytics-service- MyApplication -us-west-2**.

1. Choisissez **Actions de stratégie**, puis **Supprimer**.

1. Dans la barre de navigation, choisissez **Rôles**.

1. Choisissez le rôle **kinesis-analytics- MyApplication** -us-west-2.

1. Choisissez **Supprimer le rôle**, puis confirmez la suppression.

##### Supprimer vos CloudWatch ressources
<a name="examples-python-sliding-cleanup-cw"></a>

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans la barre de navigation, choisissez **Journaux**.

1. Choisissez le groupe**/aws/kinesis-analytics/MyApplication**log.

1. Choisissez **Supprimer le groupe de journaux**, puis confirmez la suppression.

#### Exemple : envoyer des données de streaming à Amazon S3 en Python
<a name="examples-python-s3"></a>

**Note**  
Pour des exemples actuels, voir[Exemples de création et d'utilisation d'un service géré pour les applications Apache Flink](examples-collapsibles.md).

Dans cet exercice, vous allez créer une application de service géré Python pour Apache Flink qui diffuse des données vers un récepteur Amazon Simple Storage Service. 

**Note**  
Pour configurer les prérequis requis pour cet exercice, commencez par terminer l’exercice [Tutoriel : Commencez à utiliser Python dans le service géré pour Apache Flink](gs-python.md).

**Topics**
+ [Création de ressources dépendantes](#examples-python-s3-resources)
+ [Écrire des exemples d'enregistrements dans le flux d'entrée](#examples-python-s3-write)
+ [Téléchargez et examinez le code de l'application](#examples-python-s3-download)
+ [Compressez et téléchargez le code Python de streaming d'Apache Flink](#examples-python-s3-upload)
+ [Création et exécution du service géré pour l'application Apache Flink](#examples-python-s3-create-run)
+ [Nettoyer les AWS ressources](#examples-python-s3-cleanup)

##### Création de ressources dépendantes
<a name="examples-python-s3-resources"></a>

Avant de créer une application de service géré pour Apache Flink dans le cadre de cet exercice, vous commencez par créer les ressources dépendantes suivantes : 
+ Un flux de données Kinesis (`ExampleInputStream`)
+ Un compartiment Amazon S3 pour stocker le code et la sortie de l’application (`ka-app-code-<username>`) 

**Note**  
Le service géré pour Apache Flink ne peut pas écrire de données sur Amazon S3 lorsque le chiffrement côté serveur est activé sur le service géré pour Apache Flink.

Vous pouvez créer un flux Kinesis et un compartiment S3 à l’aide de la console. Pour obtenir des instructions sur la création de ces ressources, consultez les rubriques suivantes :
+ [Création et mise à jour de flux de données](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) dans le *Guide du développeur Amazon Kinesis Data Streams*. Attribuez un nom à votre flux de données **ExampleInputStream**.
+ [Comment créer un compartiment S3 ?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) dans le *Guide de l’utilisateur de la console Amazon Simple Storage Service*. Donnez au compartiment Amazon S3 un nom unique au monde en ajoutant votre nom de connexion, tel que **ka-app-code-*<username>***.

##### Écrire des exemples d'enregistrements dans le flux d'entrée
<a name="examples-python-s3-write"></a>

Dans cette section, vous utilisez un script Python pour écrire les exemples d’enregistrements dans le flux pour que l’application les traite.

**Note**  
Cette section nécessite le kit [AWS SDK pour Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

**Note**  
Le script Python de cette section utilise l’interface AWS CLI. Vous devez configurer votre compte AWS CLI pour utiliser les informations d'identification de votre compte et la région par défaut. Pour configurer votre AWS CLI, entrez les informations suivantes :  

```
aws configure
```

1. Créez un fichier nommé `stock.py` avec le contenu suivant :

   ```
       import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. Exécutez le script `stock.py` : 

   ```
   $ python stock.py
   ```

   Maintenez le script en cours d’exécution pendant que vous terminez le reste du didacticiel.

##### Téléchargez et examinez le code de l'application
<a name="examples-python-s3-download"></a>

Le code de l'application Python pour cet exemple est disponible sur GitHub. Pour télécharger le code d’application, procédez comme suit :

1. Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez [Installation de Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Cloner le référentiel distant à l’aide de la commande suivante :

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Accédez au répertoire `amazon-kinesis-data-analytics-java-examples/python/S3Sink`.

Le code d’application est situé dans le fichier `streaming-file-sink.py`. Notez les informations suivantes à propos du code d’application :
+ L’application utilise une source de table Kinesis pour lire à partir du flux source. L’extrait de code suivant appelle la fonction `create_source_table` permettant de créer la source de table Kinesis :

  ```
  table_env.execute_sql(
          create_source_table(input_table_name, input_stream, input_region, stream_initpos)
      )
  ```

  La fonction `create_source_table` utilise une commande SQL pour créer une table soutenue par la source de streaming

  ```
  import datetime
      import json
      import random
      import boto3
  
      STREAM_NAME = "ExampleInputStream"
  
  
      def get_data():
          return {
              'event_time': datetime.datetime.now().isoformat(),
              'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
              'price': round(random.random() * 100, 2)}
  
  
      def generate(stream_name, kinesis_client):
          while True:
              data = get_data()
              print(data)
              kinesis_client.put_record(
                  StreamName=stream_name,
                  Data=json.dumps(data),
                  PartitionKey="partitionkey")
  
  
      if __name__ == '__main__':
          generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  ```
+ L’application utilise le connecteur `filesystem` pour envoyer des enregistrements vers un compartiment Amazon S3 :

  ```
  def create_sink_table(table_name, bucket_name):
      return """ CREATE TABLE {0} (
                  ticker VARCHAR(6),
                  price DOUBLE,
                  event_time VARCHAR(64)
                )
                PARTITIONED BY (ticker)
                WITH (
                    'connector'='filesystem',
                    'path'='s3a://{1}/',
                    'format'='json',
                    'sink.partition-commit.policy.kind'='success-file',
                    'sink.partition-commit.delay' = '1 min'
                ) """.format(table_name, bucket_name)
  ```
+ [L'application utilise le connecteur Kinesis Flink, issu du fichier -1.15.2.jar. flink-sql-connector-kinesis](https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2)

##### Compressez et téléchargez le code Python de streaming d'Apache Flink
<a name="examples-python-s3-upload"></a>

Dans cette section, vous allez charger votre code d’application dans le compartiment Amazon S3 que vous avez créé dans la section [Création de ressources dépendantes](#examples-python-s3-resources).

1. Utilisez votre application de compression préférée pour compresser les fichiers `streaming-file-sink.py` et [flink-sql-connector-kinesis-1.15.2.jar](https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2). Nommez l’archive `myapp.zip`.

1. Dans la console Amazon S3, choisissez le *<username>* compartiment **ka-app-code-**, puis **Upload**.

1. À l’étape **Sélectionner les fichiers**, choisissez **Ajouter des fichiers**. Accédez au fichier `myapp.zip` que vous avez créé à l’étape précédente. 

1. Vous n’avez pas besoin de modifier les paramètres de l’objet, donc choisissez **Charger**.

Votre code d’application est désormais stocké dans un compartiment Amazon S3 auquel votre application peut accéder.

##### Création et exécution du service géré pour l'application Apache Flink
<a name="examples-python-s3-create-run"></a>

Suivez ces étapes pour créer, configurer, mettre à jour et exécuter l’application à l’aide de la console.

##### Pour créer l’application
<a name="examples-python-s3-create"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le tableau de bord du service géré pour Apache Flink, choisissez **Créer une application d’analyse**. 

1. Sur la page **Service géré pour Apache Flink - Créer une application**, fournissez les détails de l’application comme suit :
   + Pour **Nom de l’application**, saisissez **MyApplication**.
   + Pour **Exécution**, choisissez **Apache Flink**.
**Note**  
Le service géré pour Apache Flink utilise Apache Flink version 1.15.2.
   + Laissez le menu déroulant de la version sur **Apache Flink version 1.15.2 (version recommandée)**.

1. Pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM) `kinesis-analytics-MyApplication-us-west-2`**. 

1. Choisissez **Créer une application**.

**Note**  
Lorsque vous créez une application de service géré pour Apache Flink à l’aide de la console, vous avez la possibilité de créer un rôle et une politique IAM pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces ressources IAM sont nommées en utilisant le nom de votre application et la région, comme suit :  
Stratégie : `kinesis-analytics-service-MyApplication-us-west-2`
Rôle : `kinesisanalytics-MyApplication-us-west-2`

##### Configuration de l'application
<a name="examples-python-s3-configure"></a>

1. Sur la **MyApplication**page, choisissez **Configurer**.

1. Sur la page **Configurer l’application**, indiquez l’**emplacement du code**:
   + Pour le compartiment **Amazon S3**, saisissez **ka-app-code-*<username>***.
   + Pour le **chemin de l'objet Amazon S3**, saisissez **myapp.zip**.

1. Sous **Accéder aux ressources de l’application**, pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM `kinesis-analytics-MyApplication-us-west-2`**.

1. Sous **Propriétés**, sélectionnez **Ajouter un groupe**.

1. Entrez les valeurs et propriétés d’application suivantes :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

   Choisissez **Enregistrer**.

1. Sous **Propriétés**, sélectionnez à nouveau **Ajouter un groupe**. Pour **ID du groupe**, saisissez **kinesis.analytics.flink.run.options**. Ce groupe de propriétés spécial indique à votre application où se trouvent ses ressources de code. Pour plus d’informations, consultez [Spécifiez vos fichiers de code](how-python-creating.md#how-python-creating-code).

1. Entrez les valeurs et propriétés d’application suivantes :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

1. Sous **Propriétés**, sélectionnez à nouveau **Ajouter un groupe**. Pour **ID du groupe**, saisissez **sink.config.0**. Ce groupe de propriétés spécial indique à votre application où se trouvent ses ressources de code. Pour de plus amples informations, veuillez consulter [Spécifiez vos fichiers de code](how-python-creating.md#how-python-creating-code).

1. Entrez les propriétés et valeurs d'application suivantes : (remplacez *bucket-name* par le nom réel de votre compartiment Amazon S3.)    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

1. Sous **Surveillance**, assurez-vous que **Surveillance du niveau des métriques** est défini sur **Application**.

1. Pour la **CloudWatch journalisation**, cochez la case **Activer**.

1. Choisissez **Mettre à jour**.

**Note**  
Lorsque vous choisissez d'activer la CloudWatch journalisation, le service géré pour Apache Flink crée un groupe de journaux et un flux de journaux pour vous. Les noms de ces ressources sont les suivants :   
Groupe de journaux : `/aws/kinesis-analytics/MyApplication`
Flux de journaux : `kinesis-analytics-log-stream`
Ce flux de journaux est utilisé pour surveiller l’application. Il ne s’agit pas du même flux de journaux que celui utilisé par l’application pour envoyer les résultats.

##### Modifier la politique IAM
<a name="examples-python-s3-iam"></a>

Modifiez la politique IAM pour ajouter des autorisations afin d'accéder aux flux de données Kinesis.

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Choisissez **Stratégies**. Choisissez la politique **`kinesis-analytics-service-MyApplication-us-west-2`** créée pour vous par la console dans la section précédente. 

1. Sur la page **Récapitulatif**, choisissez **Modifier la politique**. Sélectionnez l’onglet **JSON**.

1. Ajoutez la section mise en surbrillance dans l’exemple de stratégie suivant à la politique. Remplacez le compte d'exemple IDs (*012345678901*) par votre identifiant de compte.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "logs:DescribeLogGroups",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*",
                   "arn:aws:s3:::ka-app-code-<username>/myapp.zip"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": "logs:DescribeLogStreams",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": "logs:PutLogEvents",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
           },
           {
               "Sid": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteObjects",
               "Effect": "Allow",
               "Action": [
                   "s3:Abort*",
                   "s3:DeleteObject*",
                   "s3:GetObject*",
                   "s3:GetBucket*",
                   "s3:List*",
                   "s3:ListBucket",
                   "s3:PutObject"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-<username>",
                   "arn:aws:s3:::ka-app-code-<username>/*"
               ]
           }
       ]
   }
   ```

------

##### Exécutez l'application
<a name="examples-python-s3-run"></a>

Le graphique des tâches Flink peut être visualisé en exécutant l’application, en ouvrant le tableau de bord Apache Flink et en choisissant la tâche Flink souhaitée.

Vous pouvez vérifier les métriques du service géré pour Apache Flink sur la CloudWatch console pour vérifier que l'application fonctionne. 

##### Nettoyer les AWS ressources
<a name="examples-python-s3-cleanup"></a>

Cette section inclut les procédures de nettoyage AWS des ressources créées dans le didacticiel Sliding Window.

**Topics**
+ [Supprimer votre application Managed Service for Apache Flink](#examples-python-s3-cleanup-app)
+ [Supprimer votre flux de données Kinesis](#examples-python-s3-cleanup-stream)
+ [Supprimer vos objets et votre compartiment Amazon S3](#examples-python-s3-cleanup-s3)
+ [Supprimer vos ressources IAM](#examples-python-s3-cleanup-iam)
+ [Supprimer vos CloudWatch ressources](#examples-python-s3-cleanup-cw)

##### Supprimer votre application Managed Service for Apache Flink
<a name="examples-python-s3-cleanup-app"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. dans le panneau Managed Service for Apache Flink, sélectionnez **MyApplication**.

1. Sur la page de l’application, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer votre flux de données Kinesis
<a name="examples-python-s3-cleanup-stream"></a>

1. [Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Dans le panneau Kinesis Data Streams, **ExampleInputStream**sélectionnez.

1. Sur la **ExampleInputStream**page, choisissez **Supprimer Kinesis Stream**, puis confirmez la suppression.

##### Supprimer vos objets et votre compartiment Amazon S3
<a name="examples-python-s3-cleanup-s3"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez le ***<username>*compartiment ka-app-code -.**

1. Choisissez **Supprimer**, puis saisissez le nombre du compartiment pour confirmer la suppression.

##### Supprimer vos ressources IAM
<a name="examples-python-s3-cleanup-iam"></a>

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans la barre de navigation, choisissez **Stratégies**.

1. Dans le contrôle du filtre, saisissez **kinesis**.

1. Choisissez la politique **kinesis-analytics-service- MyApplication -us-west-2**.

1. Choisissez **Actions de stratégie**, puis **Supprimer**.

1. Dans la barre de navigation, choisissez **Rôles**.

1. Choisissez le rôle **kinesis-analytics- MyApplication** -us-west-2.

1. Choisissez **Supprimer le rôle**, puis confirmez la suppression.

##### Supprimer vos CloudWatch ressources
<a name="examples-python-s3-cleanup-cw"></a>

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans la barre de navigation, choisissez **Journaux**.

1. Choisissez le groupe**/aws/kinesis-analytics/MyApplication**log.

1. Choisissez **Supprimer le groupe de journaux**, puis confirmez la suppression.

### Exemples de Scala
<a name="examples-scala"></a>

Les exemples suivants montrent comment créer des applications à l’aide de Scala avec Apache Flink.

**Topics**
+ [Exemple : création d'une fenêtre déroulante dans Scala](#examples-tumbling-scala)
+ [Exemple : création d'une fenêtre coulissante dans Scala](#examples-sliding-scala)
+ [Exemple : envoyer des données de streaming à Amazon S3 dans Scala](#examples-s3sink-scala)

#### Exemple : création d'une fenêtre déroulante dans Scala
<a name="examples-tumbling-scala"></a>

**Note**  
Pour des exemples actuels, voir[Exemples de création et d'utilisation d'un service géré pour les applications Apache Flink](examples-collapsibles.md).

**Note**  
À partir de la version 1.15, Flink n’utilise plus Scala. Les applications peuvent désormais utiliser l’API Java depuis n’importe quelle version de Scala. Flink utilise toujours Scala dans quelques composants clés en interne, mais n’expose pas Scala dans le chargeur de classes du code de l’utilisateur. Pour cette raison, les utilisateurs doivent ajouter des dépendances Scala dans leurs archives JAR.  
Pour plus d’informations sur les modifications apportées à Scala dans Flink 1.15, consultez [Scala Free in One Fifteen](https://flink.apache.org/2022/02/22/scala-free.html).

Dans cet exercice, vous allez créer une application de streaming simple qui utilise Scala 3.2.0 et l'API Java de Flink. DataStream L’application lit les données du flux Kinesis, les agrège à l’aide de fenêtres défilantes et écrit les résultats pour générer le flux Kinesis.

**Note**  
Pour configurer les prérequis requis pour cet exercice, commencez par terminer l’exercice [Mise en route (Scala).](https://docs.aws.amazon.com/managed-flink/latest/java/examples-gs-scala.html) 

**Topics**
+ [Téléchargez et examinez le code de l'application](#examples-tumbling-scala-download)
+ [Compiler et charger le code d’application](#examples-tumbling-scala-upload)
+ [Création et exécution de l'application (console)](#scala-7)
+ [Création et exécution de l’application (CLI)](#examples-tumbling-scala-create-run-cli)
+ [Mise à jour du code de l’application](#examples-tumbling-scala-update-app-code)
+ [Nettoyer les AWS ressources](#examples-tumbling-scala-cleanup)

##### Téléchargez et examinez le code de l'application
<a name="examples-tumbling-scala-download"></a>

Le code de l'application Python pour cet exemple est disponible sur GitHub. Pour télécharger le code d’application, procédez comme suit :

1. Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez [Installation de Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Cloner le référentiel distant à l’aide de la commande suivante :

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Accédez au répertoire `amazon-kinesis-data-analytics-java-examples/scala/TumblingWindow`.

Notez les informations suivantes à propos du code d’application :
+ Un fichier `build.sbt` contient des informations sur la configuration et les dépendances de l’application, y compris les bibliothèques du service géré pour Apache Flink.
+ Le fichier `BasicStreamingJob.scala` contient la méthode principale qui définit la fonctionnalité de l’application.
+ L’application utilise une source Kinesis pour lire à partir du flux source. L’extrait de code suivant crée la source Kinesis :

  ```
  private def createSource: FlinkKinesisConsumer[String] = {
    val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties
    val inputProperties = applicationProperties.get("ConsumerConfigProperties")
  
    new FlinkKinesisConsumer[String](inputProperties.getProperty(streamNameKey, defaultInputStreamName),
      new SimpleStringSchema, inputProperties)
  }
  ```

  L’application utilise également un récepteur Kinesis pour écrire dans le flux de résultats. L’extrait de code suivant crée le récepteur Kinesis :

  ```
  private def createSink: KinesisStreamsSink[String] = {
    val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties
    val outputProperties = applicationProperties.get("ProducerConfigProperties")
  
    KinesisStreamsSink.builder[String]
      .setKinesisClientProperties(outputProperties)
      .setSerializationSchema(new SimpleStringSchema)
      .setStreamName(outputProperties.getProperty(streamNameKey, defaultOutputStreamName))
      .setPartitionKeyGenerator((element: String) => String.valueOf(element.hashCode))
      .build
  }
  ```
+ L’application utilise l’opérateur de fenêtre pour déterminer le nombre de valeurs de chaque symbole boursier sur une fenêtre bascule de 5 secondes. Le code suivant crée l’opérateur et envoie les données agrégées vers un nouveau récepteur Kinesis Data Streams :

  ```
  environment.addSource(createSource)
    .map { value =>
      val jsonNode = jsonParser.readValue(value, classOf[JsonNode])
      new Tuple2[String, Int](jsonNode.get("ticker").toString, 1)
    }
    .returns(Types.TUPLE(Types.STRING, Types.INT))
    .keyBy(v => v.f0) // Logically partition the stream for each ticker 
    .window(TumblingProcessingTimeWindows.of(Time.seconds(10)))
    .sum(1) // Sum the number of tickers per partition
    .map { value => value.f0 + "," + value.f1.toString + "\n" }
    .sinkTo(createSink)
  ```
+ L'application crée des connecteurs source et récepteur pour accéder à des ressources externes à l'aide d'un StreamExecutionEnvironment objet.
+ L’application crée les connecteurs source et récepteur à l’aide de propriétés d’application dynamiques. Les propriétés d’exécution de l’application sont lues pour configurer les connecteurs. Pour de plus amples informations sur les propriétés d’exécution, consultez [Runtime Properties](https://docs.aws.amazon.com/managed-flink/latest/java/how-properties.html).

##### Compiler et charger le code d’application
<a name="examples-tumbling-scala-upload"></a>

Dans cette section, vous compilez et charger votre code d’application dans un compartiment Amazon S3.

**Compilation du code d’application**

Utilisez l’outil de construction [SBT](https://www.scala-sbt.org/) pour créer le code Scala de l’application. Pour installer SBT, consultez [Install sbt with cs setup](https://www.scala-sbt.org/download.html). Vous devez également installer le kit de développement Java (JDK). Consultez [Prerequisites for Completing the Exercises](https://docs.aws.amazon.com/managed-flink/latest/java/getting-started.html#setting-up-prerequisites).

1. Pour utiliser votre code d’application, vous le compilez et l’intégrez dans un fichier JAR. Vous pouvez compiler et empaqueter votre code avec SBT :

   ```
   sbt assembly
   ```

1. Si la compilation de l’application aboutit, le fichier suivant est créé :

   ```
   target/scala-3.2.0/tumbling-window-scala-1.0.jar
   ```

**Chargement du code Scala Apache Flink**

Dans cette section, vous allez créer un compartiment Amazon S3 et charger votre code d’application.

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez **Créer un compartiment**.

1. Saisissez `ka-app-code-<username>` dans le champ **Nom du compartiment**. Ajoutez un suffixe au nom du compartiment, par exemple votre nom d’utilisateur, pour qu’il soit unique. Choisissez **Suivant**.

1. À l’étape **Configurer les options**, conservez les paramètres, puis choisissez **Suivant**.

1. À l’étape **Définir des autorisations**, conservez les paramètres, puis choisissez **Suivant**.

1. Choisissez **Créer un compartiment**.

1. Ouvrez le compartiment `ka-app-code-<username>`, puis choisissez **Charger**.

1. À l’étape **Sélectionner les fichiers**, choisissez **Ajouter des fichiers**. Accédez au fichier `tumbling-window-scala-1.0.jar` que vous avez créé à l’étape précédente. 

1. Vous n’avez pas besoin de modifier les paramètres de l’objet, donc choisissez **Charger**.

Votre code d’application est désormais stocké dans un compartiment Amazon S3 auquel votre application peut accéder.

##### Création et exécution de l'application (console)
<a name="scala-7"></a>

Suivez ces étapes pour créer, configurer, mettre à jour et exécuter l’application à l’aide de la console.

##### Pour créer l’application
<a name="scala-7-console-create"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le tableau de bord du service géré pour Apache Flink, choisissez **Créer une application d’analyse**.

1. Sur la page **Service géré pour Apache Flink - Créer une application**, fournissez les détails de l’application comme suit :
   + Pour **Nom de l’application**, saisissez **MyApplication**.
   + Pour **Description**, saisissez **My Scala test app**.
   + Pour **Exécution**, choisissez **Apache Flink**.
   + Laissez la version sur **Apache Flink 1.15.2 (version recommandée)**.

1. Pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM) `kinesis-analytics-MyApplication-us-west-2`**.

1. Choisissez **Créer une application**.

**Note**  
Lorsque vous créez une application de service géré pour Apache Flink à l’aide de la console, vous avez la possibilité de créer un rôle et une politique IAM pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces ressources IAM sont nommées en utilisant le nom de votre application et la région, comme suit :  
Stratégie : `kinesis-analytics-service-MyApplication-us-west-2`
Rôle : `kinesisanalytics-MyApplication-us-west-2`

##### Configuration de l'application
<a name="scala-7-console-configure"></a>

Procédez comme suit pour configurer l’application.

**Pour configurer l’application**

1. Sur la **MyApplication**page, choisissez **Configurer**.

1. Sur la page **Configurer l’application**, indiquez l’**emplacement du code**:
   + Pour le compartiment **Amazon S3**, saisissez **ka-app-code-*<username>***.
   + Pour le **chemin de l'objet Amazon S3**, saisissez **tumbling-window-scala-1.0.jar**.

1. Sous **Accéder aux ressources de l’application**, pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM `kinesis-analytics-MyApplication-us-west-2`**.

1. Sous **Propriétés**, sélectionnez **Ajouter un groupe**. 

1. Saisissez :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

   Choisissez **Enregistrer**.

1. Sous **Propriétés**, sélectionnez à nouveau **Ajouter un groupe**. 

1. Saisissez :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

1. Sous **Surveillance**, assurez-vous que **Surveillance du niveau des métriques** est défini sur **Application**.

1. Pour la **CloudWatch journalisation**, cochez la case **Activer**.

1. Choisissez **Mettre à jour**.

**Note**  
Lorsque vous choisissez d'activer la CloudWatch journalisation Amazon, Managed Service for Apache Flink crée un groupe de journaux et un flux de journaux pour vous. Les noms de ces ressources sont les suivants :   
Groupe de journaux : `/aws/kinesis-analytics/MyApplication`
Flux de journaux : `kinesis-analytics-log-stream`

##### Modifier la politique IAM
<a name="scala-7-console-iam"></a>

Modifiez la politique IAM pour ajouter des autorisations afin d’accéder au compartiment Amazon S3.

**Pour modifier la politique IAM afin d’ajouter des autorisations au compartiment S3**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Choisissez **Stratégies**. Choisissez la politique **`kinesis-analytics-service-MyApplication-us-west-2`** créée pour vous par la console dans la section précédente. 

1. Sur la page **Récapitulatif**, choisissez **Modifier la politique**. Sélectionnez l’onglet **JSON**.

1. Ajoutez la section mise en surbrillance dans l’exemple de stratégie suivant à la politique. Remplacez le compte d'exemple IDs (*012345678901*) par votre identifiant de compte.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-username/tumbling-window-scala-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Exécutez l'application
<a name="scala-7-console-run"></a>

Le graphique des tâches Flink peut être visualisé en exécutant l’application, en ouvrant le tableau de bord Apache Flink et en choisissant la tâche Flink souhaitée.

##### Arrêtez l'application
<a name="scala-7-console-stop"></a>

Pour arrêter l'application, sur la **MyApplication**page, choisissez **Arrêter**. Confirmez l’action.

##### Création et exécution de l’application (CLI)
<a name="examples-tumbling-scala-create-run-cli"></a>

Dans cette section, vous allez utiliser le AWS Command Line Interface pour créer et exécuter l'application Managed Service for Apache Flink. Utilisez la AWS CLI commande *kinesisanalyticsv2* pour créer et interagir avec le service géré pour les applications Apache Flink.

##### Créer une stratégie d’autorisations
<a name="examples-tumbling-scala-permissions"></a>

**Note**  
Vous devez créer une stratégie d’autorisations et un rôle pour votre application. Si vous ne créez pas ces ressources IAM, votre application ne peut pas accéder à ses flux de données et de journaux. 

Vous commencez par créer une stratégie d’autorisations avec deux instructions : une qui accorde des autorisations pour l’action de lecture sur le flux source et une autre qui accorde des autorisations pour les actions d’écriture sur le flux récepteur. Vous attachez ensuite la politique à un rôle IAM (que vous allez créer dans la section suivante). Ainsi, lorsque le service géré pour Apache Flink assume le rôle, le service dispose des autorisations nécessaires pour lire à partir du flux source et écrire dans le flux récepteur.

Utilisez le code suivant pour créer la politique d’autorisations `AKReadSourceStreamWriteSinkStream`. Remplacez **username** par le nom d’utilisateur que vous avez utilisé pour créer le compartiment Amazon S3 pour stocker le code d’application. Remplacez l'ID de compte dans Amazon Resource Names (ARNs) **(012345678901)** par votre identifiant de compte. Le rôle d’exécution du service **MF-stream-rw-role** doit être adapté au rôle spécifique du client.

```
{
    "ApplicationName": "tumbling_window",
    "ApplicationDescription": "Scala tumbling window application",
    "RuntimeEnvironment": "FLINK-1_15",
    "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation": {
                    "BucketARN": "arn:aws:s3:::ka-app-code-username",
                    "FileKey": "tumbling-window-scala-1.0.jar"
                }
            },
            "CodeContentType": "ZIPFILE"
        },
        "EnvironmentProperties":  { 
         "PropertyGroups": [ 
            { 
               "PropertyGroupId": "ConsumerConfigProperties",
               "PropertyMap" : {
                    "aws.region" : "us-west-2",
                    "stream.name" : "ExampleInputStream",
                    "flink.stream.initpos" : "LATEST"
               }
            },
            { 
               "PropertyGroupId": "ProducerConfigProperties",
               "PropertyMap" : {
                    "aws.region" : "us-west-2",
                    "stream.name" : "ExampleOutputStream"
               }
            }
         ]
      }
    },
    "CloudWatchLoggingOptions": [ 
      { 
         "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream"
      }
   ]
}
```

Pour step-by-step obtenir des instructions sur la création d'une politique d'autorisations, voir [Tutoriel : créer et joindre votre première politique gérée par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) dans le *guide de l'utilisateur IAM*.

##### Créer un rôle IAM
<a name="examples-tumbling-scala-iam-policy"></a>

Dans cette section, vous créez un rôle IAM que l’application de service géré pour Apache Flink peut assumer pour lire un flux source et écrire dans le flux récepteur.

Le service géré pour Apache Flink ne peut pas accéder à votre flux sans autorisation. Vous utilisez un rôle IAM pour accorder ces autorisations. Deux politiques sont attachées à chaque rôle IAM. La politique d’approbation accorde au service géré pour Apache Flink l’autorisation d’assumer le rôle, et la politique d’autorisation détermine ce que le service géré pour Apache Flink peut faire après avoir assumé le rôle.

Vous attachez la politique d’autorisations que vous avez créée dans la section précédente à ce rôle. 

**Pour créer un rôle IAM**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le volet de navigation, choisissez **Rôles**, puis **Créer un Rôle**.

1. Sous **Sélectionner le type d’identité approuvée**, choisissez **Service AWS **.

1. Sous **Choisir le service qui utilisera ce rôle**, choisissez **EC2**.

1. Sous **Sélectionnez votre cas d’utilisation**, choisissez **service géré pour Apache Flink**.

1. Choisissez **Suivant : Autorisations**.

1. Dans la page **Attacher des stratégies d’autorisations**, choisissez **Suivant : vérification**. Vous attachez des stratégies d’autorisations après avoir créé le rôle.

1. Sur la page **Créer un rôle**, saisissez **MF-stream-rw-role** pour le **Nom du rôle**. Sélectionnez **Créer un rôle**. 

    Vous venez de créer un nouveau rôle IAM appelé `MF-stream-rw-role`. Ensuite, vous mettez à jour les stratégies d’approbation et d’autorisation pour le rôle.

1. Attachez la politique d’autorisation au rôle.
**Note**  
Dans le cadre de cet exercice, Managed Service for Apache Flink assume ce rôle à la fois pour la lecture des données à partir d’un flux de données Kinesis (source) et pour l’écriture des résultats dans un autre flux de données Kinesis. Vous attachez donc la politique que vous avez créée à l’étape précédente, [Créer une stratégie d’autorisations](https://docs.aws.amazon.com/managed-flink/latest/java/get-started-exercise.html#get-started-exercise-7-cli-policy).

   1. Sur la page **Récapitulatif**, choisissez l’onglet **Autorisations**.

   1. Choisissez **Attacher des stratégies**.

   1. Dans la zone de recherche, saisissez **AKReadSourceStreamWriteSinkStream** (la politique que vous avez créée dans la section précédente). 

   1. Sélectionnez la politique `AKReadSourceStreamWriteSinkStream`, puis **Attacher une stratégie**.

Vous avez maintenant créé le rôle d’exécution de service que votre application utilise pour accéder aux ressources. Notez l’ARN du nouveau rôle.

Pour step-by-step obtenir des instructions sur la création d'un rôle, consultez la section [Création d'un rôle IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) dans le guide de l'*utilisateur IAM*.

##### Pour créer l’application
<a name="examples-tumbling-scala-create-application-cli"></a>

Copiez le code JSON suivant dans un fichier nommé `create_request.json`. Remplacez l’exemple d’ARN du rôle par l’ARN du rôle que vous avez créé précédemment. Remplacez le suffixe de l’ARN du compartiment (nom d’utilisateur) par le suffixe que vous avez choisi dans la section précédente. Remplacez l’exemple d’ID de compte (012345678901) dans le rôle d’exécution de service par votre ID de compte. Le `ServiceExecutionRole` doit inclure le rôle d’utilisateur IAM que vous avez créé dans la section précédente.

```
"ApplicationName": "tumbling_window",
    "ApplicationDescription": "Scala getting started application",
    "RuntimeEnvironment": "FLINK-1_15",
    "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation": {
                    "BucketARN": "arn:aws:s3:::ka-app-code-username",
                    "FileKey": "tumbling-window-scala-1.0.jar"
                }
            },
            "CodeContentType": "ZIPFILE"
        },
        "EnvironmentProperties":  { 
         "PropertyGroups": [ 
            { 
               "PropertyGroupId": "ConsumerConfigProperties",
               "PropertyMap" : {
                    "aws.region" : "us-west-2",
                    "stream.name" : "ExampleInputStream",
                    "flink.stream.initpos" : "LATEST"
               }
            },
            { 
               "PropertyGroupId": "ProducerConfigProperties",
               "PropertyMap" : {
                    "aws.region" : "us-west-2",
                    "stream.name" : "ExampleOutputStream"
               }
            }
         ]
      }
    },
    "CloudWatchLoggingOptions": [ 
      { 
         "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream"
      }
   ]
}
```

Exécutez le [CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)avec la requête suivante pour créer l'application :

```
aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
```

L’application est maintenant créée. Vous démarrez l’application dans l’étape suivante.

##### Lancez l'application
<a name="examples-tumbling-scala-start"></a>

Dans cette section, vous utilisez l’action [StartApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StartApplication.html) pour démarrer l’application.

**Pour démarrer l’application**

1. Copiez le code JSON suivant dans un fichier nommé `start_request.json`.

   ```
   {
       "ApplicationName": "tumbling_window",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Exécutez l’action `StartApplication` avec la demande précédente pour démarrer l’application :

   ```
   aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
   ```

L’application est maintenant en cours d’exécution. Vous pouvez consulter les métriques du service géré pour Apache Flink sur la CloudWatch console Amazon pour vérifier que l'application fonctionne.

##### Arrêtez l'application
<a name="examples-tumbling-scala-stop"></a>

Dans cette section, vous allez utiliser l’action [StopApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StopApplication.html) pour arrêter l’application.

**Pour arrêter l’application**

1. Copiez le code JSON suivant dans un fichier nommé `stop_request.json`.

   ```
   {
      "ApplicationName": "tumbling_window"
   }
   ```

1. Exécutez l’action `StopApplication` avec la demande précédente pour arrêter l’application :

   ```
   aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
   ```

L’application est maintenant arrêtée.

##### Ajouter une option de CloudWatch journalisation
<a name="examples-tumbling-scala-cw-option"></a>

Vous pouvez utiliser le AWS CLI pour ajouter un flux de CloudWatch journal Amazon à votre application. Pour plus d'informations sur l'utilisation CloudWatch des journaux avec votre application, consultez la section [Configuration de la journalisation des applications](https://docs.aws.amazon.com/managed-flink/latest/java/cloudwatch-logs.html).

##### Mettre à jour les propriétés d'environnement
<a name="examples-tumbling-scala-update-environment-properties"></a>

Dans cette section, vous utilisez l’action [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) pour modifier les propriétés d’environnement de l’application sans recompiler le code de l’application. Dans cet exemple, vous modifiez la région des flux source et de destination.

**Pour mettre à jour des propriétés d’environnement pour l’application**

1. Copiez le code JSON suivant dans un fichier nommé `update_properties_request.json`.

   ```
   {"ApplicationName": "tumbling_window",
      "CurrentApplicationVersionId": 1,
      "ApplicationConfigurationUpdate": { 
         "EnvironmentPropertyUpdates": { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2",
                       "stream.name" : "ExampleInputStream",
                       "flink.stream.initpos" : "LATEST"
                  }
               },
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2",
                       "stream.name" : "ExampleOutputStream"
                  }
               }
            ]
         }
      }
   }
   ```

1. Exécutez l’action `UpdateApplication` avec la demande précédente pour mettre à jour les propriétés de l’environnement :

   ```
   aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
   ```

##### Mise à jour du code de l’application
<a name="examples-tumbling-scala-update-app-code"></a>

Lorsque vous devez mettre à jour le code de votre application avec une nouvelle version de votre package de code, vous utilisez l'action [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)CLI.

**Note**  
Pour charger une nouvelle version du code de l’application portant le même nom de fichier, vous devez spécifier la nouvelle version de l’objet. Pour de plus amples informations sur l’utilisation des versions d’objet Amazon S3, consultez [Activation et désactivation de la gestion des versions](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

Pour l'utiliser AWS CLI, supprimez votre ancien package de code de votre compartiment Amazon S3, téléchargez la nouvelle version et appelez `UpdateApplication` en spécifiant le même compartiment Amazon S3 et le même nom d'objet, ainsi que la nouvelle version de l'objet. L’application redémarrera avec le nouveau package de code.

L’exemple de demande d’action `UpdateApplication` suivant recharge le code de l’application et redémarre l’application. Mettez à jour l’`CurrentApplicationVersionId` à la version actuelle de l’application. Vous pouvez vérifier la version actuelle de l’application à l’aide des actions `ListApplications` ou `DescribeApplication`. Mettez à jour le suffixe du nom du compartiment (<username>) avec le suffixe que vous avez choisi dans la section [Création de ressources dépendantes](examples-gs-scala.md#examples-gs-scala-resources).

```
{
    "ApplicationName": "tumbling_window",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username",
                    "FileKeyUpdate": "tumbling-window-scala-1.0.jar",
                    "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU"
                }
            }
        }
    }
}
```

##### Nettoyer les AWS ressources
<a name="examples-tumbling-scala-cleanup"></a>

Cette section inclut les procédures de nettoyage AWS des ressources créées dans le didacticiel Tumbling Window.

**Topics**
+ [Supprimer votre application Managed Service for Apache Flink](#examples-tumbling-scala-cleanup-app)
+ [Supprimer vos flux de données Kinesis](#examples-tumbling-scala-cleanup-stream)
+ [Supprimer votre objet et votre compartiment Amazon S3](#examples-tumbling-scala-cleanup-s3)
+ [Supprimer vos ressources IAM](#examples-tumbling-scala-cleanup-iam)
+ [Supprimer vos CloudWatch ressources](#examples-tumbling-scala-cleanup-cw)

##### Supprimer votre application Managed Service for Apache Flink
<a name="examples-tumbling-scala-cleanup-app"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. dans le panneau Managed Service for Apache Flink, sélectionnez **MyApplication**.

1. Sur la page de l’application, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer vos flux de données Kinesis
<a name="examples-tumbling-scala-cleanup-stream"></a>

1. [Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Dans le panneau Kinesis Data Streams, **ExampleInputStream**sélectionnez.

1. Sur la **ExampleInputStream**page, choisissez **Supprimer Kinesis Stream**, puis confirmez la suppression.

1. Sur la page **Kinesis Streams**, choisissez le **ExampleOutputStream**, choisissez **Actions**, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer votre objet et votre compartiment Amazon S3
<a name="examples-tumbling-scala-cleanup-s3"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez le ***<username>*compartiment ka-app-code -.**

1. Choisissez **Supprimer**, puis saisissez le nombre du compartiment pour confirmer la suppression.

##### Supprimer vos ressources IAM
<a name="examples-tumbling-scala-cleanup-iam"></a>

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans la barre de navigation, choisissez **Stratégies**.

1. Dans le contrôle du filtre, saisissez **kinesis**.

1. Choisissez la politique **kinesis-analytics-service- MyApplication -us-west-2**.

1. Choisissez **Actions de stratégie**, puis **Supprimer**.

1. Dans la barre de navigation, choisissez **Rôles**.

1. Choisissez le rôle **kinesis-analytics- MyApplication** -us-west-2.

1. Choisissez **Supprimer le rôle**, puis confirmez la suppression.

##### Supprimer vos CloudWatch ressources
<a name="examples-tumbling-scala-cleanup-cw"></a>

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans la barre de navigation, choisissez **Journaux**.

1. Choisissez le groupe**/aws/kinesis-analytics/MyApplication**log.

1. Choisissez **Supprimer le groupe de journaux**, puis confirmez la suppression.

#### Exemple : création d'une fenêtre coulissante dans Scala
<a name="examples-sliding-scala"></a>

**Note**  
Pour des exemples actuels, voir[Exemples de création et d'utilisation d'un service géré pour les applications Apache Flink](examples-collapsibles.md).

**Note**  
À partir de la version 1.15, Flink n’utilise plus Scala. Les applications peuvent désormais utiliser l’API Java depuis n’importe quelle version de Scala. Flink utilise toujours Scala dans quelques composants clés en interne, mais n’expose pas Scala dans le chargeur de classes du code de l’utilisateur. Pour cette raison, les utilisateurs doivent ajouter des dépendances Scala dans leurs archives JAR.  
Pour plus d’informations sur les modifications apportées à Scala dans Flink 1.15, consultez [Scala Free in One Fifteen](https://flink.apache.org/2022/02/22/scala-free.html).

Dans cet exercice, vous allez créer une application de streaming simple qui utilise Scala 3.2.0 et l'API Java de Flink. DataStream L’application lit les données du flux Kinesis, les agrège à l’aide de fenêtres défilantes et écrit les résultats pour générer le flux Kinesis.

**Note**  
Pour configurer les prérequis requis pour cet exercice, commencez par terminer l’exercice [Mise en route (Scala).](https://docs.aws.amazon.com/managed-flink/latest/java/examples-gs-scala.html) 

**Topics**
+ [Téléchargez et examinez le code de l'application](#examples-sliding-scala-download)
+ [Compiler et charger le code d’application](#examples-sliding-scala-upload)
+ [Création et exécution de l'application (console)](#scala-7)
+ [Création et exécution de l’application (CLI)](#examples-sliding-scala-create-run-cli)
+ [Mise à jour du code de l’application](#examples-sliding-scala-update-app-code)
+ [Nettoyer les AWS ressources](#examples-sliding-scala-cleanup)

##### Téléchargez et examinez le code de l'application
<a name="examples-sliding-scala-download"></a>

Le code de l'application Python pour cet exemple est disponible sur GitHub. Pour télécharger le code d’application, procédez comme suit :

1. Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez [Installation de Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Cloner le référentiel distant à l’aide de la commande suivante :

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Accédez au répertoire `amazon-kinesis-data-analytics-java-examples/scala/SlidingWindow`.

Notez les informations suivantes à propos du code d’application :
+ Un fichier `build.sbt` contient des informations sur la configuration et les dépendances de l’application, y compris les bibliothèques du service géré pour Apache Flink.
+ Le fichier `BasicStreamingJob.scala` contient la méthode principale qui définit la fonctionnalité de l’application.
+ L’application utilise une source Kinesis pour lire à partir du flux source. L’extrait de code suivant crée la source Kinesis :

  ```
  private def createSource: FlinkKinesisConsumer[String] = {
    val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties
    val inputProperties = applicationProperties.get("ConsumerConfigProperties")
  
    new FlinkKinesisConsumer[String](inputProperties.getProperty(streamNameKey, defaultInputStreamName),
      new SimpleStringSchema, inputProperties)
  }
  ```

  L’application utilise également un récepteur Kinesis pour écrire dans le flux de résultats. L’extrait de code suivant crée le récepteur Kinesis :

  ```
  private def createSink: KinesisStreamsSink[String] = {
    val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties
    val outputProperties = applicationProperties.get("ProducerConfigProperties")
  
    KinesisStreamsSink.builder[String]
      .setKinesisClientProperties(outputProperties)
      .setSerializationSchema(new SimpleStringSchema)
      .setStreamName(outputProperties.getProperty(streamNameKey, defaultOutputStreamName))
      .setPartitionKeyGenerator((element: String) => String.valueOf(element.hashCode))
      .build
  }
  ```
+ L’application utilise l’opérateur de fenêtre pour trouver le nombre de valeurs pour chaque symbole boursier sur une fenêtre de 10 secondes qui glisse de 5 secondes. Le code suivant crée l’opérateur et envoie les données agrégées vers un nouveau récepteur Kinesis Data Streams :

  ```
  environment.addSource(createSource)
      .map { value =>
        val jsonNode = jsonParser.readValue(value, classOf[JsonNode])
        new Tuple2[String, Double](jsonNode.get("ticker").toString, jsonNode.get("price").asDouble)
      }
      .returns(Types.TUPLE(Types.STRING, Types.DOUBLE))
      .keyBy(v => v.f0) // Logically partition the stream for each word
      .window(SlidingProcessingTimeWindows.of(Time.seconds(10), Time.seconds(5)))
      .min(1) // Calculate minimum price per ticker over the window
      .map { value => value.f0 + String.format(",%.2f", value.f1) + "\n" }
      .sinkTo(createSink)
  ```
+ L'application crée des connecteurs source et récepteur pour accéder à des ressources externes à l'aide d'un StreamExecutionEnvironment objet.
+ L’application crée les connecteurs source et récepteur à l’aide de propriétés d’application dynamiques. Les propriétés d’exécution de l’application sont lues pour configurer les connecteurs. Pour de plus amples informations sur les propriétés d’exécution, consultez [Runtime Properties](https://docs.aws.amazon.com/managed-flink/latest/java/how-properties.html).

##### Compiler et charger le code d’application
<a name="examples-sliding-scala-upload"></a>

Dans cette section, vous compilez et charger votre code d’application dans un compartiment Amazon S3.

**Compilation du code d’application**

Utilisez l’outil de construction [SBT](https://www.scala-sbt.org/) pour créer le code Scala de l’application. Pour installer SBT, consultez [Install sbt with cs setup](https://www.scala-sbt.org/download.html). Vous devez également installer le kit de développement Java (JDK). Consultez [Prerequisites for Completing the Exercises](https://docs.aws.amazon.com/managed-flink/latest/java/getting-started.html#setting-up-prerequisites).

1. Pour utiliser votre code d’application, vous le compilez et l’intégrez dans un fichier JAR. Vous pouvez compiler et empaqueter votre code avec SBT :

   ```
   sbt assembly
   ```

1. Si la compilation de l’application aboutit, le fichier suivant est créé :

   ```
   target/scala-3.2.0/sliding-window-scala-1.0.jar
   ```

**Chargement du code Scala Apache Flink**

Dans cette section, vous allez créer un compartiment Amazon S3 et charger votre code d’application.

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez **Créer un compartiment**.

1. Saisissez `ka-app-code-<username>` dans le champ **Nom du compartiment**. Ajoutez un suffixe au nom du compartiment, par exemple votre nom d’utilisateur, pour qu’il soit unique. Choisissez **Suivant**.

1. À l’étape **Configurer les options**, conservez les paramètres, puis choisissez **Suivant**.

1. À l’étape **Définir des autorisations**, conservez les paramètres, puis choisissez **Suivant**.

1. Choisissez **Créer un compartiment**.

1. Ouvrez le compartiment `ka-app-code-<username>`, puis choisissez **Charger**.

1. À l’étape **Sélectionner les fichiers**, choisissez **Ajouter des fichiers**. Accédez au fichier `sliding-window-scala-1.0.jar` que vous avez créé à l’étape précédente. 

1. Vous n’avez pas besoin de modifier les paramètres de l’objet, donc choisissez **Charger**.

Votre code d’application est désormais stocké dans un compartiment Amazon S3 auquel votre application peut accéder.

##### Création et exécution de l'application (console)
<a name="scala-7"></a>

Suivez ces étapes pour créer, configurer, mettre à jour et exécuter l’application à l’aide de la console.

##### Pour créer l’application
<a name="scala-7-console-create"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le tableau de bord du service géré pour Apache Flink, choisissez **Créer une application d’analyse**.

1. Sur la page **Service géré pour Apache Flink - Créer une application**, fournissez les détails de l’application comme suit :
   + Pour **Nom de l’application**, saisissez **MyApplication**.
   + Pour **Description**, saisissez **My Scala test app**.
   + Pour **Exécution**, choisissez **Apache Flink**.
   + Laissez la version sur **Apache Flink 1.15.2 (version recommandée)**.

1. Pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM) `kinesis-analytics-MyApplication-us-west-2`**.

1. Choisissez **Créer une application**.

**Note**  
Lorsque vous créez une application de service géré pour Apache Flink à l’aide de la console, vous avez la possibilité de créer un rôle et une politique IAM pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces ressources IAM sont nommées en utilisant le nom de votre application et la région, comme suit :  
Stratégie : `kinesis-analytics-service-MyApplication-us-west-2`
Rôle : `kinesisanalytics-MyApplication-us-west-2`

##### Configuration de l'application
<a name="scala-7-console-configure"></a>

Procédez comme suit pour configurer l’application.

**Pour configurer l’application**

1. Sur la **MyApplication**page, choisissez **Configurer**.

1. Sur la page **Configurer l’application**, indiquez l’**emplacement du code**:
   + Pour le compartiment **Amazon S3**, saisissez **ka-app-code-*<username>***.
   + Pour le **chemin de l'objet Amazon S3**, saisissez **sliding-window-scala-1.0.jar.**.

1. Sous **Accéder aux ressources de l’application**, pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM `kinesis-analytics-MyApplication-us-west-2`**.

1. Sous **Propriétés**, sélectionnez **Ajouter un groupe**. 

1. Saisissez :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

   Choisissez **Enregistrer**.

1. Sous **Propriétés**, sélectionnez à nouveau **Ajouter un groupe**. 

1. Saisissez :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

1. Sous **Surveillance**, assurez-vous que **Surveillance du niveau des métriques** est défini sur **Application**.

1. Pour la **CloudWatch journalisation**, cochez la case **Activer**.

1. Choisissez **Mettre à jour**.

**Note**  
Lorsque vous choisissez d'activer la CloudWatch journalisation Amazon, Managed Service for Apache Flink crée un groupe de journaux et un flux de journaux pour vous. Les noms de ces ressources sont les suivants :   
Groupe de journaux : `/aws/kinesis-analytics/MyApplication`
Flux de journaux : `kinesis-analytics-log-stream`

##### Modifier la politique IAM
<a name="scala-7-console-iam"></a>

Modifiez la politique IAM pour ajouter des autorisations afin d’accéder au compartiment Amazon S3.

**Pour modifier la politique IAM afin d’ajouter des autorisations au compartiment S3**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Choisissez **Stratégies**. Choisissez la politique **`kinesis-analytics-service-MyApplication-us-west-2`** créée pour vous par la console dans la section précédente. 

1. Sur la page **Récapitulatif**, choisissez **Modifier la politique**. Sélectionnez l’onglet **JSON**.

1. Ajoutez la section mise en surbrillance dans l’exemple de stratégie suivant à la politique. Remplacez le compte d'exemple IDs (*012345678901*) par votre identifiant de compte.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-username/sliding-window-scala-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Exécutez l'application
<a name="scala-7-console-run"></a>

Le graphique des tâches Flink peut être visualisé en exécutant l’application, en ouvrant le tableau de bord Apache Flink et en choisissant la tâche Flink souhaitée.

##### Arrêtez l'application
<a name="scala-7-console-stop"></a>

Pour arrêter l'application, sur la **MyApplication**page, choisissez **Arrêter**. Confirmez l’action.

##### Création et exécution de l’application (CLI)
<a name="examples-sliding-scala-create-run-cli"></a>

Dans cette section, vous allez utiliser le AWS Command Line Interface pour créer et exécuter l'application Managed Service for Apache Flink. Utilisez la AWS CLI commande *kinesisanalyticsv2* pour créer et interagir avec le service géré pour les applications Apache Flink.

##### Créer une stratégie d’autorisations
<a name="examples-sliding-scala-permissions"></a>

**Note**  
Vous devez créer une stratégie d’autorisations et un rôle pour votre application. Si vous ne créez pas ces ressources IAM, votre application ne peut pas accéder à ses flux de données et de journaux. 

Vous commencez par créer une stratégie d’autorisations avec deux instructions : une qui accorde des autorisations pour l’action de lecture sur le flux source et une autre qui accorde des autorisations pour les actions d’écriture sur le flux récepteur. Vous attachez ensuite la politique à un rôle IAM (que vous allez créer dans la section suivante). Ainsi, lorsque le service géré pour Apache Flink assume le rôle, le service dispose des autorisations nécessaires pour lire à partir du flux source et écrire dans le flux récepteur.

Utilisez le code suivant pour créer la politique d’autorisations `AKReadSourceStreamWriteSinkStream`. Remplacez **username** par le nom d’utilisateur que vous avez utilisé pour créer le compartiment Amazon S3 pour stocker le code d’application. Remplacez l'ID de compte dans Amazon Resource Names (ARNs) **(012345678901)** par votre identifiant de compte.

```
{
    "ApplicationName": "sliding_window",
    "ApplicationDescription": "Scala sliding window application",
    "RuntimeEnvironment": "FLINK-1_15",
    "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation": {
                    "BucketARN": "arn:aws:s3:::ka-app-code-username",
                    "FileKey": "sliding-window-scala-1.0.jar"
                }
            },
            "CodeContentType": "ZIPFILE"
        },
        "EnvironmentProperties":  { 
         "PropertyGroups": [ 
            { 
               "PropertyGroupId": "ConsumerConfigProperties",
               "PropertyMap" : {
                    "aws.region" : "us-west-2",
                    "stream.name" : "ExampleInputStream",
                    "flink.stream.initpos" : "LATEST"
               }
            },
            { 
               "PropertyGroupId": "ProducerConfigProperties",
               "PropertyMap" : {
                    "aws.region" : "us-west-2",
                    "stream.name" : "ExampleOutputStream"
               }
            }
         ]
      }
    },
    "CloudWatchLoggingOptions": [ 
      { 
         "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream"
      }
   ]
}
```

Pour step-by-step obtenir des instructions sur la création d'une politique d'autorisations, voir [Tutoriel : créer et joindre votre première politique gérée par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) dans le *guide de l'utilisateur IAM*.

##### Créer un rôle IAM
<a name="examples-sliding-scala-iam-policy"></a>

Dans cette section, vous créez un rôle IAM que l’application de service géré pour Apache Flink peut assumer pour lire un flux source et écrire dans le flux récepteur.

Le service géré pour Apache Flink ne peut pas accéder à votre flux sans autorisation. Vous utilisez un rôle IAM pour accorder ces autorisations. Deux politiques sont attachées à chaque rôle IAM. La politique d’approbation accorde au service géré pour Apache Flink l’autorisation d’assumer le rôle, et la politique d’autorisation détermine ce que le service géré pour Apache Flink peut faire après avoir assumé le rôle.

Vous attachez la politique d’autorisations que vous avez créée dans la section précédente à ce rôle. 

**Pour créer un rôle IAM**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le volet de navigation, choisissez **Rôles**, puis **Créer un Rôle**.

1. Sous **Sélectionner le type d’identité approuvée**, choisissez **Service AWS **.

1. Sous **Choisir le service qui utilisera ce rôle**, choisissez **EC2**.

1. Sous **Sélectionnez votre cas d’utilisation**, choisissez **service géré pour Apache Flink**.

1. Choisissez **Suivant : Autorisations**.

1. Dans la page **Attacher des stratégies d’autorisations**, choisissez **Suivant : vérification**. Vous attachez des stratégies d’autorisations après avoir créé le rôle.

1. Sur la page **Créer un rôle**, saisissez **MF-stream-rw-role** pour le **Nom du rôle**. Sélectionnez **Créer un rôle**. 

    Vous venez de créer un nouveau rôle IAM appelé `MF-stream-rw-role`. Ensuite, vous mettez à jour les stratégies d’approbation et d’autorisation pour le rôle.

1. Attachez la politique d’autorisation au rôle.
**Note**  
Dans le cadre de cet exercice, Managed Service for Apache Flink assume ce rôle à la fois pour la lecture des données à partir d’un flux de données Kinesis (source) et pour l’écriture des résultats dans un autre flux de données Kinesis. Vous attachez donc la politique que vous avez créée à l’étape précédente, [Créer une stratégie d’autorisations](https://docs.aws.amazon.com/managed-flink/latest/java/get-started-exercise.html#get-started-exercise-7-cli-policy).

   1. Sur la page **Récapitulatif**, choisissez l’onglet **Autorisations**.

   1. Choisissez **Attacher des stratégies**.

   1. Dans la zone de recherche, saisissez **AKReadSourceStreamWriteSinkStream** (la politique que vous avez créée dans la section précédente). 

   1. Sélectionnez la politique `AKReadSourceStreamWriteSinkStream`, puis **Attacher une stratégie**.

Vous avez maintenant créé le rôle d’exécution de service que votre application utilise pour accéder aux ressources. Notez l’ARN du nouveau rôle.

Pour step-by-step obtenir des instructions sur la création d'un rôle, consultez la section [Création d'un rôle IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) dans le guide de l'*utilisateur IAM*.

##### Pour créer l’application
<a name="examples-sliding-scala-create-application-cli"></a>

Copiez le code JSON suivant dans un fichier nommé `create_request.json`. Remplacez l’exemple d’ARN du rôle par l’ARN du rôle que vous avez créé précédemment. Remplacez le suffixe de l’ARN du compartiment (nom d’utilisateur) par le suffixe que vous avez choisi dans la section précédente. Remplacez l’exemple d’ID de compte (012345678901) dans le rôle d’exécution de service par votre ID de compte.

```
{
    "ApplicationName": "sliding_window",
    "ApplicationDescription": "Scala sliding_window application",
    "RuntimeEnvironment": "FLINK-1_15",
    "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation": {
                    "BucketARN": "arn:aws:s3:::ka-app-code-username",
                    "FileKey": "sliding-window-scala-1.0.jar"
                }
            },
            "CodeContentType": "ZIPFILE"
        },
        "EnvironmentProperties":  { 
         "PropertyGroups": [ 
            { 
               "PropertyGroupId": "ConsumerConfigProperties",
               "PropertyMap" : {
                    "aws.region" : "us-west-2",
                    "stream.name" : "ExampleInputStream",
                    "flink.stream.initpos" : "LATEST"
               }
            },
            { 
               "PropertyGroupId": "ProducerConfigProperties",
               "PropertyMap" : {
                    "aws.region" : "us-west-2",
                    "stream.name" : "ExampleOutputStream"
               }
            }
         ]
      }
    },
    "CloudWatchLoggingOptions": [ 
      { 
         "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream"
      }
   ]
}
```

Exécutez le [CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)avec la requête suivante pour créer l'application :

```
aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
```

L’application est maintenant créée. Vous démarrez l’application dans l’étape suivante.

##### Lancez l'application
<a name="examples-sliding-scala-start"></a>

Dans cette section, vous utilisez l’action [StartApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StartApplication.html) pour démarrer l’application.

**Pour démarrer l’application**

1. Copiez le code JSON suivant dans un fichier nommé `start_request.json`.

   ```
   {
       "ApplicationName": "sliding_window",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Exécutez l’action `StartApplication` avec la demande précédente pour démarrer l’application :

   ```
   aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
   ```

L’application est maintenant en cours d’exécution. Vous pouvez consulter les métriques du service géré pour Apache Flink sur la CloudWatch console Amazon pour vérifier que l'application fonctionne.

##### Arrêtez l'application
<a name="examples-sliding-scala-stop"></a>

Dans cette section, vous allez utiliser l’action [StopApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StopApplication.html) pour arrêter l’application.

**Pour arrêter l’application**

1. Copiez le code JSON suivant dans un fichier nommé `stop_request.json`.

   ```
   {
      "ApplicationName": "sliding_window"
   }
   ```

1. Exécutez l’action `StopApplication` avec la demande précédente pour arrêter l’application :

   ```
   aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
   ```

L’application est maintenant arrêtée.

##### Ajouter une option de CloudWatch journalisation
<a name="examples-sliding-scala-cw-option"></a>

Vous pouvez utiliser le AWS CLI pour ajouter un flux de CloudWatch journal Amazon à votre application. Pour plus d'informations sur l'utilisation CloudWatch des journaux avec votre application, consultez la section [Configuration de la journalisation des applications](https://docs.aws.amazon.com/managed-flink/latest/java/cloudwatch-logs.html).

##### Mettre à jour les propriétés d'environnement
<a name="examples-sliding-scala-update-environment-properties"></a>

Dans cette section, vous utilisez l’action [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) pour modifier les propriétés d’environnement de l’application sans recompiler le code de l’application. Dans cet exemple, vous modifiez la région des flux source et de destination.

**Pour mettre à jour des propriétés d’environnement pour l’application**

1. Copiez le code JSON suivant dans un fichier nommé `update_properties_request.json`.

   ```
   {"ApplicationName": "sliding_window",
      "CurrentApplicationVersionId": 1,
      "ApplicationConfigurationUpdate": { 
         "EnvironmentPropertyUpdates": { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2",
                       "stream.name" : "ExampleInputStream",
                       "flink.stream.initpos" : "LATEST"
                  }
               },
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2",
                       "stream.name" : "ExampleOutputStream"
                  }
               }
            ]
         }
      }
   }
   ```

1. Exécutez l’action `UpdateApplication` avec la demande précédente pour mettre à jour les propriétés de l’environnement :

   ```
   aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
   ```

##### Mise à jour du code de l’application
<a name="examples-sliding-scala-update-app-code"></a>

Lorsque vous devez mettre à jour le code de votre application avec une nouvelle version de votre package de code, vous utilisez l'action [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)CLI.

**Note**  
Pour charger une nouvelle version du code de l’application portant le même nom de fichier, vous devez spécifier la nouvelle version de l’objet. Pour de plus amples informations sur l’utilisation des versions d’objet Amazon S3, consultez [Activation et désactivation de la gestion des versions](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

Pour l'utiliser AWS CLI, supprimez votre ancien package de code de votre compartiment Amazon S3, téléchargez la nouvelle version et appelez `UpdateApplication` en spécifiant le même compartiment Amazon S3 et le même nom d'objet, ainsi que la nouvelle version de l'objet. L’application redémarrera avec le nouveau package de code.

L’exemple de demande d’action `UpdateApplication` suivant recharge le code de l’application et redémarre l’application. Mettez à jour l’`CurrentApplicationVersionId` à la version actuelle de l’application. Vous pouvez vérifier la version actuelle de l’application à l’aide des actions `ListApplications` ou `DescribeApplication`. Mettez à jour le suffixe du nom du compartiment (<username>) avec le suffixe que vous avez choisi dans la section [Création de ressources dépendantes](examples-gs-scala.md#examples-gs-scala-resources).

```
{
    "ApplicationName": "sliding_window",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username",
                    "FileKeyUpdate": "-1.0.jar",
                    "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU"
                }
            }
        }
    }
}
```

##### Nettoyer les AWS ressources
<a name="examples-sliding-scala-cleanup"></a>

Cette section inclut les procédures de nettoyage des AWS ressources créées dans le didacticiel de la fenêtre coulissante.

**Topics**
+ [Supprimer votre application Managed Service for Apache Flink](#examples-sliding-scala-cleanup-app)
+ [Supprimer vos flux de données Kinesis](#examples-sliding-scala-cleanup-stream)
+ [Supprimer votre objet et votre compartiment Amazon S3](#examples-sliding-scala-cleanup-s3)
+ [Supprimer vos ressources IAM](#examples-sliding-scala-cleanup-iam)
+ [Supprimer vos CloudWatch ressources](#examples-sliding-scala-cleanup-cw)

##### Supprimer votre application Managed Service for Apache Flink
<a name="examples-sliding-scala-cleanup-app"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. dans le panneau Managed Service for Apache Flink, sélectionnez **MyApplication**.

1. Sur la page de l’application, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer vos flux de données Kinesis
<a name="examples-sliding-scala-cleanup-stream"></a>

1. [Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Dans le panneau Kinesis Data Streams, **ExampleInputStream**sélectionnez.

1. Sur la **ExampleInputStream**page, choisissez **Supprimer Kinesis Stream**, puis confirmez la suppression.

1. Sur la page **Kinesis Streams**, choisissez le **ExampleOutputStream**, choisissez **Actions**, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer votre objet et votre compartiment Amazon S3
<a name="examples-sliding-scala-cleanup-s3"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez le ***<username>*compartiment ka-app-code -.**

1. Choisissez **Supprimer**, puis saisissez le nombre du compartiment pour confirmer la suppression.

##### Supprimer vos ressources IAM
<a name="examples-sliding-scala-cleanup-iam"></a>

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans la barre de navigation, choisissez **Stratégies**.

1. Dans le contrôle du filtre, saisissez **kinesis**.

1. Choisissez la politique **kinesis-analytics-service- MyApplication -us-west-2**.

1. Choisissez **Actions de stratégie**, puis **Supprimer**.

1. Dans la barre de navigation, choisissez **Rôles**.

1. Choisissez le rôle **kinesis-analytics- MyApplication** -us-west-2.

1. Choisissez **Supprimer le rôle**, puis confirmez la suppression.

##### Supprimer vos CloudWatch ressources
<a name="examples-sliding-scala-cleanup-cw"></a>

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans la barre de navigation, choisissez **Journaux**.

1. Choisissez le groupe**/aws/kinesis-analytics/MyApplication**log.

1. Choisissez **Supprimer le groupe de journaux**, puis confirmez la suppression.

#### Exemple : envoyer des données de streaming à Amazon S3 dans Scala
<a name="examples-s3sink-scala"></a>

**Note**  
Pour des exemples actuels, voir[Exemples de création et d'utilisation d'un service géré pour les applications Apache Flink](examples-collapsibles.md).

**Note**  
À partir de la version 1.15, Flink n’utilise plus Scala. Les applications peuvent désormais utiliser l’API Java depuis n’importe quelle version de Scala. Flink utilise toujours Scala dans quelques composants clés en interne, mais n’expose pas Scala dans le chargeur de classes du code de l’utilisateur. Pour cette raison, les utilisateurs doivent ajouter des dépendances Scala dans leurs archives JAR.  
Pour plus d’informations sur les modifications apportées à Scala dans Flink 1.15, consultez [Scala Free in One Fifteen](https://flink.apache.org/2022/02/22/scala-free.html).

Dans cet exercice, vous allez créer une application de streaming simple qui utilise Scala 3.2.0 et l'API Java de Flink. DataStream L’application lit les données du flux Kinesis, les agrège à l’aide de fenêtres défilantes et écrit les résultats dans S3.

**Note**  
Pour configurer les prérequis requis pour cet exercice, commencez par terminer l’exercice [Mise en route (Scala).](https://docs.aws.amazon.com/managed-flink/latest/java/examples-gs-scala.html) Il vous suffit de créer un dossier supplémentaire **data/** dans le compartiment Amazon S3 *ka-app-code-*<username>. 

**Topics**
+ [Téléchargez et examinez le code de l'application](#examples-s3sink-scala-download)
+ [Compiler et charger le code d’application](#examples-s3sink-scala-upload)
+ [Création et exécution de l'application (console)](#scala-7)
+ [Création et exécution de l’application (CLI)](#examples-s3sink-scala-create-run-cli)
+ [Mise à jour du code de l’application](#examples-s3sink-scala-update-app-code)
+ [Nettoyer les AWS ressources](#examples-s3sink-scala-cleanup)

##### Téléchargez et examinez le code de l'application
<a name="examples-s3sink-scala-download"></a>

Le code de l'application Python pour cet exemple est disponible sur GitHub. Pour télécharger le code d’application, procédez comme suit :

1. Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez [Installation de Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Cloner le référentiel distant à l’aide de la commande suivante :

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Accédez au répertoire `amazon-kinesis-data-analytics-java-examples/scala/S3Sink`.

Notez les informations suivantes à propos du code d’application :
+ Un fichier `build.sbt` contient des informations sur la configuration et les dépendances de l’application, y compris les bibliothèques du service géré pour Apache Flink.
+ Le fichier `BasicStreamingJob.scala` contient la méthode principale qui définit la fonctionnalité de l’application.
+ L’application utilise une source Kinesis pour lire à partir du flux source. L’extrait de code suivant crée la source Kinesis :

  ```
  private def createSource: FlinkKinesisConsumer[String] = {
    val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties
    val inputProperties = applicationProperties.get("ConsumerConfigProperties")
  
    new FlinkKinesisConsumer[String](inputProperties.getProperty(streamNameKey, defaultInputStreamName),
      new SimpleStringSchema, inputProperties)
  }
  ```

  L'application utilise également un StreamingFileSink pour écrire dans un compartiment Amazon S3 : `

  ```
  def createSink: StreamingFileSink[String] = {
    val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties
    val s3SinkPath = applicationProperties.get("ProducerConfigProperties").getProperty("s3.sink.path")
  
    StreamingFileSink
      .forRowFormat(new Path(s3SinkPath), new SimpleStringEncoder[String]("UTF-8"))
      .build()
  }
  ```
+ L'application crée des connecteurs source et récepteur pour accéder à des ressources externes à l'aide d'un StreamExecutionEnvironment objet.
+ L’application crée les connecteurs source et récepteur à l’aide de propriétés d’application dynamiques. Les propriétés d’exécution de l’application sont lues pour configurer les connecteurs. Pour de plus amples informations sur les propriétés d’exécution, consultez [Runtime Properties](https://docs.aws.amazon.com/managed-flink/latest/java/how-properties.html).

##### Compiler et charger le code d’application
<a name="examples-s3sink-scala-upload"></a>

Dans cette section, vous compilez et charger votre code d’application dans un compartiment Amazon S3.

**Compilation du code d’application**

Utilisez l’outil de construction [SBT](https://www.scala-sbt.org/) pour créer le code Scala de l’application. Pour installer SBT, consultez [Install sbt with cs setup](https://www.scala-sbt.org/download.html). Vous devez également installer le kit de développement Java (JDK). Consultez [Prerequisites for Completing the Exercises](https://docs.aws.amazon.com/managed-flink/latest/java/getting-started.html#setting-up-prerequisites).

1. Pour utiliser votre code d’application, vous le compilez et l’intégrez dans un fichier JAR. Vous pouvez compiler et empaqueter votre code avec SBT :

   ```
   sbt assembly
   ```

1. Si la compilation de l’application aboutit, le fichier suivant est créé :

   ```
   target/scala-3.2.0/s3-sink-scala-1.0.jar
   ```

**Chargement du code Scala Apache Flink**

Dans cette section, vous allez créer un compartiment Amazon S3 et charger votre code d’application.

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez **Créer un compartiment**.

1. Saisissez `ka-app-code-<username>` dans le champ **Nom du compartiment**. Ajoutez un suffixe au nom du compartiment, par exemple votre nom d’utilisateur, pour qu’il soit unique. Choisissez **Suivant**.

1. À l’étape **Configurer les options**, conservez les paramètres, puis choisissez **Suivant**.

1. À l’étape **Définir des autorisations**, conservez les paramètres, puis choisissez **Suivant**.

1. Choisissez **Créer un compartiment**.

1. Ouvrez le compartiment `ka-app-code-<username>`, puis choisissez **Charger**.

1. À l’étape **Sélectionner les fichiers**, choisissez **Ajouter des fichiers**. Accédez au fichier `s3-sink-scala-1.0.jar` que vous avez créé à l’étape précédente. 

1. Vous n’avez pas besoin de modifier les paramètres de l’objet, donc choisissez **Charger**.

Votre code d’application est désormais stocké dans un compartiment Amazon S3 auquel votre application peut accéder.

##### Création et exécution de l'application (console)
<a name="scala-7"></a>

Suivez ces étapes pour créer, configurer, mettre à jour et exécuter l’application à l’aide de la console.

##### Pour créer l’application
<a name="scala-7-console-create"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. Dans le tableau de bord du service géré pour Apache Flink, choisissez **Créer une application d’analyse**.

1. Sur la page **Service géré pour Apache Flink - Créer une application**, fournissez les détails de l’application comme suit :
   + Pour **Nom de l’application**, saisissez **MyApplication**.
   + Pour **Description**, saisissez **My java test app**.
   + Pour **Exécution**, choisissez **Apache Flink**.
   + Laissez la version sur **Apache Flink 1.15.2 (version recommandée)**.

1. Pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM) `kinesis-analytics-MyApplication-us-west-2`**.

1. Choisissez **Créer une application**.

**Note**  
Lorsque vous créez une application de service géré pour Apache Flink à l’aide de la console, vous avez la possibilité de créer un rôle et une politique IAM pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces ressources IAM sont nommées en utilisant le nom de votre application et la région, comme suit :  
Stratégie : `kinesis-analytics-service-MyApplication-us-west-2`
Rôle : `kinesisanalytics-MyApplication-us-west-2`

##### Configuration de l'application
<a name="scala-7-console-configure"></a>

Procédez comme suit pour configurer l’application.

**Pour configurer l’application**

1. Sur la **MyApplication**page, choisissez **Configurer**.

1. Sur la page **Configurer l’application**, indiquez l’**emplacement du code**:
   + Pour le compartiment **Amazon S3**, saisissez **ka-app-code-*<username>***.
   + Pour le **chemin de l'objet Amazon S3**, saisissez **s3-sink-scala-1.0.jar**.

1. Sous **Accéder aux ressources de l’application**, pour **Autorisations d’accès**, choisissez **Créer/mettre à jour un rôle IAM `kinesis-analytics-MyApplication-us-west-2`**.

1. Sous **Propriétés**, sélectionnez **Ajouter un groupe**. 

1. Saisissez :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

   Choisissez **Enregistrer**.

1. Sous **Propriétés**, sélectionnez **Ajouter un groupe**. 

1. Saisissez :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/earlier.html)

1. Sous **Surveillance**, assurez-vous que **Surveillance du niveau des métriques** est défini sur **Application**.

1. Pour la **CloudWatch journalisation**, cochez la case **Activer**.

1. Choisissez **Mettre à jour**.

**Note**  
Lorsque vous choisissez d'activer la CloudWatch journalisation Amazon, Managed Service for Apache Flink crée un groupe de journaux et un flux de journaux pour vous. Les noms de ces ressources sont les suivants :   
Groupe de journaux : `/aws/kinesis-analytics/MyApplication`
Flux de journaux : `kinesis-analytics-log-stream`

##### Modifier la politique IAM
<a name="scala-7-console-iam"></a>

Modifiez la politique IAM pour ajouter des autorisations afin d’accéder au compartiment Amazon S3.

**Pour modifier la politique IAM afin d’ajouter des autorisations au compartiment S3**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Choisissez **Stratégies**. Choisissez la politique **`kinesis-analytics-service-MyApplication-us-west-2`** créée pour vous par la console dans la section précédente. 

1. Sur la page **Récapitulatif**, choisissez **Modifier la politique**. Sélectionnez l’onglet **JSON**.

1. Ajoutez la section mise en surbrillance dans l’exemple de stratégie suivant à la politique. Remplacez le compte d'exemple IDs (*012345678901*) par votre identifiant de compte.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:Abort*", 
                   "s3:DeleteObject*", 
                   "s3:GetObject*", 
                   "s3:GetBucket*", 
                   "s3:List*", 
                   "s3:ListBucket", 
                   "s3:PutObject"
               ],
               "Resource": [ 
                   "arn:aws:s3:::ka-app-code-<username>", 
                   "arn:aws:s3:::ka-app-code-<username>/*" 
               ]
           },
           {
               "Sid": "DescribeLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           }
       ]
   }
   ```

------

##### Exécutez l'application
<a name="scala-7-console-run"></a>

Le graphique des tâches Flink peut être visualisé en exécutant l’application, en ouvrant le tableau de bord Apache Flink et en choisissant la tâche Flink souhaitée.

##### Arrêtez l'application
<a name="scala-7-console-stop"></a>

Pour arrêter l'application, sur la **MyApplication**page, choisissez **Arrêter**. Confirmez l’action.

##### Création et exécution de l’application (CLI)
<a name="examples-s3sink-scala-create-run-cli"></a>

Dans cette section, vous allez utiliser le AWS Command Line Interface pour créer et exécuter l'application Managed Service for Apache Flink. Utilisez la AWS CLI commande *kinesisanalyticsv2* pour créer et interagir avec le service géré pour les applications Apache Flink.

##### Créer une stratégie d’autorisations
<a name="examples-s3sink-scala-permissions"></a>

**Note**  
Vous devez créer une stratégie d’autorisations et un rôle pour votre application. Si vous ne créez pas ces ressources IAM, votre application ne peut pas accéder à ses flux de données et de journaux. 

Vous commencez par créer une stratégie d’autorisations avec deux instructions : une qui accorde des autorisations pour l’action de lecture sur le flux source et une autre qui accorde des autorisations pour les actions d’écriture sur le flux récepteur. Vous attachez ensuite la politique à un rôle IAM (que vous allez créer dans la section suivante). Ainsi, lorsque le service géré pour Apache Flink assume le rôle, le service dispose des autorisations nécessaires pour lire à partir du flux source et écrire dans le flux récepteur.

Utilisez le code suivant pour créer la politique d’autorisations `AKReadSourceStreamWriteSinkStream`. Remplacez **username** par le nom d’utilisateur que vous avez utilisé pour créer le compartiment Amazon S3 pour stocker le code d’application. Remplacez l'ID de compte dans Amazon Resource Names (ARNs) **(012345678901)** par votre identifiant de compte.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadCode",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::ka-app-code-username/getting-started-scala-1.0.jar"
            ]
        },
        {
            "Sid": "DescribeLogGroups",
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogGroups"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:123456789012:*"
            ]
        },
        {
            "Sid": "DescribeLogStreams",
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogStreams"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:123456789012:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
            ]
        },
        {
            "Sid": "PutLogEvents",
            "Effect": "Allow",
            "Action": [
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:123456789012:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
            ]
        },
        {
            "Sid": "ReadInputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:123456789012:stream/ExampleInputStream"
        },
        {
            "Sid": "WriteOutputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:123456789012:stream/ExampleOutputStream"
        }
    ]
}
```

------

Pour step-by-step obtenir des instructions sur la création d'une politique d'autorisations, voir [Tutoriel : créer et joindre votre première politique gérée par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) dans le *guide de l'utilisateur IAM*.

##### Créer un rôle IAM
<a name="examples-s3sink-scala-iam-policy"></a>

Dans cette section, vous créez un rôle IAM que l’application de service géré pour Apache Flink peut assumer pour lire un flux source et écrire dans le flux récepteur.

Le service géré pour Apache Flink ne peut pas accéder à votre flux sans autorisation. Vous utilisez un rôle IAM pour accorder ces autorisations. Deux politiques sont attachées à chaque rôle IAM. La politique d’approbation accorde au service géré pour Apache Flink l’autorisation d’assumer le rôle, et la politique d’autorisation détermine ce que le service géré pour Apache Flink peut faire après avoir assumé le rôle.

Vous attachez la politique d’autorisations que vous avez créée dans la section précédente à ce rôle. 

**Pour créer un rôle IAM**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le volet de navigation, choisissez **Rôles**, puis **Créer un Rôle**.

1. Sous **Sélectionner le type d’identité approuvée**, choisissez **Service AWS **.

1. Sous **Choisir le service qui utilisera ce rôle**, choisissez **EC2**.

1. Sous **Sélectionnez votre cas d’utilisation**, choisissez **service géré pour Apache Flink**.

1. Choisissez **Suivant : Autorisations**.

1. Dans la page **Attacher des stratégies d’autorisations**, choisissez **Suivant : vérification**. Vous attachez des stratégies d’autorisations après avoir créé le rôle.

1. Sur la page **Créer un rôle**, saisissez **MF-stream-rw-role** pour le **Nom du rôle**. Sélectionnez **Créer un rôle**. 

    Vous venez de créer un nouveau rôle IAM appelé `MF-stream-rw-role`. Ensuite, vous mettez à jour les stratégies d’approbation et d’autorisation pour le rôle.

1. Attachez la politique d’autorisation au rôle.
**Note**  
Dans le cadre de cet exercice, Managed Service for Apache Flink assume ce rôle à la fois pour la lecture des données à partir d’un flux de données Kinesis (source) et pour l’écriture des résultats dans un autre flux de données Kinesis. Vous attachez donc la politique que vous avez créée à l’étape précédente, [Créer une stratégie d’autorisations](https://docs.aws.amazon.com/managed-flink/latest/java/get-started-exercise.html#get-started-exercise-7-cli-policy).

   1. Sur la page **Récapitulatif**, choisissez l’onglet **Autorisations**.

   1. Choisissez **Attacher des stratégies**.

   1. Dans la zone de recherche, saisissez **AKReadSourceStreamWriteSinkStream** (la politique que vous avez créée dans la section précédente). 

   1. Sélectionnez la politique `AKReadSourceStreamWriteSinkStream`, puis **Attacher une stratégie**.

Vous avez maintenant créé le rôle d’exécution de service que votre application utilise pour accéder aux ressources. Notez l’ARN du nouveau rôle.

Pour step-by-step obtenir des instructions sur la création d'un rôle, consultez la section [Création d'un rôle IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) dans le guide de l'*utilisateur IAM*.

##### Pour créer l’application
<a name="examples-s3sink-scala-create-application-cli"></a>

Copiez le code JSON suivant dans un fichier nommé `create_request.json`. Remplacez l’exemple d’ARN du rôle par l’ARN du rôle que vous avez créé précédemment. Remplacez le suffixe de l’ARN du compartiment (nom d’utilisateur) par le suffixe que vous avez choisi dans la section précédente. Remplacez l’exemple d’ID de compte (012345678901) dans le rôle d’exécution de service par votre ID de compte.

```
{
    "ApplicationName": "s3_sink",
    "ApplicationDescription": "Scala tumbling window application",
    "RuntimeEnvironment": "FLINK-1_15",
    "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation": {
                    "BucketARN": "arn:aws:s3:::ka-app-code-username",
                    "FileKey": "s3-sink-scala-1.0.jar"
                }
            },
            "CodeContentType": "ZIPFILE"
        },
        "EnvironmentProperties":  { 
         "PropertyGroups": [ 
            { 
               "PropertyGroupId": "ConsumerConfigProperties",
               "PropertyMap" : {
                    "aws.region" : "us-west-2",
                    "stream.name" : "ExampleInputStream",
                    "flink.stream.initpos" : "LATEST"
               }
            },
            { 
               "PropertyGroupId": "ProducerConfigProperties",
               "PropertyMap" : {
                    "s3.sink.path" : "s3a://ka-app-code-<username>/data"
               }
            }
         ]
      }
    },
    "CloudWatchLoggingOptions": [ 
      { 
         "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream"
      }
   ]
}
```

Exécutez le [CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)avec la requête suivante pour créer l'application :

```
aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
```

L’application est maintenant créée. Vous démarrez l’application dans l’étape suivante.

##### Lancez l'application
<a name="examples-s3sink-scala-start"></a>

Dans cette section, vous utilisez l’action [StartApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StartApplication.html) pour démarrer l’application.

**Pour démarrer l’application**

1. Copiez le code JSON suivant dans un fichier nommé `start_request.json`.

   ```
   {{
       "ApplicationName": "s3_sink",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Exécutez l’action `StartApplication` avec la demande précédente pour démarrer l’application :

   ```
   aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
   ```

L’application est maintenant en cours d’exécution. Vous pouvez consulter les métriques du service géré pour Apache Flink sur la CloudWatch console Amazon pour vérifier que l'application fonctionne.

##### Arrêtez l'application
<a name="examples-s3sink-scala-stop"></a>

Dans cette section, vous allez utiliser l’action [StopApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StopApplication.html) pour arrêter l’application.

**Pour arrêter l’application**

1. Copiez le code JSON suivant dans un fichier nommé `stop_request.json`.

   ```
   {
      "ApplicationName": "s3_sink"
   }
   ```

1. Exécutez l’action `StopApplication` avec la demande précédente pour arrêter l’application :

   ```
   aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
   ```

L’application est maintenant arrêtée.

##### Ajouter une option de CloudWatch journalisation
<a name="examples-s3sink-scala-cw-option"></a>

Vous pouvez utiliser le AWS CLI pour ajouter un flux de CloudWatch journal Amazon à votre application. Pour plus d'informations sur l'utilisation CloudWatch des journaux avec votre application, consultez la section [Configuration de la journalisation des applications](https://docs.aws.amazon.com/managed-flink/latest/java/cloudwatch-logs.html).

##### Mettre à jour les propriétés d'environnement
<a name="examples-s3sink-scala-update-environment-properties"></a>

Dans cette section, vous utilisez l’action [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) pour modifier les propriétés d’environnement de l’application sans recompiler le code de l’application. Dans cet exemple, vous modifiez la région des flux source et de destination.

**Pour mettre à jour des propriétés d’environnement pour l’application**

1. Copiez le code JSON suivant dans un fichier nommé `update_properties_request.json`.

   ```
   {"ApplicationName": "s3_sink",
      "CurrentApplicationVersionId": 1,
      "ApplicationConfigurationUpdate": { 
         "EnvironmentPropertyUpdates": { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2",
                       "stream.name" : "ExampleInputStream",
                       "flink.stream.initpos" : "LATEST"
                  }
               },
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "s3.sink.path" : "s3a://ka-app-code-<username>/data"
                  }
               }
            ]
         }
      }
   }
   ```

1. Exécutez l’action `UpdateApplication` avec la demande précédente pour mettre à jour les propriétés de l’environnement :

   ```
   aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
   ```

##### Mise à jour du code de l’application
<a name="examples-s3sink-scala-update-app-code"></a>

Lorsque vous devez mettre à jour le code de votre application avec une nouvelle version de votre package de code, vous utilisez l'action [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)CLI.

**Note**  
Pour charger une nouvelle version du code de l’application portant le même nom de fichier, vous devez spécifier la nouvelle version de l’objet. Pour de plus amples informations sur l’utilisation des versions d’objet Amazon S3, consultez [Activation et désactivation de la gestion des versions](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

Pour l'utiliser AWS CLI, supprimez votre ancien package de code de votre compartiment Amazon S3, téléchargez la nouvelle version et appelez `UpdateApplication` en spécifiant le même compartiment Amazon S3 et le même nom d'objet, ainsi que la nouvelle version de l'objet. L’application redémarrera avec le nouveau package de code.

L’exemple de demande d’action `UpdateApplication` suivant recharge le code de l’application et redémarre l’application. Mettez à jour l’`CurrentApplicationVersionId` à la version actuelle de l’application. Vous pouvez vérifier la version actuelle de l’application à l’aide des actions `ListApplications` ou `DescribeApplication`. Mettez à jour le suffixe du nom du compartiment (<username>) avec le suffixe que vous avez choisi dans la section [Création de ressources dépendantes](examples-gs-scala.md#examples-gs-scala-resources).

```
{
    "ApplicationName": "s3_sink",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username",
                    "FileKeyUpdate": "s3-sink-scala-1.0.jar",
                    "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU"
                }
            }
        }
    }
}
```

##### Nettoyer les AWS ressources
<a name="examples-s3sink-scala-cleanup"></a>

Cette section inclut les procédures de nettoyage AWS des ressources créées dans le didacticiel Tumbling Window.

**Topics**
+ [Supprimer votre application Managed Service for Apache Flink](#examples-s3sink-scala-cleanup-app)
+ [Supprimer vos flux de données Kinesis](#examples-s3sink-scala-cleanup-stream)
+ [Supprimer votre objet et votre compartiment Amazon S3](#examples-s3sink-scala-cleanup-s3)
+ [Supprimer vos ressources IAM](#examples-s3sink-scala-cleanup-iam)
+ [Supprimer vos CloudWatch ressources](#examples-s3sink-scala-cleanup-cw)

##### Supprimer votre application Managed Service for Apache Flink
<a name="examples-s3sink-scala-cleanup-app"></a>

1. Connectez-vous à la AWS Management Console console Amazon MSF et ouvrez-la à https://console.aws.amazon.com l'adresse /flink.

1. dans le panneau Managed Service for Apache Flink, sélectionnez **MyApplication**.

1. Sur la page de l’application, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer vos flux de données Kinesis
<a name="examples-s3sink-scala-cleanup-stream"></a>

1. [Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Dans le panneau Kinesis Data Streams, **ExampleInputStream**sélectionnez.

1. Sur la **ExampleInputStream**page, choisissez **Supprimer Kinesis Stream**, puis confirmez la suppression.

1. Sur la page **Kinesis Streams**, choisissez le **ExampleOutputStream**, choisissez **Actions**, choisissez **Supprimer**, puis confirmez la suppression.

##### Supprimer votre objet et votre compartiment Amazon S3
<a name="examples-s3sink-scala-cleanup-s3"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez le ***<username>*compartiment ka-app-code -.**

1. Choisissez **Supprimer**, puis saisissez le nombre du compartiment pour confirmer la suppression.

##### Supprimer vos ressources IAM
<a name="examples-s3sink-scala-cleanup-iam"></a>

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans la barre de navigation, choisissez **Stratégies**.

1. Dans le contrôle du filtre, saisissez **kinesis**.

1. Choisissez la politique **kinesis-analytics-service- MyApplication -us-west-2**.

1. Choisissez **Actions de stratégie**, puis **Supprimer**.

1. Dans la barre de navigation, choisissez **Rôles**.

1. Choisissez le rôle **kinesis-analytics- MyApplication** -us-west-2.

1. Choisissez **Supprimer le rôle**, puis confirmez la suppression.

##### Supprimer vos CloudWatch ressources
<a name="examples-s3sink-scala-cleanup-cw"></a>

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans la barre de navigation, choisissez **Journaux**.

1. Choisissez le groupe**/aws/kinesis-analytics/MyApplication**log.

1. Choisissez **Supprimer le groupe de journaux**, puis confirmez la suppression.