

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.

# Versions Apache Flink prises en charge et obsolètes
<a name="release-version-list"></a>

Cette rubrique contient des informations sur les versions prises en charge d'Apache Flink dans Managed Service for Apache Flink. Cette rubrique répertorie également les fonctionnalités d'Apache Flink prises en charge dans chaque version.

**Note**  
Si vous utilisez une version d'Apache Flink obsolète, nous vous recommandons de mettre à niveau votre application vers la version de Flink prise en charge la plus récente à l'aide de la [Utiliser des mises à niveau de version sur place pour Apache Flink](how-in-place-version-upgrades.md) fonctionnalité du service géré pour Apache Flink.


| Version d'Apache Flink | État - Amazon Managed Service pour Apache Flink | État - Communauté Apache Flink | Lien | Remarque | 
| --- | --- | --- | --- | --- | 
| 2.2.0 | Pris en charge | Pris en charge | [Amazon Managed Service pour Apache Flink 2.2](flink-2-2.md) | Il s'agit d'une version majeure avec des modifications majeures. Voir [Changements majeurs et dépréciations](flink-2-2.md#flink-2-2-breaking-changes) avant de poursuivre. | 
| 1.20.0 | Pris en charge | Pris en charge | [Amazon Managed Service pour Apache Flink 1.20](flink-1-20.md) |  | 
| 1.19.1 | Pris en charge | Pris en charge | [Amazon Managed Service pour Apache Flink 1.19](flink-1-19.md) |  | 
| 1.18.1 | Pris en charge | Non pris en charge | [Amazon Managed Service pour Apache Flink 1.18](flink-1-18.md) |  | 
| 1.15.2 | Pris en charge | Non pris en charge | [Amazon Managed Service pour Apache Flink 1.15](flink-1-15-2.md) |  | 
| 1.13.1 | Dépréciation | Non pris en charge | [Pour démarrer : Flink 1.13.2](earlier.md#getting-started-1-13) | Le support de cette version dans Amazon Managed Service pour Apache Flink prendra fin le 16 octobre 2025. | 
| 1.11.1 | Dépréciation | Non pris en charge | [Informations sur les versions antérieures du service géré pour Apache Flink](earlier.md)(Cette version ne sera pas prise en charge à partir de février 2025) |  Nous prévoyons de mettre fin au support des versions 1.6, 1.8 et 1.11 d'Apache Flink dans Amazon Managed Service pour Apache Flink. À partir du 14 juillet 2025, nous placerons les applications utilisant ces versions dans l'état PRÊT. À partir du 28 juillet 2025, vous ne pourrez plus démarrer d'applications utilisant ces versions. Nous vous recommandons désormais de mettre à niveau immédiatement vos applications vers la version 1.20 de Flink à 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).  | 
| 1.8.2 | Dépréciation | Non pris en charge | [Informations sur les versions antérieures du service géré pour Apache Flink](earlier.md)(Cette version ne sera pas prise en charge à partir de février 2025) |  Nous prévoyons de mettre fin au support des versions 1.6, 1.8 et 1.11 d'Apache Flink dans Amazon Managed Service pour Apache Flink. À partir du 14 juillet 2025, nous placerons les applications utilisant ces versions dans l'état PRÊT. À partir du 28 juillet 2025, vous ne pourrez plus démarrer d'applications utilisant ces versions. Nous vous recommandons désormais de mettre à niveau immédiatement vos applications vers la version 1.20 de Flink à 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). | 
| 1.6.2 | Dépréciation | Non pris en charge | [Informations sur les versions antérieures du service géré pour Apache Flink](earlier.md)(Cette version ne sera pas prise en charge à partir de février 2025) |  Nous prévoyons de mettre fin au support des versions 1.6, 1.8 et 1.11 d'Apache Flink dans Amazon Managed Service pour Apache Flink. À partir du 14 juillet 2025, nous placerons les applications utilisant ces versions dans l'état PRÊT. À partir du 28 juillet 2025, vous ne pourrez plus démarrer d'applications utilisant ces versions. Nous vous recommandons désormais de mettre à niveau immédiatement vos applications vers la version 1.20 de Flink à 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).  | 

**Topics**
+ [Amazon Managed Service pour Apache Flink 2.2](flink-2-2.md)
+ [Amazon Managed Service pour Apache Flink 1.20](flink-1-20.md)
+ [Amazon Managed Service pour Apache Flink 1.19](flink-1-19.md)
+ [Amazon Managed Service pour Apache Flink 1.18](flink-1-18.md)
+ [Amazon Managed Service pour Apache Flink 1.15](flink-1-15-2.md)
+ [Informations sur les versions antérieures du service géré pour Apache Flink](earlier.md)

# Amazon Managed Service pour Apache Flink 2.2
<a name="flink-2-2"></a>

Amazon Managed Service pour Apache Flink prend désormais en charge la version 2.2 d'Apache Flink. Il s'agit de la première mise à niveau majeure de version du service. Cette page couvre les fonctionnalités introduites dans Flink 2.2, ainsi que les points importants à prendre en compte pour la mise à niveau depuis Flink 1.x.

**Note**  
Flink 2.2 introduit des modifications majeures qui nécessitent une planification minutieuse. Consultez la liste complète des modifications et des dépréciations les plus importantes ci-dessous, ainsi que la liste [Guide de compatibilité d'état pour les mises à niveau de Flink 2.2](state-compatibility.md) préalable à la mise à niveau depuis la version 1.x.

## Nouveautés d'Amazon Managed Service pour Apache Flink 2.2
<a name="flink-2-2-whats-new"></a>

Amazon Managed Service pour Apache Flink 2.2 introduit des changements de comportement susceptibles de perturber les applications existantes lors de la mise à niveau. Passez en revue attentivement ces modifications ainsi que les modifications apportées à l'API Flink dans la section suivante.

**Gestion de la configuration programmatique**
+ MSF Flink 2.2 signale désormais une exception lorsque les clients tentent de modifier des configurations qui ne sont pas prises en charge par MSF ou par un système similaire. `env.getConfig().set()` APIs Consultez [Propriétés de configuration programmatique de Flink](programmatic-configuration.md).
+ Les clients peuvent toujours demander à modifier certaines configurations par le biais de tickets d'assistance (voir Paramètres [modifiables](https://docs.aws.amazon.com/managed-flink/latest/java/reference-modifiable-settings.html))

**Suppression des métriques**
+ La `fullRestarts` métrique a été supprimée dans Flink 2.2. Utilisez plutôt la `numRestarts` métrique.
+ La `bytesRequestedPerFetch` métrique du connecteur KDS a été supprimée dans la version 6.0.0 AWS du connecteur Flink (seule la version du connecteur est compatible avec Flink 2.2).
+ Les `downtime` métriques `uptime` et sont toutes deux marquées comme obsolètes dans Flink 2.2 et seront bientôt supprimées. Remplacez `uptime` par la nouvelle métrique`runningTime`. `downtime`Remplacez-le par un ou plusieurs des éléments `restartingTime` suivants :`cancellingTime`, et`failingTime`.
+ Consultez la [page Mesures et dimensions](https://docs.aws.amazon.com/managed-flink/latest/java/metrics-dimensions.html) pour obtenir la liste complète des mesures prises en charge.

**Appels IMDS non authentifiants bloqués**
+ Ces points de terminaison autorisés sont utilisés par les AWS SDK **DefaultCredentialsProvider**(`/latest/meta-data/iam/security-credentials/`) et **DefaultAwsRegionProviderChain**(`/latest/dynamic/instance-identity/document`) pour configurer automatiquement les informations d'identification et la région de votre application.
+ Les applications utilisant les fonctions du SDK AWS qui reposent sur des appels IMDS non authentifiants (tels que`EC2MetadataUtils.getInstanceId()`, `EC2MetadataUtils.getInstanceType()``EC2MetadataUtils.getLocalHostName()`, ou`EC2MetadataUtils.getAvailabilityZone()`) recevront des erreurs HTTP 4xx lors de la tentative de ces appels.
+ Si votre application utilise par exemple des métadonnées IMDS ou d'autres informations en dehors des chemins autorisés, refactorisez votre code pour utiliser plutôt des variables d'environnement ou la configuration de l'application.

**Système de fichiers racine en lecture seule**
+ Pour améliorer la sécurité, toute dépendance en dehors de `/tmp` laquelle se trouve le répertoire de travail Flink par défaut se traduira par :`java.io.FileNotFoundException: /{path}/{filename} (Read-only file system)`.
+ Les dépendances du système de fichiers peuvent provenir directement de votre code ou indirectement des bibliothèques incluses dans vos dépendances. Remplacez les dépendances directes du système de fichiers `/tmp/` dans votre code. Pour les dépendances indirectes du système de fichiers par rapport aux bibliothèques, utilisez les remplacements de configuration des bibliothèques pour rediriger les opérations du système de fichiers vers. `/tmp/`

## Changements majeurs et dépréciations
<a name="flink-2-2-breaking-changes"></a>

Vous trouverez ci-dessous un résumé des modifications majeures et des dépréciations introduites dans Managed Service for Apache Flink 2.2. Consultez les notes de [mise à jour d'Apache Flink 2.0 pour les notes](https://nightlies.apache.org/flink/flink-docs-stable/release-notes/flink-2.0/) de mise à jour complètes d'Apache Flink 2.0 présentant ces modifications majeures.

**DataSet API supprimée**
+ L'ancienne DataSet API pour le traitement par lots a été complètement supprimée dans Flink 2.0\$1. Tous les traitements par lots doivent désormais utiliser l' DataStream API unifiée.
+ Les applications utilisant l' DataSet API doivent être migrées vers l' DataStream API avant la mise à niveau. Consultez le [guide de migration d'Apache Flink DataSet pour la conversion DataStream](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/dev/datastream/dataset_migration/)

**Java 11 et Python 3.8 supprimés**
+ Le support de Java 11 a été complètement supprimé ; Java 17 est le runtime par défaut et recommandé.
+ Le support de Python 3.8 a été supprimé ; Python 3.12 est désormais la version par défaut.

**Classes de connecteurs héritées supprimées**
+ L'ancienne version `SourceFunction` et les `SinkFunction` interfaces ont été remplacées par les nouvelles versions unifiées Source (FLIP-27) et Sink (FLIP-143) APIs, qui offrent une meilleure prise en charge de la bounded/unbounded dualité, une meilleure coordination des points de contrôle et un modèle de programmation plus épuré.
+ Pour Kinesis Data Streams, `KinesisStreamsSource` utilisez `KinesisStreamsSink` et `flink-connector-aws-kinesis-streams:6.0.0-2.0` depuis.

**API Scala supprimée**
+ L'API Flink Scala a été supprimée. L'API Java de Flink est désormais la seule API prise en charge pour les applications basées sur JVM.
+ Si votre application est écrite en Scala, vous pouvez toujours utiliser l'API Java de Flink à partir du code Scala. Le principal changement est que les wrappers et les conversions implicites spécifiques à Scala ne sont plus disponibles. Consultez [la section Mise à niveau des applications et des versions de Flink](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/ops/upgrading/) pour plus de détails sur la mise à jour de vos applications Scala.

**Considérations relatives à la compatibilité des**
+ La mise à niveau du sérialiseur Kryo de la version 2.24 à la version 5.6 peut entraîner des problèmes de compatibilité d'état.
+ POJOs avec des collections (`HashMap`,`ArrayList`,`HashSet`) peut avoir des problèmes de compatibilité entre les états.
+ La sérialisation d'Avro et Protobuf n'est pas affectée.
+ Consultez [Guide de compatibilité d'état pour les mises à niveau de Flink 2.2](state-compatibility.md) pour une évaluation détaillée afin de trier le niveau de risque de votre application.

## Fonctionnalités d'Apache Flink 2.2 prises en charge
<a name="flink-2-2-supported-features"></a>

**Support d'exécution et de langage**


****  

| Fonctionnalité | Description | Documentation | 
| --- | --- | --- | 
| Exécution Java 17 | Java 17 est désormais l'environnement d'exécution par défaut et recommandé ; le support de Java 11 a été supprimé. | [Compatibilité avec Java](https://nightlies.apache.org/flink/flink-docs-stable/zh/docs/deployment/java_compatibility/) | 
| Support de Python 3.12 | Python 3.12 est désormais pris en charge ; le support de Python 3.8 a été supprimé. | [PyFlink Documentation](https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/dev/python/overview/) | 

**Gestion de l'État et performance**


****  

| Fonctionnalité | Description | Documentation | 
| --- | --- | --- | 
| RockSDB 8.10.0 |  I/O Performances améliorées grâce à la mise à niveau de RockSDB. | [Backends d'État](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/ops/state/state_backends/) | 
| Améliorations de la sérialisation | Sérialiseurs dédiés pour Map, List, Set ; Kryo est passé de la version 2.24 à la version 5.6. | [Type de sérialisation](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/dev/datastream/fault-tolerance/serialization/types_serialization/) | 

**Fonctionnalités de l'API SQL et de l'API Table**


****  

| Fonctionnalité | Description | Documentation | 
| --- | --- | --- | 
| Type de données VARIANT | Support natif pour les données semi-structurées (JSON) sans analyse répétée de chaînes. | [Types de données](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/types/) | 
| Rejoignez Delta | Réduit les exigences d'état pour les jointures en streaming en ne conservant que la dernière version de chaque clé ; nécessite une infrastructure gérée par le client (par exemple, Apache Fluss). | [Jointures](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/sql/queries/joins/) | 
| StreamingMultiJoinOperator | Exécute les jointures multidirectionnelles en tant qu'opérateur unique, éliminant ainsi la matérialisation intermédiaire. | [FLIP-516](https://cwiki.apache.org/confluence/display/FLINK/FLIP-516) | 
| ProcessTableFunction (PTF) | Active une logique dynamique pilotée par les événements directement dans SQL avec un état par clé et des temporisateurs. | [Fonctions définies par l'utilisateur](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/functions/udfs/) | 
| Fonction ML\$1PREDICT | Appelez des modèles ML enregistrés sur streaming/batch des tables directement depuis SQL. Demande au client de regrouper une ModelProvider implémentation (par exemple,flink-model-openai). ModelProvider les bibliothèques ne sont pas fournies par le service géré pour Apache Flink. | [Prédiction ML](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/sql/queries/model-inference/) | 
| Modèle DDL | Définissez les modèles ML en tant qu'objets de catalogue de première classe à l'aide des instructions CREATE MODEL. | [CRÉEZ des déclarations](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/sql/create/#create-model) | 
| Recherche vectorielle | L'API Flink SQL prend en charge la recherche dans les bases de données vectorielles. Aucune VectorSearchTableSource implémentation open source n'est actuellement disponible ; les clients doivent fournir leur propre implémentation. | [Flink SQL](https://nightlies.apache.org/flink/flink-docs-stable/release-notes/flink-2.2/#support-vector_search-in-flink-sql) | 

**DataStream Fonctionnalités de l'API**


****  

| Fonctionnalité | Description | Documentation | 
| --- | --- | --- | 
| API source FLIP-27 | Nouvelle interface source unifiée qui remplace l'ancienne SourceFunction. | [Sources](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/dev/datastream/sources/) | 
| API d'évier FLIP-143 | Nouvelle interface de réception unifiée qui remplace l'ancienne SinkFunction. | [Éviers](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/dev/datastream/sinks/) | 
| Python asynchrone DataStream |  I/O Opérations non bloquantes dans DataStream l'API Python utilisant AsyncFunction. | [E/S asynchrones](https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/dev/python/datastream/operators/async_io/) | 

## Disponibilité du connecteur
<a name="flink-2-2-connectors"></a>

Lors de la mise à niveau vers Flink 2.2, vous devez également mettre à jour les dépendances de votre connecteur vers des versions compatibles avec le runtime Flink 2.2. Les connecteurs Flink sont publiés indépendamment du moteur d'exécution Flink, et tous les connecteurs ne disposent pas encore d'une version compatible avec Flink 2.2. Le tableau suivant récapitule la disponibilité des connecteurs couramment utilisés dans Amazon Managed Service pour Apache Flink :


**Disponibilité du connecteur pour Flink 2.2**  

| Connecteur | Version 1.20 de Flink | Version 2.0 ou ultérieure de Flink | Remarques | 
| --- | --- | --- | --- | 
| Apache Kafka | flink-connector-kafka 3,4,0-1,20 | flink-connector-kafka 4,0,0-2,0 | Recommandé pour Flink 2.2 | 
| Kinesis Data Streams (source) | flink-connector-kinesis 5,0,0-1,20 | flink-connector-aws-kinesis-streams 6.0.0-2.0 | Recommandé pour Flink 2.2 | 
| Kinesis Data Streams (récepteur) | flink-connector-aws-kinesis-streams 5.1.0-1.20 | flink-connector-aws-kinesis-streams 6.0.0-2.0 | Recommandé pour Flink 2.2 | 
| Amazon Data Firehose | flink-connector-aws-kinesis-tuyau à incendie 5.1.0-1.20 | flink-connector-aws-kinesis-firehose 6.0.0-2.0 | Compatible avec Flink 2.0 | 
| Amazon DynamoDB | flink-connector-dynamodb 5,1,0 à 1,20 | flink-connector-dynamodb 6,0,0-2,0 | Compatible avec Flink 2.0 | 
| Amazon SQS | flink-connector-sqs 5,1,0 à 1,20 | flink-connector-sqs 6,0,0-2,0 | Compatible avec Flink 2.0 | 
| FileSystem (S3, HDFS) | Fourni avec Flink | Fourni avec Flink | Intégré à la distribution Flink — toujours disponible | 
| JDBC | flink-connector-jdbc 3,3,0-1,20 | Pas encore sorti pour 2.x | Aucune version compatible avec Flink 2.x n'est disponible | 
| OpenSearch | flink-connector-opensearch 1,2,0-1,19 | Pas encore sorti pour 2.x | Aucune version compatible avec Flink 2.x n'est disponible | 
| Elasticsearch | Connecteur Legacy uniquement | Pas encore sorti pour 2.x | Envisagez de migrer vers le connecteur OpenSearch  | 
| Amazon Managed Service for Prometheus | flink-connector-prometheus 1,0-1,20 | Pas encore sorti pour 2.x | Aucune version compatible avec Flink 2.x n'est disponible | 
+ Si votre application dépend d'un connecteur qui ne possède pas encore de version 2.x de Flink, deux options s'offrent à vous : attendre que le connecteur publie une version compatible ou évaluer si vous pouvez le remplacer par une autre version (par exemple, en utilisant le catalogue JDBC ou un récepteur personnalisé).
+ Lorsque vous mettez à jour des versions de connecteurs, faites attention aux changements de nom des artefacts : certains connecteurs ont été renommés entre les versions principales (par exemple, le connecteur Firehose est passé `flink-connector-aws-kinesis-firehose` de `flink-connector-aws-firehose` à dans certaines versions intermédiaires).
+ Consultez toujours la [documentation du connecteur Amazon Managed Service for Apache Flink](https://docs.aws.amazon.com/managed-flink/latest/java/how-flink-connectors.html) pour connaître les noms exacts des artefacts et les versions prises en charge dans votre environnement d'exécution cible.

## Fonctionnalités expérimentales et non prises en charge
<a name="flink-2-2-unsupported"></a>

Les fonctionnalités suivantes ne sont pas prises en charge dans Amazon Managed Service pour Apache Flink 2.2 :
+ **Tables matérialisées** : instantanés de table interrogeables et maintenus en permanence.
+ **Modifications de télémétrie** personnalisées : rapports métriques personnalisés et configurations de télémétrie.
+ **ForSt State Backend** : stockage d'état désagrégé (expérimental en open source).
+ **Java 21** : support expérimental en open source, non pris en charge dans Managed Service pour Apache Flink.

## Problèmes connus
<a name="flink-2-2-known-issues"></a>

**Service géré Amazon pour Apache Flink Studio**

Dans Amazon Managed Service pour Apache Flink, Flink 2.2 ne prend pas en charge les applications Studio. Pour plus d'informations, consultez la section [Création d'un bloc-notes Studio](https://docs.aws.amazon.com/managed-flink/latest/java/how-zeppelin-creating.html).

**Connecteur Kinesis EFO**
+ Les applications utilisant le chemin `KinesisStreamsSource` with EFO (Enhanced Fan-Out/ SubscribeToShard) introduit dans les connecteurs v5.0.0 et v6.0.0 peuvent échouer lorsque les flux Kinesis sont repartagés. Il s'agit d'un problème connu au sein de la communauté. Pour plus d'informations, consultez [FLINK-37648](https://issues.apache.org/jira/browse/FLINK-37648).
+ Les applications utilisant le chemin `KinesisStreamsSource` with EFO (Enhanced Fan-Out/ SubscribeToShard) introduit dans les connecteurs v5.0.0 et v6.0.0 `KinesisStreamsSink` peuvent être bloquées si l'application Flink est soumise à une contre-pression, ce qui entraîne l'arrêt complet du traitement des données dans une ou plusieurs applications. TaskManagers Une opération d'arrêt forcé et une opération de démarrage de l'application sont nécessaires pour récupérer l'application. Il s'agit d'un sous-cas du problème connu dans la communauté. Pour plus d'informations, consultez [FLINK-34071](https://issues.apache.org/jira/browse/FLINK-34071).

## Améliorez votre expérience
<a name="flink-2-2-upgrade"></a>

Amazon Managed Service pour Apache Flink prend en charge les mises à niveau de version sur place qui préservent la configuration de votre application, les journaux, les métriques, les balises et, si l'état et les fichiers binaires sont compatibles, l'état de votre application. Pour step-by-step obtenir des instructions, voir[Mise à niveau vers Flink 2.2 : guide complet](flink-2-2-upgrade-guide.md).

Pour obtenir des conseils sur l'évaluation des risques liés à la compatibilité des états et la gestion des états incompatibles lors des mises à niveau, consultez[Guide de compatibilité d'état pour les mises à niveau de Flink 2.2](state-compatibility.md).

## Étapes suivantes
<a name="flink-2-2-next-steps"></a>
+ Vous êtes nouveau sur Flink 2.2 ? Pour une documentation détaillée d'Apache Flink 2.2, consultez la documentation d'[Apache Flink 2.2](https://nightlies.apache.org/flink/flink-docs-release-2.2/).
+ Vous planifiez une mise à niveau ? Consultez [Mise à niveau vers Flink 2.2 : guide complet](flink-2-2-upgrade-guide.md)
+ Des problèmes de compatibilité avec l'État ? Consultez [Guide de compatibilité d'état pour les mises à niveau de Flink 2.2](state-compatibility.md)

Pour toute question ou problème, consultez le Support [Résoudre les problèmes liés au service géré pour Apache Flink](troubleshooting.md) ou contactez le AWS Support.

# Amazon Managed Service pour Apache Flink 1.20
<a name="flink-1-20"></a>

Le service géré pour Apache Flink prend désormais en charge la version 1.20.0 d'Apache Flink. Cette section vous présente les principales nouvelles fonctionnalités et modifications apportées à la prise en charge d'Apache Flink 1.20.0 par le service géré pour Apache Flink. Apache Flink 1.20 devrait être la dernière version 1.x et une version de support à long terme (LTS) de Flink. Pour plus d'informations, voir [FLIP-458 : Support à long terme pour la version finale d'Apache Flink](https://cwiki.apache.org/confluence/display/FLINK/FLIP-458%3A+Long-Term+Support+for+the+Final+Release+of+Apache+Flink+1.x+Line) 1.x Line.

**Note**  
Si vous utilisez une version antérieure prise en charge d'Apache Flink et que vous souhaitez mettre à niveau vos applications existantes vers Apache Flink 1.20.0, vous pouvez le faire en utilisant des mises à niveau de version d'Apache Flink sur place. Pour de plus amples informations, veuillez consulter [Utiliser des mises à niveau de version sur place pour Apache Flink](how-in-place-version-upgrades.md). Grâce aux mises à niveau de version sur place, vous conservez la traçabilité des applications par rapport à un seul ARN pour toutes les versions d'Apache Flink, y compris les instantanés, les journaux, les métriques, les balises, les configurations Flink, etc. 

## Fonctionnalités prises en charge
<a name="flink-1-20-0-supported-features"></a>

Apache Flink 1.20.0 apporte des améliorations au SQL APIs, au tableau de bord et au tableau DataStream APIs de bord Flink.


**Fonctionnalités prises en charge et documentation associée**  

| Fonctionnalités prises en charge | Description | Référence de documentation Apache Flink  | 
| --- | --- | --- | 
| Ajouter une clause DISTRIBUTED BY | De nombreux moteurs SQL exposent les concepts de PartitioningBucketing, ouClustering. Flink 1.20 introduit le concept de Bucketing to Flink.  | [FLIP-376 : Ajouter la clause DISTRIBUTED BY](https://cwiki.apache.org/confluence/display/FLINK/FLIP-376%3A+Add+DISTRIBUTED+BY+clause) | 
| DataStream API : Support du traitement complet des partitions  | Flink 1.20 introduit la prise en charge intégrée des agrégations sur des flux non clés via l'API. FullPartitionWindow  | [FLIP-380 : Support du traitement complet des partitions sans clé DataStream](https://cwiki.apache.org/confluence/display/FLINK/FLIP-380%3A+Support+Full+Partition+Processing+On+Non-keyed+DataStream) | 
| Afficher le score d'asymétrie des données sur le tableau de bord Flink | Le tableau de bord Flink 1.20 affiche désormais des informations sur le biais des données. Chaque opérateur de l'interface utilisateur du graphe de tâches Flink affiche un score d'asymétrie des données supplémentaire.  | [FLIP-418 : Afficher le score d'asymétrie des données sur le tableau de bord Flink](https://cwiki.apache.org/confluence/display/FLINK/FLIP-418%3A+Show+data+skew+score+on+Flink+Dashboard) | 

Pour la documentation de la version 1.20.0 d'Apache Flink, consultez la documentation [Apache Flink](https://nightlies.apache.org/flink/flink-docs-stable/) v1.20.0. Pour les notes de mise à jour de Flink 1.20, voir Notes de [version -](https://nightlies.apache.org/flink/flink-docs-release-1.20/release-notes/flink-1.20/) Flink 1.20

## Éléments
<a name="flink-1-20-0-components"></a>


**Composants de Flink 1.20**  

| Composant | Version | 
| --- | --- | 
| Java  | 11 (recommandée) | 
| Python |  3,11  | 
| Kinesis Data Analytics Flink Runtime () aws-kinesisanalytics-runtime | 1.2.0 | 
| Connecteurs | Pour plus d'informations sur les connecteurs disponibles, consultez la section [Connecteurs Apache Flink](https://docs.aws.amazon.com/managed-flink/latest/java/how-flink-connectors.html). | 
| [Apache Beam (applications Beam uniquement)](https://aws.amazon.com/developer/language/python/) |  Il n'existe pas d'Apache Flink Runner compatible pour Flink 1.20. Pour plus d'informations, consultez la section [Compatibilité des versions de Flink](https://beam.apache.org/documentation/runners/flink/#flink-version-compatibility).  | 

## Problèmes connus
<a name="flink-1-20-0-known-issues"></a>

**Faisceau Apache**

Il n'existe actuellement aucun Apache Flink Runner compatible pour Flink 1.20 dans Apache Beam. Pour plus d'informations, consultez la section [Compatibilité des versions de Flink](https://beam.apache.org/documentation/runners/flink/#flink-version-compatibility).

**Service géré Amazon pour Apache Flink Studio**

Amazon Managed Service pour Apache Flink Studio utilise les blocs-notes Apache Zeppelin pour fournir une expérience de développement à interface unique pour le développement, le débogage du code et l'exécution d'applications de traitement de flux Apache Flink. Une mise à niveau de l'interpréteur Flink de Zeppelin est requise pour permettre le support de Flink 1.20. Ce travail est programmé avec la communauté Zeppelin. Nous mettrons à jour ces notes lorsque ce travail sera terminé. Vous pouvez continuer à utiliser Flink 1.15 avec Amazon Managed Service pour Apache Flink Studio. Pour plus d'informations, consultez la section [Création d'un bloc-notes Studio](https://docs.aws.amazon.com/managed-flink/latest/java/how-zeppelin-creating.html).

**Corrections de bugs rétroportées**

Amazon Managed Service pour Apache Flink rétroporte les correctifs de la communauté Flink pour les problèmes critiques. Voici une liste des corrections de bogues que nous avons rétroportées :


**Corrections de bugs rétroportées**  

| Lien vers Apache Flink JIRA | Description | 
| --- | --- | 
| [FLINK-35886](https://issues.apache.org/jira/browse/FLINK-35886) | Ce correctif résout un problème à l'origine de la comptabilisation incorrecte des délais d'inactivité des filigranes lorsqu'une sous-tâche est rétropressionnée ou bloquée. | 

# Amazon Managed Service pour Apache Flink 1.19
<a name="flink-1-19"></a>

Le service géré pour Apache Flink prend désormais en charge la version 1.19.1 d'Apache Flink. Cette section présente les principales nouvelles fonctionnalités et modifications apportées à la prise en charge d'Apache Flink 1.19.1 par le service géré pour Apache Flink.

**Note**  
Si vous utilisez une version antérieure prise en charge d'Apache Flink et que vous souhaitez mettre à niveau vos applications existantes vers Apache Flink 1.19.1, vous pouvez le faire en utilisant des mises à niveau de version d'Apache Flink sur place. Pour de plus amples informations, veuillez consulter [Utiliser des mises à niveau de version sur place pour Apache Flink](how-in-place-version-upgrades.md). Grâce aux mises à niveau de version sur place, vous conservez la traçabilité des applications par rapport à un seul ARN pour toutes les versions d'Apache Flink, y compris les instantanés, les journaux, les métriques, les balises, les configurations Flink, etc. 

## Fonctionnalités prises en charge
<a name="flink-1-19-1-supported-features"></a>

Apache Flink 1.19.1 apporte des améliorations à l'API SQL, telles que des paramètres nommés, un parallélisme de source personnalisé et des états TTLs différents pour les différents opérateurs Flink. 


**Fonctionnalités prises en charge et documentation associée**  

| Fonctionnalités prises en charge | Description | Référence de documentation Apache Flink  | 
| --- | --- | --- | 
| API SQL : Support pour configurer différents états à l' TTLs aide de SQL Hint | Les utilisateurs peuvent désormais configurer l'état TTL sur le stream, les jointures régulières et l'agrégation de groupes.  | [FLIP-373 : Configuration d'un état différent à l' TTLs aide de SQL Hint](https://cwiki.apache.org/confluence/display/FLINK/FLIP-373%3A+Support+Configuring+Different+State+TTLs+using+SQL+Hint) | 
| API SQL : Support des paramètres nommés pour les fonctions et les procédures d'appel | Les utilisateurs peuvent désormais utiliser des paramètres nommés dans les fonctions, plutôt que de se fier à l'ordre des paramètres.  | [FLIP-378 : Support des paramètres nommés pour les fonctions et les procédures d'appel](https://cwiki.apache.org/confluence/display/FLINK/FLIP-387%3A+Support+named+parameters+for+functions+and+call+procedures) | 
| API SQL : définition du parallélisme pour les sources SQL | Les utilisateurs peuvent désormais spécifier le parallélisme pour les sources SQL. | [FLIP-367 : Support de configuration du parallélisme pour les sources Table/SQL ](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=263429150) | 
| API SQL : fenêtre de session de support TVF | Les utilisateurs peuvent désormais utiliser les fonctions tabulaires de la fenêtre de session.  | [FLINK-24024 : Session de support Window TVF](https://issues.apache.org/jira/browse/FLINK-24024) | 
| API SQL : l'agrégation Window TVF prend en charge les entrées du journal des modifications | Les utilisateurs peuvent désormais effectuer une agrégation de fenêtres sur les entrées du journal des modifications.  | [FLINK-20281 : L'agrégation de fenêtres prend en charge l'entrée du flux du journal des modifications](https://issues.apache.org/jira/browse/FLINK-20281) | 
|  Support Python 3.11  | Flink supporte désormais Python 3.11, qui est 10 à 60 % plus rapide que Python 3.10. Pour plus d'informations, consultez [Nouveautés de Python 3.11](https://docs.python.org/3/whatsnew/3.11.html#summary-release-highlights). | [FLINK-33030 : Ajout du support de python 3.11](https://issues.apache.org/jira/browse/FLINK-33030) | 
| Fournir des mesures pour le TwoPhaseCommitting puits | Les utilisateurs peuvent consulter les statistiques relatives au statut des contributeurs dans les puits de validation en deux phases. | [FLIP-371 : Fournir un contexte d'initialisation pour la création du Committer dans TwoPhaseCommittingSink](https://cwiki.apache.org/confluence/display/FLINK/FLIP-371%3A+Provide+initialization+context+for+Committer+creation+in+TwoPhaseCommittingSink) | 
|  Reporters de suivi pour le redémarrage des tâches et le pointage  | Les utilisateurs peuvent désormais surveiller les traces relatives à la durée des points de contrôle et aux tendances en matière de rétablissement. Dans Amazon Managed Service pour Apache Flink, nous activons les rapports de suivi SLF4j par défaut, afin que les utilisateurs puissent surveiller les traces des points de contrôle et des tâches via les journaux des applications. CloudWatch  | [FLIP-384 : Introduisez-le TraceReporter et utilisez-le pour créer des traces de point de contrôle et de récupération](https://cwiki.apache.org/confluence/display/FLINK/FLIP-384%3A+Introduce+TraceReporter+and+use+it+to+create+checkpointing+and+recovery+traces) | 

**Note**  
Vous pouvez opter pour les fonctionnalités suivantes en soumettant un [dossier d'assistance](https://console.aws.amazon.com/support/home#/) :


**Fonctionnalités d'inscription et documentation associée**  

| Fonctionnalités d'inscription | Description | Référence de documentation Apache Flink  | 
| --- | --- | --- | 
| Support utilisant un intervalle de point de contrôle plus long lorsque la source traite le backlog | Il s'agit d'une fonctionnalité optionnelle, car les utilisateurs doivent adapter la configuration aux exigences spécifiques de leur travail. | [FLIP-309 : Support de l'utilisation d'un intervalle de point de contrôle plus long lorsque la source traite le backlog](https://cwiki.apache.org/confluence/display/FLINK/FLIP-309%3A+Support+using+larger+checkpointing+interval+when+source+is+processing+backlog) | 
| Rediriger System.out et System.err vers les journaux Java | Il s'agit d'une fonctionnalité optionnelle. Sur Amazon Managed Service pour Apache Flink, le comportement par défaut est d'ignorer les sorties de System.out et System.err, car la meilleure pratique en production consiste à utiliser l'enregistreur Java natif. | [FLIP-390 : Système de support en panne et erreur pour être redirigé vers LOG ou supprimé](https://cwiki.apache.org/confluence/display/FLINK/FLIP-390%3A+Support+System+out+and+err+to+be+redirected+to+LOG+or+discarded) | 

Pour la documentation de la version 1.19.1 d'Apache Flink, consultez la documentation [Apache Flink](https://nightlies.apache.org/flink/flink-docs-stable/) v1.19.1.

## Modifications apportées à Amazon Managed Service pour Apache Flink 1.19.1
<a name="flink-1-19-1-known-issues"></a>

**Logging Trace Reporter activé par défaut**

Apache Flink 1.19.1 a introduit des traces de point de contrôle et de restauration, permettant aux utilisateurs de mieux résoudre les problèmes liés aux points de contrôle et à la reprise des tâches. Dans Amazon Managed Service pour Apache Flink, ces traces sont enregistrées dans le flux de CloudWatch log, ce qui permet aux utilisateurs de ventiler le temps consacré à l'initialisation des tâches et d'enregistrer la taille historique des points de contrôle.

**La stratégie de redémarrage par défaut est désormais le délai exponentiel**

Apache Flink 1.19.1 apporte des améliorations significatives à la stratégie de redémarrage à retard exponentiel. Dans Amazon Managed Service pour Apache Flink à partir de Flink 1.19.1, les tâches Flink utilisent par défaut la stratégie de redémarrage à retard exponentiel. Cela signifie que les tâches des utilisateurs seront restaurées plus rapidement après des erreurs transitoires, mais ne surchargeront pas les systèmes externes si les redémarrages des tâches persistent.

**Corrections de bugs rétroportées**

Amazon Managed Service pour Apache Flink rétroporte les correctifs de la communauté Flink pour les problèmes critiques. Cela signifie que le runtime est différent de la version 1.19.1 d'Apache Flink. Voici une liste des corrections de bogues que nous avons rétroportées :


**Corrections de bugs rétroportées**  

| Lien vers Apache Flink JIRA | Description | 
| --- | --- | 
| [FLINK-35531](https://issues.apache.org/jira/browse/FLINK-35531) | Ce correctif corrige la régression des performances introduite dans la version 1.17.0 qui ralentit les écritures sur HDFS. | 
| [FLINK-35157](https://issues.apache.org/jira/browse/FLINK-35157) | Ce correctif résout le problème des tâches Flink bloquées lorsque des sources alignées en filigrane rencontrent des sous-tâches terminées. | 
| [FLINK-34252](https://issues.apache.org/jira/browse/FLINK-34252) | Ce correctif résout le problème de génération de filigranes qui entraîne un état de filigrane IDLE erroné. | 
| [FLINK-34252](https://issues.apache.org/jira/browse/FLINK-34252) | Ce correctif corrige la régression des performances lors de la génération de filigranes en réduisant les appels système. | 
| [FLINK-33936](https://issues.apache.org/jira/browse/FLINK-33936) | Ce correctif résout le problème des enregistrements dupliqués lors de l'agrégation par mini-lots sur l'API Table. | 
| [FLINK-35498](https://issues.apache.org/jira/browse/FLINK-35498) | Ce correctif résout le problème des conflits de noms d'arguments lors de la définition de paramètres nommés dans l'API Table UDFs. | 
| [FLINK-33192](https://issues.apache.org/jira/browse/FLINK-33192) | Ce correctif résout le problème d'une fuite de mémoire d'état dans les opérateurs de fenêtres due à un nettoyage incorrect du chronomètre. | 
| [FLINK-35069](https://issues.apache.org/jira/browse/FLINK-35069) | Ce correctif résout le problème lorsqu'une tâche Flink se bloque et déclenche un chronomètre à la fin d'une fenêtre. | 
| [FLINK-35832](https://issues.apache.org/jira/browse/FLINK-35832) | Ce correctif résout le problème lorsque IFNULL renvoie des résultats incorrects. | 
| [FLINK-35886](https://issues.apache.org/jira/browse/FLINK-35886) | Ce correctif résout le problème lorsque les tâches soumises à une contre-pression sont considérées comme inactives. | 

## Éléments
<a name="flink-1-19-1-components"></a>


****  

| Composant | Version | 
| --- | --- | 
| Java  | 11 (recommandée) | 
| Python |  3,11  | 
| Kinesis Data Analytics Flink Runtime () aws-kinesisanalytics-runtime | 1.2.0 | 
| Connecteurs | Pour plus d'informations sur les connecteurs disponibles, consultez la section [Connecteurs Apache Flink](https://docs.aws.amazon.com/managed-flink/latest/java/how-flink-connectors.html). | 
| [Apache Beam (applications Beam uniquement)](https://aws.amazon.com/developer/language/python/) |  À partir de la version 2.61.0. Pour plus d'informations, consultez la section [Compatibilité des versions de Flink](https://beam.apache.org/documentation/runners/flink/#flink-version-compatibility).  | 

## Problèmes connus
<a name="flink-1-19-other-issues"></a>

**Service géré Amazon pour Apache Flink Studio**

Studio utilise les blocs-notes Apache Zeppelin pour fournir une expérience de développement à interface unique pour le développement, le débogage du code et l'exécution d'applications de traitement de flux Apache Flink. Une mise à niveau de l'interpréteur Flink de Zeppelin est requise pour permettre le support de Flink 1.19. Ce travail est planifié avec la communauté Zeppelin et nous mettrons à jour ces notes lorsqu'il sera terminé. Vous pouvez continuer à utiliser Flink 1.15 avec Amazon Managed Service pour Apache Flink Studio. Pour plus d'informations, consultez la section [Création d'un bloc-notes Studio](https://docs.aws.amazon.com/managed-flink/latest/java/how-zeppelin-creating.html).

# Amazon Managed Service pour Apache Flink 1.18
<a name="flink-1-18"></a>

 Le service géré pour Apache Flink prend désormais en charge la version 1.18.1 d'Apache Flink. Découvrez les principales nouvelles fonctionnalités et modifications apportées par le service géré pour la prise en charge d'Apache Flink 1.18.1 par le service géré pour Apache Flink.

**Note**  
Si vous utilisez une version antérieure prise en charge d'Apache Flink et que vous souhaitez mettre à niveau vos applications existantes vers Apache Flink 1.18.1, vous pouvez le faire en utilisant des mises à niveau de version d'Apache Flink sur place. Grâce aux mises à niveau de version sur place, vous conservez la traçabilité des applications par rapport à un seul ARN pour toutes les versions d'Apache Flink, y compris les instantanés, les journaux, les métriques, les balises, les configurations Flink, etc. Vous pouvez utiliser cette fonctionnalité dans `RUNNING` et dans `READY` l'État. Pour de plus amples informations, veuillez consulter [Utiliser des mises à niveau de version sur place pour Apache Flink](how-in-place-version-upgrades.md). 


**Fonctionnalités prises en charge avec les références de documentation d'Apache Flink**  

| Fonctionnalités prises en charge | Description | Référence de documentation Apache Flink  | 
| --- | --- | --- | 
| Connecteur Opensearch | Ce connecteur comprend un évier offrant des at-least-once garanties. | [github : Connecteur Opensearch](https://github.com/apache/flink-connector-opensearch/blob/main/docs/content/docs/connectors/datastream/opensearch.md) | 
| Connecteur Amazon DynamoDB | Ce connecteur comprend un évier offrant des at-least-once garanties. | [Récepteur Amazon DynamoDB](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/dynamodb/) | 
| Connecteur MongoDB | Ce connecteur comprend une source et un récepteur offrant des at-least-once garanties. | [Connecteur MongoDB](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/mongodb/) | 
| Discuplez Hive avec le planificateur Flink |  Vous pouvez utiliser le dialecte Hive directement sans avoir à changer de fichier JAR supplémentaire.  | [FLINK-26603 : Discuple Hive avec le planificateur Flink](https://issues.apache.org/jira/browse/FLINK-26603) | 
| Désactiver WAL dans Rocks DBWrite BatchWrapper par défaut |  Cela permet d'accélérer les temps de restauration.  | [FLINK-32326 : Désactiver WAL dans Rocks par défaut DBWrite BatchWrapper ](https://issues.apache.org/jira/browse/FLINK-32326) | 
|  Améliorez les performances d'agrégation des filigranes en activant l'alignement des filigranes  |  Améliore les performances d'agrégation des filigranes lors de l'activation de l'alignement des filigranes et ajoute le point de référence associé.  | [FLINK-32524 : Performances d'agrégation de filigranes](https://issues.apache.org/jira/browse/FLINK-32420) | 
| Préparez l'alignement des filigranes pour une utilisation en production | Élimine le risque de surcharge de gros travaux JobManager | [FLINK-32548 : Préparez l'alignement des filigranes](https://issues.apache.org/jira/browse/FLINK-32548) | 
|  Configurable RateLimitingStratey pour Async Sink  |  RateLimitingStrategy vous permet de configurer la décision quant aux éléments à redimensionner, à quel moment et dans quelle mesure.  | [FLIP-242 : Introduire la configuration RateLimitingStrategy pour Async Sink](https://cwiki.apache.org/confluence/display/FLINK/FLIP-242%3A+Introduce+configurable+RateLimitingStrategy+for+Async+Sink) | 
|  Extraire en bloc les statistiques des tables et des colonnes  | Performances de requête améliorées. | [FLIP-247 : Récupération en bloc des statistiques de table et de colonne pour des partitions données](https://cwiki.apache.org/confluence/display/FLINK/FLIP-247%3A+Bulk+fetch+of+table+and+column+statistics+for+given+partitions) | 

Pour la documentation de la version 1.18.1 d'Apache Flink, voir l'annonce de publication d'[Apache Flink](https://flink.apache.org/2024/01/19/apache-flink-1.18.1-release-announcement/) 1.18.1.

## Modifications apportées à Amazon Managed Service pour Apache Flink avec Apache Flink 1.18
<a name="flink-1-15-2-known-issues"></a>

**Akka remplacé par Pekko**

 Apache Flink a remplacé Akka par Pekko dans Apache Flink 1.18. Cette modification est entièrement prise en charge dans le service géré pour Apache Flink à partir d'Apache Flink 1.18.1 et versions ultérieures. Vous n'avez pas besoin de modifier vos applications à la suite de cette modification. Pour plus d'informations, voir [FLINK-32468 : Remplacer](https://issues.apache.org/jira/browse/FLINK-32468) Akka par Pekko.

**Support de l' PyFlink exécution en mode thread**

Cette modification apportée à Apache Flink introduit un nouveau mode d'exécution pour le framework d'exécution Pyflink, le mode processus. Le mode processus peut désormais exécuter des fonctions Python définies par l'utilisateur dans le même thread au lieu d'un processus distinct.

**Corrections de bugs rétroportées**

Amazon Managed Service pour Apache Flink rétroporte les correctifs de la communauté Flink pour les problèmes critiques. Cela signifie que le runtime est différent de la version 1.18.1 d'Apache Flink. Voici une liste des corrections de bogues que nous avons rétroportées :


**Corrections de bugs rétroportées**  

| Lien vers Apache Flink JIRA | Description | 
| --- | --- | 
| [FLINK-33863](https://issues.apache.org/jira/browse/FLINK-33863) | Ce correctif résout le problème lorsqu'une restauration d'état échoue pour des instantanés compressés. | 
| [FLINK-34063](https://issues.apache.org/jira/browse/FLINK-34063) | Ce correctif résout le problème lorsque les opérateurs source perdent des divisions lorsque la compression des instantanés est activée. Apache Flink propose une compression optionnelle (désactivée par défaut) pour tous les points de contrôle et de sauvegarde. Apache Flink a identifié un bogue dans Flink 1.18.1 en raison duquel l'état de l'opérateur ne pouvait pas être correctement restauré lorsque la compression des instantanés était activée. Cela peut entraîner une perte de données ou une impossibilité de restauration à partir du point de contrôle.  | 
| [FLINK-35069](https://issues.apache.org/jira/browse/FLINK-35069) | Ce correctif résout le problème lorsqu'une tâche Flink se bloque et déclenche un chronomètre à la fin d'une fenêtre.  | 
| [FLINK-35097](https://issues.apache.org/jira/browse/FLINK-35097) | Ce correctif résout le problème des enregistrements dupliqués dans un connecteur de système de fichiers d'API de table au format brut.  | 
| [FLINK-34379](https://issues.apache.org/jira/browse/FLINK-34379) | Ce correctif résout le problème lié à l' OutOfMemoryError activation du filtrage dynamique des tables.  | 
| [FLINK-28693](https://issues.apache.org/jira/browse/FLINK-28693) | Ce correctif résout le problème de l'incapacité de l'API Table à générer un graphique si le filigrane contient une expression ColumnBy.  | 
| [FLINK-35217](https://issues.apache.org/jira/browse/FLINK-35217) | Ce correctif résout le problème d'un point de contrôle endommagé lors d'un mode d'échec de tâche Flink spécifique.  | 

## Éléments
<a name="flink-1-15-2-components"></a>


****  

| Composant | Version | 
| --- | --- | 
| Java  | 11 (recommandée) | 
| Scala |  Depuis la version 1.15, Flink est indépendant de Scala. À titre de référence, MSF Flink 1.18 a été vérifié par rapport à Scala 3.3 (LTS).  | 
| Service géré pour Apache Flink Flink Runtime () aws-kinesisanalytics-runtime | 1.2.0 | 
| [AWS Connecteur Kinesis (flink-connector-kinesis) [Source]](https://mvnrepository.com/artifact/org.apache.flink/flink-connector-kinesis/4.2.0-1.18) | 4,2,0-1,18 | 
| [AWS Connecteur Kinesis (flink-connector-kinesis) [Évier]](https://mvnrepository.com/artifact/org.apache.flink/flink-connector-aws-kinesis-streams/4.2.0-1.18) | 4,2,0-1,18 | 
| [Apache Beam (applications Beam uniquement)](https://aws.amazon.com/developer/language/python/) |  À partir de la version 2.57.0. Pour plus d'informations, consultez la section [Compatibilité des versions de Flink](https://beam.apache.org/documentation/runners/flink/#flink-version-compatibility).  | 

## Problèmes connus
<a name="flink-1-18-known-issues"></a>

**Service géré Amazon pour Apache Flink Studio**

Studio utilise les blocs-notes Apache Zeppelin pour fournir une expérience de développement à interface unique pour le développement, le débogage du code et l'exécution d'applications de traitement de flux Apache Flink. Une mise à niveau de l'interpréteur Flink de Zeppelin est requise pour permettre le support de Flink 1.18. Ce travail est planifié avec la communauté Zeppelin et nous mettrons à jour ces notes lorsqu'il sera terminé. Vous pouvez continuer à utiliser Flink 1.15 avec Amazon Managed Service pour Apache Flink Studio. Pour plus d'informations, consultez la section [Création d'un bloc-notes Studio](https://docs.aws.amazon.com/managed-flink/latest/java/how-zeppelin-creating.html).

**Inactivité du filigrane incorrecte lorsque la sous-tâche est contre-pressée**

Il existe un problème connu lié à la génération de filigranes lorsqu'une sous-tâche est rétropressurisée. Ce problème a été résolu depuis Flink 1.19 et versions ultérieures. Cela peut se traduire par une augmentation du nombre d'enregistrements en retard lorsqu'un graphe de tâches Flink est soumis à une contre-pression. Nous vous recommandons de passer à la dernière version de Flink pour intégrer ce correctif. Pour plus d'informations, voir [Comptabilité incorrecte du délai d'inactivité des filigranes en cas de contre-pression/de blocage](https://issues.apache.org/jira/browse/FLINK-35886) d'une sous-tâche.

# Amazon Managed Service pour Apache Flink 1.15
<a name="flink-1-15-2"></a>

 Le service géré pour Apache Flink prend en charge les nouvelles fonctionnalités suivantes dans Apache 1.15.2 : 


****  

| Fonctionnalité | Description | Référence Apache FLIP  | 
| --- | --- | --- | 
| Récepteur asynchrone  | Un framework AWS contributif pour la création de destinations asynchrones qui permet aux développeurs de créer des AWS connecteurs personnalisés avec moins de la moitié de l'effort précédent. Pour plus d’informations, consultez [The Generic Asynchronous Base Sink.](https://flink.apache.org/2022/05/06/async-sink-base.html) | [FLIP-171: Async Sink](https://cwiki.apache.org/confluence/display/FLINK/FLIP-171%3A+Async+Sink). | 
| Récepteur Kinesis Data Firehose  | AWS a contribué à un nouvel Amazon Kinesis Firehose Sink utilisant le framework Async.  | [Récepteur Amazon Kinesis Data Firehose](https://nightlies.apache.org/flink/flink-docs-release-1.15//docs/connectors/datastream/firehose/) | 
| Arrêter avec point de sauvegarde  | Arrêter avec point de sauvegarde garantit un fonctionnement sans faille et surtout en garantissant une sémantique unique pour les clients qui comptent dessus. | [FLIP-34 : Terminate/Suspend Job avec](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=103090212) Savepoint. | 
| Découplage Scala  | Les utilisateurs peuvent désormais tirer parti de l’API Java depuis n’importe quelle version de Scala, y compris Scala 3. Les clients devront intégrer la bibliothèque standard Scala de leur choix à leurs applications Scala.  | [FLIP-28: Long-term goal of making flink-table Scala-free](https://cwiki.apache.org/confluence/display/FLINK/FLIP-28%3A+Long-term+goal+of+making+flink-table+Scala-free). | 
| Scala | Voir le découplage de Scala ci-dessus  | [FLIP-28: Long-term goal of making flink-table Scala-free](https://cwiki.apache.org/confluence/display/FLINK/FLIP-28%3A+Long-term+goal+of+making+flink-table+Scala-free). | 
| Métriques du connecteur unifié | Flink a [défini des métriques standard](https://nightlies.apache.org/flink/flink-docs-release-1.15//docs/ops/metrics/) pour les tâches et les opérateurs. Le service géré pour Apache Flink continuera à prendre en charge les métriques du récepteur et de la source et introduira numRestarts en parallèle avec fullRestarts dans la version 1.15 pour les métriques de disponibilité.  | [FLIP-33: Standardize Connector Metrics](https://cwiki.apache.org/confluence/display/FLINK/FLIP-33%3A+Standardize+Connector+Metrics) et [FLIP-179: Expose Standardized Operator Metrics](https://cwiki.apache.org/confluence/display/FLINK/FLIP-179%3A+Expose+Standardized+Operator+Metrics). | 
| Point de contrôle des tâches terminées  | Cette fonctionnalité est activée par défaut dans Flink 1.15 et permet de continuer à effectuer des points de contrôle même si certaines parties du graphique de tâches ont fini de traiter toutes les données, ce qui peut se produire s’il contient des sources limitées (par lots).  | [FLIP-147: Support Checkpoints After Tasks Finished](https://cwiki.apache.org/confluence/display/FLINK/FLIP-147%3A+Support+Checkpoints+After+Tasks+Finished).  | 

## Modifications apportées au service géré Amazon pour Apache Flink avec Apache Flink 1.15
<a name="flink-1-15-2-changes"></a>

**Blocs-notes Studio**

Le service géré pour Apache Flink prend désormais en charge Apache Flink 1.15. Le service géré pour Apache Flink Studio utilise les blocs-notes Apache Zeppelin pour fournir une expérience de développement à interface unique pour le développement, le débogage de code et l’exécution d’applications de traitement de flux Apache Flink. Vous pouvez en savoir plus sur le service géré pour Apache Flink Studio et sur la façon de démarrer sur [Utiliser un bloc-notes Studio avec service géré pour Apache Flink](how-notebook.md).

**Connecteur EFO**

Lors de la mise à niveau vers la version 1.15 du service géré pour Apache Flink, assurez-vous que vous utilisez le connecteur EFO le plus récent, à savoir la version 1.15.3 ou une version ultérieure. Pour plus d’informations sur les raisons, consultez [FLINK-29324](https://issues.apache.org/jira/browse/FLINK-29324 ).

**Découplage Scala**

Pour commencer avec Flink 1.15.2, vous devrez intégrer la bibliothèque standard Scala de votre choix à vos applications Scala. 

**Récepteur Kinesis Data Firehose**

Lors de la mise à niveau vers la version 1.15 du service géré pour Apache Flink, assurez-vous que vous utilisez le [récepteur Amazon Kinesis Data Firehose](https://nightlies.apache.org/flink/flink-docs-release-1.15//docs/connectors/datastream/firehose/) le plus récent.

**Connecteurs Kafka**

Lors de la mise à niveau vers Amazon Managed Service for Apache Flink pour Apache Flink version 1.15, assurez-vous d'utiliser le connecteur Kafka le plus récent. APIs Apache Flink est obsolète [FlinkKafkaConsumer](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/kafka/#kafka-consumer)et [FlinkKafkaProducer](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/kafka/#kafka-producer)These APIs for the Kafka sink ne peut pas être validé dans Kafka pour Flink 1.15. Assurez-vous d'utiliser [KafkaSource](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/kafka/#kafka-source)et [KafkaSink](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/kafka/#kafka-sink). 

## Éléments
<a name="flink-1-15-2-components"></a>


****  

| Composant | Version | 
| --- | --- | 
| Java  | 11 (recommandée) | 
| Scala | 2,12 | 
| Service géré pour Apache Flink Flink Runtime () aws-kinesisanalytics-runtime | 1.2.0 | 
| [AWS Connecteur Kinesis () flink-connector-kinesis](https://mvnrepository.com/artifact/org.apache.flink/flink-connector-kinesis/1.15.4) | 1.15.4 | 
| [Apache Beam (applications Beam uniquement)](https://aws.amazon.com/developer/language/python/) | 2.33.0, avec la version Jackson 2.12.2 | 

## Problèmes connus
<a name="flink-1-15-known-issues"></a>

**Kafka Commit lors du point de contrôle échoue à plusieurs reprises après le redémarrage d'un broker**

Il existe un problème connu d'Apache Flink open source avec le connecteur Apache Kafka dans la version 1.15 de Flink, causé par un bogue critique du client Kafka open source dans le client Kafka 2.8.1. Pour plus d'informations, consultez [Kafka Commit lorsque le point de contrôle échoue à plusieurs reprises après le redémarrage d'un broker](https://issues.apache.org/jira/browse/FLINK-28060) et [KafkaConsumer ne parvient pas à rétablir la connexion au coordinateur de groupe après commitOffsetAsync ](https://issues.apache.org/jira/browse/KAFKA-13840) une exception.

Pour éviter ce problème, nous vous recommandons d'utiliser Apache Flink 1.18 ou version ultérieure dans Amazon Managed Service pour Apache Flink.

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