

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

# Créer un bloc-notes Studio avec Amazon MSK
<a name="example-notebook-msk"></a>

Ce didacticiel explique comment créer un bloc-notes Studio qui utilise un cluster Amazon MSK comme source.

**Topics**
+ [Configuration d'un cluster Amazon MSK](#example-notebook-msk-setup)
+ [Ajoutez une passerelle NAT à votre VPC](#example-notebook-msk-nat)
+ [Création d'une AWS Glue connexion et d'une table](#example-notebook-msk-glue)
+ [Créer un bloc-notes Studio avec Amazon MSK](#example-notebook-msk-create)
+ [Envoyer des données à votre cluster Amazon MSK](#example-notebook-msk-send)
+ [Tester votre bloc-notes Studio](#example-notebook-msk-test)

## Configuration d'un cluster Amazon MSK
<a name="example-notebook-msk-setup"></a>

Pour ce didacticiel, vous avez besoin d’un cluster Amazon MSK qui autorise l’accès en texte brut. Si vous n'avez pas encore configuré de cluster Amazon MSK, suivez le didacticiel [Getting Started Using Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html) pour créer un Amazon VPC, un cluster Amazon MSK, une rubrique et une instance client Amazon. EC2 

Lorsque vous suivez le didacticiel, procédez comme suit :
+ Dans l’[étape 3 : créer un cluster Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/create-cluster.html), à l’étape 4, modifiez la valeur `ClientBroker` de `TLS` à **PLAINTEXT**.

## Ajoutez une passerelle NAT à votre VPC
<a name="example-notebook-msk-nat"></a>

Si vous avez créé un cluster Amazon MSK en suivant le didacticiel [Mise en route avec Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html), ou si votre VPC Amazon existant ne possède pas encore de passerelle NAT pour ses sous-réseaux privés, vous devez ajouter une passerelle NAT à votre VPC Amazon. Le schéma suivant illustre l’architecture. 

![\[AWS VPC architecture with public and private subnets, NAT gateway, and Glue Data Catalog integration.\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/images/vpc_05.png)


Pour créer une passerelle NAT pour votre Amazon VPC, procédez comme suit :

1. Ouvrez la console Amazon VPC à l’adresse [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Dans la barre de navigation de gauche, choisissez **Passerelles NAT**.

1. Sur la page **Passerelles NAT**, choisissez **Créer une passerelle NAT**.

1. Sur la page **Créer une passerelle NAT**, renseignez les valeurs suivantes :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/example-notebook-msk.html)

   Choisissez **Créer une passerelle NAT**.

1. Dans le volet de navigation de gauche, choisissez **Tables de routage**.

1. Choisissez **Créer une table de routage**.

1. Sur la page **Créer une table de routage**, fournissez les informations suivantes :
   + **Balise de nom** : **ZeppelinRouteTable**
   + **VPC** **: Choisissez votre VPC (par exemple, VPC).AWS KafkaTutorial**

   Sélectionnez **Create** (Créer).

1. Dans la liste des tables de routage, choisissez **ZeppelinRouteTable**. Choisissez l’onglet **Routes**, puis **Modifier les routes**.

1. Sur la page **Modifier les routes**, choisissez **Ajouter une route**.

1. Dans le **** Pour **Destination**, saisissez **0.0.0.0/0**. Pour **Target**, choisissez **NAT Gateway**, **ZeppelinGateway**. Choisissez **Enregistrer les routes**. Choisissez **Close** (Fermer).

1. Sur la page Tables de routage, lorsque cette option est **ZeppelinRouteTable**sélectionnée, choisissez l'onglet **Associations de sous-réseaux**. Choisissez **Modifier les associations de sous-réseaux**.

1. Sur la page **Modifier les associations de sous-réseaux**, choisissez **AWS KafkaTutorialSubnet2** et **AWS KafkaTutorialSubnet3**. Choisissez **Save** (Enregistrer).

## Création d'une AWS Glue connexion et d'une table
<a name="example-notebook-msk-glue"></a>

Votre bloc-notes Studio utilise une base de données [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) pour les métadonnées relatives à votre source de données Amazon MSK. Dans cette section, vous créez une AWS Glue connexion qui décrit comment accéder à votre cluster Amazon MSK et un AWS Glue tableau qui décrit comment présenter les données de votre source de données à des clients tels que votre bloc-notes Studio. 

**Créer une connexion**

1. Connectez-vous à la AWS Glue console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Si vous n'avez pas encore de AWS Glue base de données, choisissez **Bases de données** dans la barre de navigation de gauche. Choisissez **Ajouter une base de données**. Dans la fenêtre **Ajouter une base de données**, saisissez **default** comme **nom de la base de données**. Sélectionnez **Create** (Créer).

1. Dans le menu de navigation de gauche, sélectionnez **Connexions**. Choisissez **Ajouter une connexion**.

1. Dans la fenêtre **Ajouter une connexion**, indiquez les valeurs suivantes :
   + Pour **Nom de connexion**, saisissez **ZeppelinConnection**.
   + Pour **Type de connexion**, choisissez **Kafka**.
   + Pour le **serveur bootstrap Kafka URLs**, fournissez la chaîne de broker bootstrap de votre cluster. Vous pouvez obtenir les agents d’amorçage depuis la console MSK ou en saisissant la commande CLI suivante :

     ```
     aws kafka get-bootstrap-brokers --region us-east-1 --cluster-arn ClusterArn
     ```
   + Décochez la case **Exiger une connexion SSL**.

   Choisissez **Suivant**.

1. Sur la page **VPC**, renseignez les valeurs suivantes :
   + **Pour le **VPC**, choisissez le nom de votre VPC (par exemple, VPC.) AWS KafkaTutorial**
   + Pour **Sous-réseau**, choisissez **AWS KafkaTutorialSubnet2.**
   + Pour **Groupes de sécurité**, sélectionnez tous les groupes disponibles.

   Choisissez **Suivant**.

1. Sur la page **Propriétés de la connexion**/**Accès à la connexion**, choisissez **Terminer**.

**Création d’une table**
**Note**  
Vous pouvez soit créer la table manuellement comme décrit dans les étapes suivantes, soit utiliser le code du connecteur de création de table pour le service géré pour Apache Flink dans votre bloc-notes dans Apache Zeppelin pour créer votre table via une instruction DDL. Vous pouvez ensuite vous enregistrer AWS Glue pour vous assurer que la table a été correctement créée.

1. Dans la barre de navigation de gauche, choisissez **Tables**. Sur la page **Tables**, choisissez **Ajouter des tables**, **Ajouter une table manuellement**.

1. Sur la page **Configurer les propriétés de votre table**, saisissez **stock** pour **Nom de la table**. Assurez-vous de sélectionner la base de données que vous avez créée précédemment. Choisissez **Suivant**.

1. Sur la page **Ajouter un magasin de données**, choisissez **Kafka**. Pour le **nom du sujet**, entrez le nom de votre sujet (par exemple **AWS KafkaTutorialTopic**). Pour **Connection**, choisissez **ZeppelinConnection**.

1. Sur la page **Classification**, choisissez **JSON**. Choisissez **Suivant**.

1. Sur la page **Définir un schéma**, choisissez Ajouter une colonne pour ajouter une colonne. Ajoutez des colonnes avec les propriétés suivantes :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/example-notebook-msk.html)

   Choisissez **Suivant**.

1. Sur la page suivante, vérifiez vos paramètres, puis choisissez **Terminer**.

1. Choisissez la table que vous venez de créer dans la liste des tables.

1. Choisissez **Modifier le tableau** et ajoutez les propriétés suivantes :
   + clé :`managed-flink.proctime`, valeur : `proctime`
   + clé :`flink.properties.group.id`, valeur : `test-consumer-group`
   + clé :`flink.properties.auto.offset.reset`, valeur : `latest`
   + clé :`classification`, valeur : `json`

   Sans ces paires clé/valeur, le bloc-notes Flink rencontre une erreur. 

1. Choisissez **Appliquer**.

## Créer un bloc-notes Studio avec Amazon MSK
<a name="example-notebook-msk-create"></a>

Maintenant que vous avez créé les ressources utilisées par votre application, vous pouvez créer votre bloc-notes Studio. 

**Topics**
+ [Créez un bloc-notes Studio à l'aide du AWS Management Console](#example-notebook-create-msk-console)
+ [Créez un bloc-notes Studio à l'aide du AWS CLI](#example-notebook-msk-create-api)

**Note**  
Vous pouvez également créer un bloc-notes Studio à partir de la console Amazon MSK en choisissant un cluster existant, puis en choisissant **Traiter les données en temps réel**.

### Créez un bloc-notes Studio à l'aide du AWS Management Console
<a name="example-notebook-create-msk-console"></a>

1. Ouvrez le service géré pour la console Apache Flink [ https://console.aws.amazon.com/managed-flink/chez vous ? region=us-east-1\$1/applications/tableau](https://console.aws.amazon.com/managed-flink/home?region=us-east-1#/applications/dashboard) de bord.

1. Sur la page **Applications de service géré pour Apache Flink**, choisissez l’onglet **Studio**. Choisissez **Créer un bloc-notes Studio**.
**Note**  
Pour créer un bloc-notes Studio à partir des consoles Amazon MSK ou Kinesis Data Streams, sélectionnez votre cluster Amazon MSK ou votre flux de données Kinesis d’entrée, puis choisissez **Traiter les données en temps réel**.

1. Sur la page **Créer un bloc-notes Studio**, fournissez les informations suivantes :
   + Pour **Nom du bloc-notes Studio**, saisissez **MyNotebook**.
   + Pour **Base de données AWS Glue**, choisissez **Par défaut**.

   Choisissez **Créer un bloc-notes Studio**.

1. Sur la **MyNotebook**page, choisissez l'onglet **Configuration**. Dans la section **Mise en réseau**, choisissez **Modifier**.

1. Dans la MyNotebook page **Modifier le réseau pour**, choisissez la **configuration VPC basée sur le cluster Amazon MSK**. Choisissez votre cluster Amazon MSK pour **Cluster Amazon MSK**. Sélectionnez **Enregistrer les modifications**.

1. Sur la **MyNotebook**page, choisissez **Exécuter**. Attendez que **État** indique **En cours d’exécution**.

### Créez un bloc-notes Studio à l'aide du AWS CLI
<a name="example-notebook-msk-create-api"></a>

Pour créer votre bloc-notes Studio à l'aide du AWS CLI, procédez comme suit :

1. Assurez-vous de disposer des informations suivantes. Vous avez besoin de ces valeurs pour créer votre application.
   + Votre ID de compte.
   + ID de sous-réseau IDs et de groupe de sécurité pour l'Amazon VPC qui contient votre cluster Amazon MSK.

1. Créez un fichier nommé `create.json` avec le contenu suivant. Remplacez les valeurs des espaces réservés par vos informations.

   ```
   {
       "ApplicationName": "MyNotebook",
       "RuntimeEnvironment": "ZEPPELIN-FLINK-3_0",
       "ApplicationMode": "INTERACTIVE",
       "ServiceExecutionRole": "arn:aws:iam::AccountID:role/ZeppelinRole",
       "ApplicationConfiguration": {
           "ApplicationSnapshotConfiguration": {
               "SnapshotsEnabled": false
           },
           "VpcConfigurations": [
               {
                   "SubnetIds": [
                       "SubnetID 1",
                       "SubnetID 2",
                       "SubnetID 3"
                   ],
                   "SecurityGroupIds": [
                       "VPC Security Group ID"
                   ]
               }
           ],
           "ZeppelinApplicationConfiguration": {
               "CatalogConfiguration": {
                   "GlueDataCatalogConfiguration": {
                       "DatabaseARN": "arn:aws:glue:us-east-1:AccountID:database/default"
                   }
               }
           }
       }
   }
   ```

1. Pour créer votre application, exécutez la commande suivante.

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

1. Lorsque la commande est terminée, vous devriez obtenir une sortie similaire à celle qui suit, montrant les détails de votre nouveau bloc-notes Studio :

   ```
   {
       "ApplicationDetail": {
           "ApplicationARN": "arn:aws:kinesisanalyticsus-east-1:012345678901:application/MyNotebook",
           "ApplicationName": "MyNotebook",
           "RuntimeEnvironment": "ZEPPELIN-FLINK-3_0",
           "ApplicationMode": "INTERACTIVE",
           "ServiceExecutionRole": "arn:aws:iam::012345678901:role/ZeppelinRole",
   ...
   ```

1. Pour lancer votre application, exécutez la commande suivante. Remplacez les exemples de valeur par l’identifiant de votre compte.

   ```
   aws kinesisanalyticsv2 start-application --application-arn arn:aws:kinesisanalyticsus-east-1:012345678901:application/MyNotebook\
   ```

## Envoyer des données à votre cluster Amazon MSK
<a name="example-notebook-msk-send"></a>

Dans cette section, vous allez exécuter un script Python dans votre EC2 client Amazon pour envoyer des données à votre source de données Amazon MSK.

1. Connectez-vous à votre EC2 client Amazon.

1. Exécutez les commandes suivantes pour installer Python version 3, Pip et le package Kafka pour Python, puis confirmez les actions :

   ```
   sudo yum install python37
   curl -O https://bootstrap.pypa.io/get-pip.py
   python3 get-pip.py --user
   pip install kafka-python
   ```

1. Configurez le AWS CLI sur votre machine cliente en saisissant la commande suivante :

   ```
   aws configure
   ```

   Fournissez les informations d’identification de votre compte, et **us-east-1** pour la `region`.

1. Créez un fichier nommé `stock.py` avec le contenu suivant. Remplacez la valeur de l'échantillon par la chaîne Bootstrap Brokers de votre cluster Amazon MSK et mettez à jour le nom du sujet si celui-ci n'est pas : **AWS KafkaTutorialTopic**

   ```
   from kafka import KafkaProducer
   import json
   import random
   from datetime import datetime
   
   BROKERS = "<<Bootstrap Broker List>>"
   producer = KafkaProducer(
       bootstrap_servers=BROKERS,
       value_serializer=lambda v: json.dumps(v).encode('utf-8'),
       retry_backoff_ms=500,
       request_timeout_ms=20000,
       security_protocol='PLAINTEXT')
   
   
   def getStock():
       data = {}
       now = datetime.now()
       str_now = now.strftime("%Y-%m-%d %H:%M:%S")
       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 =getStock()
       # print(data)
       try:
           future = producer.send("AWSKafkaTutorialTopic", value=data)
           producer.flush()
           record_metadata = future.get(timeout=10)
           print("sent event to Kafka! topic {} partition {} offset {}".format(record_metadata.topic, record_metadata.partition, record_metadata.offset))
       except Exception as e:
           print(e.with_traceback())
   ```

1. Exécutez le script avec la commande suivante :

   ```
   $ python3 stock.py
   ```

1. Laissez le script s’exécuter pendant que vous complétez la section suivante.

## Tester votre bloc-notes Studio
<a name="example-notebook-msk-test"></a>

Dans cette section, vous utilisez votre bloc-notes Studio pour interroger les données de votre cluster Amazon MSK.

1. Ouvrez le service géré pour la console Apache Flink [ https://console.aws.amazon.com/managed-flink/chez vous ? region=us-east-1\$1/applications/tableau](https://console.aws.amazon.com/managed-flink/home?region=us-east-1#/applications/dashboard) de bord.

1. Sur la page **Applications de service géré pour Apache Flink**, choisissez l’onglet **Bloc-notes Studio**. Sélectionnez **MyNotebook**.

1. Sur la **MyNotebook**page, choisissez **Ouvrir dans Apache Zeppelin**.

   L’interface Apache Zeppelin s’ouvre dans un nouvel onglet.

1. Sur la page **Bienvenue sur Zeppelin \$1**, choisissez **Nouvelle note Zeppelin**.

1. Sur la page **Note Zeppelin**, entrez la requête suivante dans une nouvelle note :

   ```
   %flink.ssql(type=update)
   select * from stock
   ```

   Choisissez l’icône d’exécution.

   L’application affiche les données du cluster Amazon MSK.

Pour ouvrir le tableau de bord Apache Flink de votre application afin de visualiser les aspects opérationnels, choisissez **FLINK JOB**. Pour plus d’informations sur le tableau de bord Flink, consultez [Tableau de bord Apache Flink](https://docs.aws.amazon.com/managed-flink/latest/java/how-dashboard.html) dans le [guide du développeur du service géré pour Apache Flink](https://docs.aws.amazon.com/).

Pour d’autres exemples de requêtes SQL Flink Streaming, consultez la section [Queries](https://nightlies.apache.org/flink/flink-docs-release-1.15/dev/table/sql/queries.html) de la documentation [Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.15/).