Informations sur les versions antérieures du service géré pour Apache Flink - Service géré pour Apache Flink

Le service géré Amazon pour Apache Flink était auparavant connu sous le nom d’Amazon Kinesis Data Analytics pour Apache Flink.

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

Informations sur les versions antérieures du service géré pour Apache Flink

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 maintenant de mettre fin au support de ces versions dans Amazon Managed Service pour Apache Flink. À partir du 5 novembre 2024, 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.

Pour toutes les régions, à l'exception de la Chine et AWS GovCloud (US) Regions, à compter du 5 février 2025, vous ne pourrez plus créer, démarrer ou exécuter des applications à l'aide de ces versions d'Apache Flink dans Amazon Managed Service pour Apache Flink.

Pour les régions de Chine et AWS GovCloud (US) Regions, à compter du 19 mars 2025, vous ne pourrez plus créer, démarrer ou exécuter des applications à l'aide de ces versions d'Apache Flink 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.

Les versions 1.15.2 et 1.13.2 d'Apache Flink sont prises en charge par le service géré pour Apache Flink, mais ne sont plus prises en charge par la communauté Apache Flink.

Utilisation du connecteur Apache Flink Kinesis Streams avec les versions précédentes d'Apache Flink

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 KPLversion 0.14.0 ou supé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 est installé et que votre variable d'JAVA_HOMEenvironnement pointe vers un JDK plutôt que vers unJRE. Vous pouvez tester votre installation Apache Maven à l’aide de la commande suivante :

    mvn -version
  2. 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
  3. Décompressez le code source d’Apache Flink :

    tar -xvf flink-1.8.2-src.tgz
  4. Accédez au répertoire du code source d’Apache Flink :

    cd flink-1.8.2
  5. 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

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.

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.

Création d'applications avec Apache Flink 1.6.2

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 Java SDK 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.

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.

Mise à niveau des applications

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, AWS CloudFormation ou du. AWS Management Console Pour de plus amples informations, veuillez consulter Utiliser des mises à niveau de version sur place pour Apache Flink.

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

L’environnement Apache Flink contient des connecteurs permettant d’accéder aux données provenant de diverses sources.

Pour démarrer : Flink 1.13.2

Cette section vous présente les concepts fondamentaux du service géré pour Apache Flink et du 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.

Composants d'un service géré pour une application Apache Flink

Pour traiter les données, votre application de service géré pour Apache Flink utilise une application Java/Apache Maven ou Scala qui traite les entrées et produit des sorties à l’aide de l’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.

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

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

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 à la réalisation des exercices

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. Définissez la variable d'JAVA_HOMEenvironnement pour qu'elle pointe vers l'emplacement de votre JDK installation.

  • Nous vous recommandons d’utiliser un environnement de développement (par exemple Eclipse Java Neon ou IntelliJ Idea) pour développer et compiler votre application.

  • Client Git. Installez le client Git si vous ne l’avez pas déjà fait.

  • Apache 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.

Étape 1 : configurer un AWS compte et créer un utilisateur administrateur

Inscrivez-vous pour un Compte AWS

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.

  2. Suivez les instructions en ligne.

    Dans le cadre de la procédure d‘inscription, vous recevrez un appel téléphonique 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 AWSest 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.

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/et en choisissant Mon compte.

Création d'un utilisateur doté d'un accès administratif

Après vous être inscrit à un Compte AWS, sécurisez Utilisateur racine d'un compte AWS AWS IAM Identity Center, activez et créez un utilisateur administratif 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 Consoletant 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 dans le Guide de l‘utilisateur Connexion à AWS .

  2. Activez l'authentification multifactorielle (MFA) pour votre utilisateur root.

    Pour obtenir des instructions, voir Activer un MFA périphérique virtuel pour votre utilisateur Compte AWS root (console) dans le guide de IAM l'utilisateur.

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 dans le Guide de l’utilisateur AWS IAM Identity Center .

  2. Dans IAM Identity Center, accordez 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 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'URLidentifiant envoyé à 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'IAMIdentity Center, consultez la section Connexion au portail AWS d'accès dans le guide de Connexion à AWS l'utilisateur.

Attribution d'un accès à d'autres utilisateurs
  1. Dans IAM Identity Center, créez un ensemble d'autorisations conforme à la meilleure pratique consistant à appliquer les autorisations du moindre privilège.

    Pour obtenir des instructions, consultez Création d’un ensemble d’autorisations dans le Guide de l’utilisateur AWS IAM Identity Center .

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

    Pour obtenir des instructions, consultez Ajout de groupes dans le Guide de l’utilisateur AWS IAM Identity Center .

Octroi d’un accès par programmation

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 ? Pour Par

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.

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 les AWS ressources du Guide de IAM l'utilisateur.
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.

Étape suivante

Configurez le AWS Command Line Interface (AWS CLI)

Étape suivante

Étape 2 : configurer le AWS Command Line Interface (AWS CLI)

Étape 2 : configurer le AWS Command Line Interface (AWS CLI)

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 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  :

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

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

Étape 3 : créer et exécuter un service géré pour l'application Apache Flink

Étape 3 : créer et exécuter un service géré pour l'application Apache Flink

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.

Création de deux flux de données Amazon Kinesis

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

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 for Python (Boto).

  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'))
  2. 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

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
  2. 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) 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 dans Managed Service pour Apache Flink.

Compilez le code de l'application

Dans cette section, vous allez utiliser le compilateur Apache Maven pour créer le code Java pour l’application. Pour plus d'informations sur l'installation d'Apache Maven et du kit de développement Java (JDK), consultezRemplir les conditions préalables pour terminer les exercices.

Pour compiler le code d’application
  1. Pour utiliser le code de votre application, vous devez le compiler et le regrouper dans un JAR fichier. 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 JAR fichier en exécutant la commande suivante dans le répertoire qui contient le pom.xml fichier :

      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 soit télécharger votre package sous forme de JAR fichier, soit compresser votre package et le télécharger sous forme de ZIP fichier. Si vous créez votre application à l'aide du AWS CLI, vous spécifiez le type de contenu de votre code (JARouZIP).

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

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

  2. Choisissez Créer un compartiment.

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

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

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

  6. Choisissez Créer un compartiment.

  7. Dans la console Amazon S3, choisissez le ka-app-code -<username>bucket, puis choisissez Upload.

  8. À 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.

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

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 AWS Identity and Access Management (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.

Création et exécution de l'application (console)

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

Pour créer l’application
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

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

  4. Pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  5. Choisissez Créer une application.

Note

Lorsque vous créez un service géré pour une application Apache Flink à l'aide de la console, vous avez la possibilité de créer un IAM rôle et une politique pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces IAM ressources sont nommées à l'aide du nom de votre application et de votre région, comme suit :

  • Stratégie : kinesis-analytics-service-MyApplication-us-west-2

  • Rôle : kinesisanalytics-MyApplication-us-west-2

Modifier la IAM politique

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

  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.

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

    { "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
  1. Sur la MyApplicationpage, choisissez Configurer.

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

  3. Sous Accès aux ressources de l'application, pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  4. Saisissez :

    ID du groupe Clé Valeur
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  5. Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.

  6. Pour la CloudWatch journalisation, cochez la case Activer.

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

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

Sur la MyApplicationpage, choisissez Stop. Confirmez l’action.

Mise à jour de l'application

À l'aide de la console, vous pouvez mettre à jour les paramètres de l'application, tels que les propriétés de l'application, les paramètres de surveillance, ainsi que l'emplacement ou le nom de fichier de l'applicationJAR. Vous pouvez également recharger l'application JAR depuis le compartiment Amazon S3 si vous devez mettre à jour le code de l'application.

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

Créez et exécutez l'application (AWS CLI)

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
Note

Vous devez créer une stratégie d’autorisations et un rôle pour votre application. Si vous ne créez pas ces IAM ressources, votre application ne pourra 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 associez ensuite la politique à un IAM rôle (que vous créez 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.

{ "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 dans le guide de IAM l'utilisateur.

Note

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

créer un rôle IAM ;

Dans cette section, vous allez créer un IAM rôle que l'application Managed Service for 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 accordez ces autorisations via un IAM rôle. Deux politiques sont associées à chaque IAM rôle. 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 IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

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

    Sélectionnez Next: Permissions (Étape suivante : autorisations).

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

  5. 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 avez maintenant créé un nouveau IAM rôle appeléMF-stream-rw-role. Ensuite, vous mettez à jour les stratégies d’approbation et d’autorisation pour le rôle.

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

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

    2. Choisissez Attacher des stratégies.

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

    4. Choisissez la AKReadSourceStreamWriteSinkStreampolitique, puis choisissez Attacher la politique.

Vous avez maintenant créé le rôle d’exécution de service que votre application utilise pour accéder aux ressources. Prenez note 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 IAM rôle (console) dans le guide de IAM l'utilisateur.

Création du service géré pour l'application Apache Flink
  1. Enregistrez le JSON code suivant dans un fichier nommécreate_request.json. Remplacez le rôle ARN d'exemple par le rôle que vous avez créé précédemment. ARN Remplacez le ARN suffixe du bucket (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" } } ] } } }
  2. Exécutez l’action CreateApplication 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

Dans cette section, vous utilisez l’action StartApplication pour démarrer l’application.

Pour démarrer l’application
  1. Enregistrez le JSON code suivant dans un fichier nomméstart_request.json.

    { "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. 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êt de l’application

Dans cette section, vous allez utiliser l’action StopApplication pour arrêter l’application.

Pour arrêter l’application
  1. Enregistrez le JSON code suivant dans un fichier nomméstop_request.json.

    { "ApplicationName": "test" }
  2. Exécutez l’action StopApplication 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

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, consultezConfigurer la journalisation des applications dans le service géré pour Apache Flink.

Mettre à jour des propriétés d’environnement

Dans cette section, vous utilisez l’action UpdateApplication 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. Enregistrez le JSON code 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" } } ] } } }
  2. 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

Lorsque vous devez mettre à jour le code de votre application avec une nouvelle version de votre package de code, vous utilisez l'UpdateApplication 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.

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 bucket (<username>) avec le suffixe que vous avez choisi dans la Créez deux flux de données Amazon Kinesis 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

Étape 4 : Nettoyer les AWS ressources

Étape 4 : Nettoyer les AWS ressources

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

Supprimer votre application Managed Service for Apache Flink

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

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

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

Supprimer vos flux de données Kinesis

  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

  2. Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.

  3. Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.

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

Supprimer votre objet et votre compartiment Amazon S3

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

  2. Choisissez le ka-app-code -<username> seau.

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

Supprimer vos IAM ressources

  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans la barre de navigation, choisissez Stratégies.

  3. Dans le contrôle du filtre, saisissez kinesis.

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

  5. Choisissez Actions de stratégie, puis Supprimer.

  6. Dans la barre de navigation, choisissez Rôles.

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

  8. Choisissez Supprimer le rôle, puis confirmez la suppression.

Supprimer vos CloudWatch ressources

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

  2. Dans la barre de navigation, choisissez Journaux.

  3. Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.

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

Étape suivante

Étape 5 : étapes suivantes

Étape 5 : étapes suivantes

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 : 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 ETL exemple de end-to-end streaming 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 IAM rôles et les politiques, un CloudWatch tableau de bord et des CloudWatch alarmes.

  • AWS Solution de données de streaming pour 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 : 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 : 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 : formation d'introduction officielle à Apache Flink qui vous permet de commencer à créer des applications évolutives de streamingETL, d'analyse et axées sur les événements.

    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

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

Cette rubrique contient une version du Tutoriel : Commencez à utiliser le DataStream API service géré pour Apache Flink didacticiel qui utilise Apache Flink 1.11.1.

Cette section vous présente les concepts fondamentaux du service géré pour Apache Flink et du 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.

Composants d'un service géré pour une application Apache Flink

Pour traiter les données, votre application de service géré pour Apache Flink utilise une application Java/Apache Maven ou Scala qui traite les entrées et produit des sorties à l’aide de l’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.

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

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

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 à la réalisation des exercices

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. Définissez la variable d'JAVA_HOMEenvironnement pour qu'elle pointe vers l'emplacement de votre JDK installation.

  • Nous vous recommandons d’utiliser un environnement de développement (par exemple Eclipse Java Neon ou IntelliJ Idea) pour développer et compiler votre application.

  • Client Git. Installez le client Git si vous ne l’avez pas déjà fait.

  • Apache 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.

Étape 1 : configurer un AWS compte et créer un utilisateur administrateur

Inscrivez-vous pour un Compte AWS

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.

  2. Suivez les instructions en ligne.

    Dans le cadre de la procédure d‘inscription, vous recevrez un appel téléphonique 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 AWSest 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.

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/et en choisissant Mon compte.

Création d'un utilisateur doté d'un accès administratif

Après vous être inscrit à un Compte AWS, sécurisez Utilisateur racine d'un compte AWS AWS IAM Identity Center, activez et créez un utilisateur administratif 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 Consoletant 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 dans le Guide de l‘utilisateur Connexion à AWS .

  2. Activez l'authentification multifactorielle (MFA) pour votre utilisateur root.

    Pour obtenir des instructions, voir Activer un MFA périphérique virtuel pour votre utilisateur Compte AWS root (console) dans le guide de IAM l'utilisateur.

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 dans le Guide de l’utilisateur AWS IAM Identity Center .

  2. Dans IAM Identity Center, accordez 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 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'URLidentifiant envoyé à 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'IAMIdentity Center, consultez la section Connexion au portail AWS d'accès dans le guide de Connexion à AWS l'utilisateur.

Attribution d'un accès à d'autres utilisateurs
  1. Dans IAM Identity Center, créez un ensemble d'autorisations conforme à la meilleure pratique consistant à appliquer les autorisations du moindre privilège.

    Pour obtenir des instructions, consultez Création d’un ensemble d’autorisations dans le Guide de l’utilisateur AWS IAM Identity Center .

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

    Pour obtenir des instructions, consultez Ajout de groupes dans le Guide de l’utilisateur AWS IAM Identity Center .

Octroi d’un accès par programmation

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 ? Pour Par

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.

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 les AWS ressources du Guide de IAM l'utilisateur.
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.

Étape suivante

Configurez le AWS Command Line Interface (AWS CLI)

Étape 2 : Configuration de l' AWS Command Line Interface (AWS CLI)

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 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  :

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

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

Étape 3 : créer et exécuter un service géré pour l'application Apache Flink

Étape 3 : créer et exécuter un service géré pour l'application Apache Flink

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.

Création de deux flux de données Amazon Kinesis

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

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 for Python (Boto).

  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"))
  2. 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

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
  2. 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) 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 dans Managed Service pour Apache Flink.

Compilez le code de l'application

Dans cette section, vous allez utiliser le compilateur Apache Maven pour créer le code Java pour l’application. Pour plus d'informations sur l'installation d'Apache Maven et du kit de développement Java (JDK), consultezRemplir les conditions préalables pour terminer les exercices.

Pour compiler le code d’application
  1. Pour utiliser le code de votre application, vous devez le compiler et le regrouper dans un JAR fichier. 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 JAR fichier en exécutant la commande suivante dans le répertoire qui contient le pom.xml fichier :

      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 soit télécharger votre package sous forme de JAR fichier, soit compresser votre package et le télécharger sous forme de ZIP fichier. Si vous créez votre application à l'aide du AWS CLI, vous spécifiez le type de contenu de votre code (JARouZIP).

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

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

  2. Choisissez Créer un compartiment.

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

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

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

  6. Choisissez Créer un compartiment.

  7. Dans la console Amazon S3, choisissez le ka-app-code -<username>bucket, puis choisissez Upload.

  8. À 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.

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

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 AWS Identity and Access Management (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.

Création et exécution de l'application (console)

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

Pour créer l’application
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

  3. 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).

  4. Pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  5. Choisissez Créer une application.

Note

Lorsque vous créez un service géré pour une application Apache Flink à l'aide de la console, vous avez la possibilité de créer un IAM rôle et une politique pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces IAM ressources sont nommées à l'aide du nom de votre application et de votre région, comme suit :

  • Stratégie : kinesis-analytics-service-MyApplication-us-west-2

  • Rôle : kinesisanalytics-MyApplication-us-west-2

Modifier la IAM politique

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

  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.

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

    { "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
  1. Sur la MyApplicationpage, choisissez Configurer.

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

  3. Sous Accès aux ressources de l'application, pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

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

  5. Entrez les valeurs et propriétés d’application suivantes :

    ID du groupe Clé Valeur
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  6. Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.

  7. Pour la CloudWatch journalisation, cochez la case Activer.

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

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

Sur la MyApplicationpage, choisissez Stop. Confirmez l’action.

Mise à jour de l'application

À l'aide de la console, vous pouvez mettre à jour les paramètres de l'application, tels que les propriétés de l'application, les paramètres de surveillance, ainsi que l'emplacement ou le nom de fichier de l'applicationJAR. Vous pouvez également recharger l'application JAR depuis le compartiment Amazon S3 si vous devez mettre à jour le code de l'application.

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

Créez et exécutez l'application (AWS CLI)

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
Note

Vous devez créer une stratégie d’autorisations et un rôle pour votre application. Si vous ne créez pas ces IAM ressources, votre application ne pourra 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 associez ensuite la politique à un IAM rôle (que vous créez 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.

{ "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 dans le guide de IAM l'utilisateur.

Note

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

Créez un rôle IAM.

Dans cette section, vous allez créer un IAM rôle que l'application Managed Service for 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 accordez ces autorisations via un IAM rôle. Deux politiques sont associées à chaque IAM rôle. 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 IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

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

    Sélectionnez Next: Permissions (Étape suivante : autorisations).

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

  5. 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 avez maintenant créé un nouveau IAM rôle appeléMF-stream-rw-role. Ensuite, vous mettez à jour les stratégies d’approbation et d’autorisation pour le rôle.

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

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

    2. Choisissez Attacher des stratégies.

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

    4. Choisissez la AKReadSourceStreamWriteSinkStreampolitique, puis choisissez Attacher la politique.

Vous avez maintenant créé le rôle d’exécution de service que votre application utilise pour accéder aux ressources. Prenez note 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 IAM rôle (console) dans le guide de IAM l'utilisateur.

Création du service géré pour l'application Apache Flink
  1. Enregistrez le JSON code suivant dans un fichier nommécreate_request.json. Remplacez le rôle ARN d'exemple par le rôle que vous avez créé précédemment. ARN Remplacez le ARN suffixe du bucket (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" } } ] } } }
  2. Exécutez l’action CreateApplication 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

Dans cette section, vous utilisez l’action StartApplication pour démarrer l’application.

Pour démarrer l’application
  1. Enregistrez le JSON code suivant dans un fichier nomméstart_request.json.

    { "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. 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

Dans cette section, vous allez utiliser l’action StopApplication pour arrêter l’application.

Pour arrêter l’application
  1. Enregistrez le JSON code suivant dans un fichier nomméstop_request.json.

    { "ApplicationName": "test" }
  2. Exécutez l’action StopApplication 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

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, consultezConfigurer la journalisation des applications dans le service géré pour Apache Flink.

Mettre à jour les propriétés d'environnement

Dans cette section, vous utilisez l’action UpdateApplication 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. Enregistrez le JSON code 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" } } ] } } }
  2. 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

Lorsque vous devez mettre à jour le code de votre application avec une nouvelle version de votre package de code, vous utilisez l'UpdateApplication 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.

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 bucket (<username>) avec le suffixe que vous avez choisi dans la Création de deux flux de données Amazon Kinesis 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

Étape 4 : Nettoyer les AWS ressources

Étape 4 : Nettoyer les AWS ressources

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

Supprimer votre application Managed Service for Apache Flink

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

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

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

Supprimer vos flux de données Kinesis

  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

  2. Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.

  3. Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.

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

Supprimer votre objet et votre compartiment Amazon S3

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

  2. Choisissez le ka-app-code -<username> seau.

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

Supprimer quatre ressources IAM

  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans la barre de navigation, choisissez Stratégies.

  3. Dans le contrôle du filtre, saisissez kinesis.

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

  5. Choisissez Actions de stratégie, puis Supprimer.

  6. Dans la barre de navigation, choisissez Rôles.

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

  8. Choisissez Supprimer le rôle, puis confirmez la suppression.

Supprimer vos CloudWatch ressources

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

  2. Dans la barre de navigation, choisissez Journaux.

  3. Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.

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

Étape suivante

Étape 5 : étapes suivantes

Étape 5 : étapes suivantes

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 : 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 ETL exemple de end-to-end streaming 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 IAM rôles et les politiques, un CloudWatch tableau de bord et des CloudWatch alarmes.

  • AWS Solution de données de streaming pour 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 : 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 : 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 : formation d'introduction officielle à Apache Flink qui vous permet de commencer à créer des applications évolutives de streamingETL, d'analyse et axées sur les événements.

    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 : GitHub référentiel contenant une grande variété d'exemples d'applications Apache Flink.

Pour démarrer : Flink 1.8.2 - obsolète

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

Cette rubrique contient une version du Tutoriel : Commencez à utiliser le DataStream API service géré pour Apache Flink didacticiel qui utilise Apache Flink 1.8.2.

Composants du service géré pour l'application Apache Flink

Pour traiter les données, votre application de service géré pour Apache Flink utilise une application Java/Apache Maven ou Scala qui traite les entrées et produit des sorties à l’aide de l’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.

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

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

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 à la réalisation des exercices

Pour exécuter la procédure indiquée dans ce guide, vous devez disposer des éléments suivants :

Pour démarrer, accédez à Étape 1 : configurer un AWS compte et créer un utilisateur administrateur.

Étape 1 : configurer un AWS compte et créer un utilisateur administrateur

Inscrivez-vous pour un Compte AWS

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.

  2. Suivez les instructions en ligne.

    Dans le cadre de la procédure d‘inscription, vous recevrez un appel téléphonique 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 AWSest 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.

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/et en choisissant Mon compte.

Création d'un utilisateur doté d'un accès administratif

Après vous être inscrit à un Compte AWS, sécurisez Utilisateur racine d'un compte AWS AWS IAM Identity Center, activez et créez un utilisateur administratif 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 Consoletant 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 dans le Guide de l‘utilisateur Connexion à AWS .

  2. Activez l'authentification multifactorielle (MFA) pour votre utilisateur root.

    Pour obtenir des instructions, voir Activer un MFA périphérique virtuel pour votre utilisateur Compte AWS root (console) dans le guide de IAM l'utilisateur.

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 dans le Guide de l’utilisateur AWS IAM Identity Center .

  2. Dans IAM Identity Center, accordez 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 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'URLidentifiant envoyé à 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'IAMIdentity Center, consultez la section Connexion au portail AWS d'accès dans le guide de Connexion à AWS l'utilisateur.

Attribution d'un accès à d'autres utilisateurs
  1. Dans IAM Identity Center, créez un ensemble d'autorisations conforme à la meilleure pratique consistant à appliquer les autorisations du moindre privilège.

    Pour obtenir des instructions, consultez Création d’un ensemble d’autorisations dans le Guide de l’utilisateur AWS IAM Identity Center .

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

    Pour obtenir des instructions, consultez Ajout de groupes dans le Guide de l’utilisateur AWS IAM Identity Center .

Octroi d’un accès par programmation

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 ? Pour Par

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.

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 les AWS ressources du Guide de IAM l'utilisateur.
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.

Étape 2 : configurer le AWS Command Line Interface (AWS CLI)

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 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  :

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

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

Étape 3 : créer et exécuter un service géré pour l'application Apache Flink

Étape 3 : créer et exécuter un service géré pour l'application Apache Flink

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.

Création de deux flux de données Amazon Kinesis

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

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 for Python (Boto).

  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"))
  2. 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

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
  2. 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) 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 dans Managed Service pour Apache Flink.

Compilez le code de l'application

Dans cette section, vous allez utiliser le compilateur Apache Maven pour créer le code Java pour l’application. Pour plus d'informations sur l'installation d'Apache Maven et du kit de développement Java (JDK), consultezConditions préalables à la réalisation des exercices.

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 de plus amples informations, veuillez consulter Utilisation du connecteur Apache Flink Kinesis Streams avec les versions précédentes d'Apache Flink.

Pour compiler le code d’application
  1. Pour utiliser le code de votre application, vous devez le compiler et le regrouper dans un JAR fichier. 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 JAR fichier en exécutant la commande suivante dans le répertoire qui contient le pom.xml fichier :

      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 soit télécharger votre package sous forme de JAR fichier, soit compresser votre package et le télécharger sous forme de ZIP fichier. Si vous créez votre application à l'aide du AWS CLI, vous spécifiez le type de contenu de votre code (JARouZIP).

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

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

  2. Choisissez Créer un compartiment.

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

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

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

  6. Choisissez Créer un compartiment.

  7. Dans la console Amazon S3, choisissez le ka-app-code -<username>bucket, puis choisissez Upload.

  8. À 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.

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

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 AWS Identity and Access Management (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.

Création et exécution de l'application (console)

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

Pour créer l’application
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

  3. 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).

  4. Pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  5. Choisissez Créer une application.

Note

Lorsque vous créez un service géré pour une application Apache Flink à l'aide de la console, vous avez la possibilité de créer un IAM rôle et une politique pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces IAM ressources sont nommées à l'aide du nom de votre application et de votre région, comme suit :

  • Stratégie : kinesis-analytics-service-MyApplication-us-west-2

  • Rôle : kinesisanalytics-MyApplication-us-west-2

Modifier la IAM politique

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

  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.

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

    { "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
  1. Sur la MyApplicationpage, choisissez Configurer.

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

  3. Sous Accès aux ressources de l'application, pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  4. Entrez les valeurs et propriétés d’application suivantes :

    ID du groupe Clé Valeur
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  5. Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.

  6. Pour la CloudWatch journalisation, cochez la case Activer.

  7. 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
  1. Sur la MyApplicationpage, choisissez Exécuter. Confirmez l’action.

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

Arrêtez l'application

Sur la MyApplicationpage, choisissez Stop. Confirmez l’action.

Mise à jour de l'application

À l'aide de la console, vous pouvez mettre à jour les paramètres de l'application, tels que les propriétés de l'application, les paramètres de surveillance, ainsi que l'emplacement ou le nom de fichier de l'applicationJAR. Vous pouvez également recharger l'application JAR depuis le compartiment Amazon S3 si vous devez mettre à jour le code de l'application.

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

Créez et exécutez l'application (AWS CLI)

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
Note

Vous devez créer une stratégie d’autorisations et un rôle pour votre application. Si vous ne créez pas ces IAM ressources, votre application ne pourra 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 associez ensuite la politique à un IAM rôle (que vous créez 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.

{ "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 dans le guide de IAM l'utilisateur.

Note

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

créer un rôle IAM ;

Dans cette section, vous allez créer un IAM rôle que l'application Managed Service for 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 accordez ces autorisations via un IAM rôle. Deux politiques sont associées à chaque IAM rôle. 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 IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

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

    Sélectionnez Next: Permissions (Étape suivante : autorisations).

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

  5. 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 avez maintenant créé un nouveau IAM rôle appeléMF-stream-rw-role. Ensuite, vous mettez à jour les stratégies d’approbation et d’autorisation pour le rôle.

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

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

    2. Choisissez Attacher des stratégies.

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

    4. Choisissez la AKReadSourceStreamWriteSinkStreampolitique, puis choisissez Attacher la politique.

Vous avez maintenant créé le rôle d’exécution de service que votre application utilise pour accéder aux ressources. Prenez note 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 IAM rôle (console) dans le guide de IAM l'utilisateur.

Création du service géré pour l'application Apache Flink
  1. Enregistrez le JSON code suivant dans un fichier nommécreate_request.json. Remplacez le rôle ARN d'exemple par le rôle que vous avez créé précédemment. ARN Remplacez le ARN suffixe du bucket (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" } } ] } } }
  2. Exécutez l’action CreateApplication 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

Dans cette section, vous utilisez l’action StartApplication pour démarrer l’application.

Pour démarrer l’application
  1. Enregistrez le JSON code suivant dans un fichier nomméstart_request.json.

    { "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. 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

Dans cette section, vous allez utiliser l’action StopApplication pour arrêter l’application.

Pour arrêter l’application
  1. Enregistrez le JSON code suivant dans un fichier nomméstop_request.json.

    { "ApplicationName": "test" }
  2. Exécutez l’action StopApplication 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

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, consultezConfigurer la journalisation des applications dans le service géré pour Apache Flink.

Mettre à jour les propriétés d'environnement

Dans cette section, vous utilisez l’action UpdateApplication 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. Enregistrez le JSON code 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" } } ] } } }
  2. 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

Lorsque vous devez mettre à jour le code de votre application avec une nouvelle version de votre package de code, vous utilisez l'UpdateApplication 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.

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 bucket (<username>) avec le suffixe que vous avez choisi dans la Création de deux flux de données Amazon Kinesis 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

Étape 4 : Nettoyer les AWS ressources

Étape 4 : Nettoyer les AWS ressources

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

Supprimer votre application Managed Service for Apache Flink

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

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

  3. Choisissez Configurer.

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

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

Supprimer vos flux de données Kinesis

  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

  2. Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.

  3. Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.

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

Supprimer votre objet et votre compartiment Amazon S3

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

  2. Choisissez le ka-app-code -<username> seau.

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

Supprimer vos IAM ressources

  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans la barre de navigation, choisissez Stratégies.

  3. Dans le contrôle du filtre, saisissez kinesis.

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

  5. Choisissez Actions de stratégie, puis Supprimer.

  6. Dans la barre de navigation, choisissez Rôles.

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

  8. Choisissez Supprimer le rôle, puis confirmez la suppression.

Supprimer vos CloudWatch ressources

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

  2. Dans la barre de navigation, choisissez Journaux.

  3. Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.

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

Pour démarrer : Flink 1.6.2 - obsolète

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

Cette rubrique contient une version du Tutoriel : Commencez à utiliser le DataStream API service géré pour Apache Flink didacticiel qui utilise Apache Flink 1.6.2.

Composants d'un service géré pour une application Apache Flink

Pour traiter les données, votre application de service géré pour Apache Flink utilise une application Java/Apache Maven ou Scala qui traite les entrées et produit des sorties à l’aide de l’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.

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

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

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 à la réalisation des exercices

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 8. Définissez la variable d'JAVA_HOMEenvironnement pour qu'elle pointe vers l'emplacement de votre JDK installation.

  • Nous vous recommandons d’utiliser un environnement de développement (par exemple Eclipse Java Neon ou IntelliJ Idea) pour développer et compiler votre application.

  • Client Git. Installez le client Git si vous ne l’avez pas déjà fait.

  • Apache 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.

Étape 1 : configurer un AWS compte et créer un utilisateur administrateur

Inscrivez-vous pour un Compte AWS

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.

  2. Suivez les instructions en ligne.

    Dans le cadre de la procédure d‘inscription, vous recevrez un appel téléphonique 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 AWSest 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.

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/et en choisissant Mon compte.

Création d'un utilisateur doté d'un accès administratif

Après vous être inscrit à un Compte AWS, sécurisez Utilisateur racine d'un compte AWS AWS IAM Identity Center, activez et créez un utilisateur administratif 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 Consoletant 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 dans le Guide de l‘utilisateur Connexion à AWS .

  2. Activez l'authentification multifactorielle (MFA) pour votre utilisateur root.

    Pour obtenir des instructions, voir Activer un MFA périphérique virtuel pour votre utilisateur Compte AWS root (console) dans le guide de IAM l'utilisateur.

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 dans le Guide de l’utilisateur AWS IAM Identity Center .

  2. Dans IAM Identity Center, accordez 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 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'URLidentifiant envoyé à 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'IAMIdentity Center, consultez la section Connexion au portail AWS d'accès dans le guide de Connexion à AWS l'utilisateur.

Attribution d'un accès à d'autres utilisateurs
  1. Dans IAM Identity Center, créez un ensemble d'autorisations conforme à la meilleure pratique consistant à appliquer les autorisations du moindre privilège.

    Pour obtenir des instructions, consultez Création d’un ensemble d’autorisations dans le Guide de l’utilisateur AWS IAM Identity Center .

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

    Pour obtenir des instructions, consultez Ajout de groupes dans le Guide de l’utilisateur AWS IAM Identity Center .

Octroi d’un accès par programmation

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 ? Pour Par

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.

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 les AWS ressources du Guide de IAM l'utilisateur.
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.

Étape 2 : configurer le AWS Command Line Interface (AWS CLI)

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 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  :

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

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

Étape 3 : créer et exécuter un service géré pour l'application Apache Flink

Étape 3 : créer et exécuter un service géré pour l'application Apache Flink

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.

Création de deux flux de données Amazon Kinesis

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

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 for Python (Boto).

  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"))
  2. 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

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
  2. 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) 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 dans Managed Service pour Apache Flink.

Compilez le code de l'application

Dans cette section, vous allez utiliser le compilateur Apache Maven pour créer le code Java pour l’application. Pour plus d'informations sur l'installation d'Apache Maven et du kit de développement Java (JDK), consultezConditions préalables à la réalisation des exercices.

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.

Pour compiler le code d’application
  1. Pour utiliser le code de votre application, vous devez le compiler et le regrouper dans un JAR fichier. 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 JAR fichier en exécutant la commande suivante dans le répertoire qui contient le pom.xml fichier :

      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.

    • À l’aide de votre environnement de développement. Consultez la documentation de votre environnement de développement pour plus de détails.

    Vous pouvez soit télécharger votre package sous forme de JAR fichier, soit compresser votre package et le télécharger sous forme de ZIP fichier. Si vous créez votre application à l'aide du AWS CLI, vous spécifiez le type de contenu de votre code (JARouZIP).

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

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

  2. Choisissez Créer un compartiment.

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

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

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

  6. Choisissez Créer un compartiment.

  7. Dans la console Amazon S3, choisissez le ka-app-code -<username>bucket, puis choisissez Upload.

  8. À 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.

  9. À l'étape Définir des autorisations, conservez les paramètres. Choisissez Suivant.

  10. À l'étape Définir les propriétés, conservez les paramètres. Sélectionnez 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

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 AWS Identity and Access Management (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.

Création et exécution de l'application (console)

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

Pour créer l’application
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

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

  4. Pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  5. Choisissez Créer une application.

Note

Lorsque vous créez un service géré pour une application Apache Flink à l'aide de la console, vous avez la possibilité de créer un IAM rôle et une politique pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces IAM ressources sont nommées à l'aide du nom de votre application et de votre région, comme suit :

  • Stratégie : kinesis-analytics-service-MyApplication-us-west-2

  • Rôle : kinesisanalytics-MyApplication-us-west-2

Modifier la IAM politique

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

  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.

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

    { "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
  1. Sur la MyApplicationpage, choisissez Configurer.

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

  3. Sous Accès aux ressources de l'application, pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  4. Entrez les valeurs et propriétés d’application suivantes :

    ID du groupe Clé Valeur
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  5. Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.

  6. Pour la CloudWatch journalisation, cochez la case Activer.

  7. 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
  1. Sur la MyApplicationpage, choisissez Exécuter. Confirmez l’action.

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

Arrêtez l'application

Sur la MyApplicationpage, choisissez Stop. Confirmez l’action.

Mise à jour de l'application

À l'aide de la console, vous pouvez mettre à jour les paramètres de l'application, tels que les propriétés de l'application, les paramètres de surveillance, ainsi que l'emplacement ou le nom de fichier de l'applicationJAR. Vous pouvez également recharger l'application JAR depuis le compartiment Amazon S3 si vous devez mettre à jour le code de l'application.

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

Créez et exécutez l'application (AWS CLI)

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

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 associez ensuite la politique à un IAM rôle (que vous créez 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.

{ "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 dans le guide de IAM l'utilisateur.

Note

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

créer un rôle IAM ;

Dans cette section, vous allez créer un IAM rôle que l'application Managed Service for 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 accordez ces autorisations via un IAM rôle. Deux politiques sont associées à chaque IAM rôle. 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 IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

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

    Sélectionnez Next: Permissions (Étape suivante : autorisations).

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

  5. 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 avez maintenant créé un nouveau IAM rôle appeléMF-stream-rw-role. Ensuite, vous mettez à jour les stratégies d’approbation et d’autorisation pour le rôle.

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

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

    2. Choisissez Attacher des stratégies.

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

    4. Choisissez la AKReadSourceStreamWriteSinkStreampolitique, puis choisissez Attacher la politique.

Vous avez maintenant créé le rôle d’exécution de service que votre application utilise pour accéder aux ressources. Prenez note 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 IAM rôle (console) dans le guide de IAM l'utilisateur.

Création du service géré pour l'application Apache Flink
  1. Enregistrez le JSON code suivant dans un fichier nommécreate_request.json. Remplacez le rôle ARN d'exemple par le rôle que vous avez créé précédemment. ARN Remplacez le ARN suffixe du bucket (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" } } ] } } }
  2. Exécutez l’action CreateApplication 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

Dans cette section, vous utilisez l’action StartApplication pour démarrer l’application.

Pour démarrer l’application
  1. Enregistrez le JSON code suivant dans un fichier nomméstart_request.json.

    { "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. 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

Dans cette section, vous allez utiliser l’action StopApplication pour arrêter l’application.

Pour arrêter l’application
  1. Enregistrez le JSON code suivant dans un fichier nomméstop_request.json.

    { "ApplicationName": "test" }
  2. Exécutez l’action StopApplication 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

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, consultezConfigurer la journalisation des applications dans le service géré pour Apache Flink.

Mettre à jour les propriétés d'environnement

Dans cette section, vous utilisez l’action UpdateApplication 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. Enregistrez le JSON code 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" } } ] } } }
  2. 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

Lorsque vous devez mettre à jour le code de votre application avec une nouvelle version de votre package de code, vous utilisez l'UpdateApplication 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 bucket (<username>) avec le suffixe que vous avez choisi dans la Création de deux flux de données Amazon Kinesis 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

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

Supprimer votre application Managed Service for Apache Flink

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

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

  3. Choisissez Configurer.

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

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

Supprimer vos flux de données Kinesis

  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

  2. Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.

  3. Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.

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

Supprimer votre objet et votre compartiment Amazon S3

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

  2. Choisissez le ka-app-code -<username> seau.

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

Supprimer vos IAM ressources

  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans la barre de navigation, choisissez Stratégies.

  3. Dans le contrôle du filtre, saisissez kinesis.

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

  5. Choisissez Actions de stratégie, puis Supprimer.

  6. Dans la barre de navigation, choisissez Rôles.

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

  8. Choisissez Supprimer le rôle, puis confirmez la suppression.

Supprimer vos CloudWatch ressources

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

  2. Dans la barre de navigation, choisissez Journaux.

  3. Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.

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

Exemples de versions antérieures (anciennes) pour le service géré pour Apache Flink

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 :

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, les commandes et les IAM rôles de votre application de manière appropriée.

DataStream APIexemples

Les exemples suivants montrent comment créer des applications à l'aide d'Apache Flink DataStream API.

Exemple : fenêtre à culbuter

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 le DataStream API service géré pour Apache Flink.

Création de ressources dépendantes

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 dans le Guide du développeur Amazon Kinesis Data Streams. Nommez votre flux de données ExampleInputStream etExampleOutputStream.

  • Comment créer un compartiment S3 ? 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

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 for Python (Boto).

  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'))
  2. 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

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.

  2. 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
  3. 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

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 Remplissez les prérequis requis dans le didacticiel Tutoriel : Commencez à utiliser le DataStream API service géré pour Apache Flink.

  2. 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 JAR fichier de l'application (target/aws-kinesis-analytics-java-apps-1.0.jar).

Téléchargez le code Java de streaming Apache Flink

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.

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

  2. À 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.

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

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

Pour créer l’application
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

  3. 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).

  4. Pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  5. Choisissez Créer une application.

Note

Lorsque vous créez un service géré pour une application Apache Flink à l'aide de la console, vous avez la possibilité de créer un IAM rôle et une politique pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces IAM ressources sont nommées à l'aide du nom de votre application et de votre région, comme suit :

  • Stratégie : kinesis-analytics-service-MyApplication-us-west-2

  • Rôle : kinesisanalytics-MyApplication-us-west-2

Modifier la IAM politique

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

  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.

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

    { "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
  1. Sur la MyApplicationpage, choisissez Configurer.

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

  3. Sous Accès aux ressources de l'application, pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

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

  5. Pour la CloudWatch journalisation, cochez la case Activer.

  6. 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
  1. Sur la MyApplicationpage, choisissez Exécuter. Laissez l’option Exécuter sans instantané sélectionnée et confirmez l’action.

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

Nettoyage des ressources AWS

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

Supprimer votre application Managed Service for Apache Flink
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

  2. dans le panneau Managed Service for Apache Flink, sélectionnez MyApplication.

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

Supprimer vos flux de données Kinesis
  1. Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com

  2. Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.

  3. Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.

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

Supprimer votre objet et votre compartiment Amazon S3
  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Choisissez le ka-app-code -<username> seau.

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

Supprimer vos IAM ressources
  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans la barre de navigation, choisissez Stratégies.

  3. Dans le contrôle du filtre, saisissez kinesis.

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

  5. Choisissez Actions de stratégie, puis Supprimer.

  6. Dans la barre de navigation, choisissez Rôles.

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

  8. Choisissez Supprimer le rôle, puis confirmez la suppression.

Supprimer vos CloudWatch ressources
  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans la barre de navigation, choisissez Journaux.

  3. Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.

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

Exemple : fenêtre coulissante

Note

Pour configurer les prérequis requis pour cet exercice, commencez par terminer l’exercice Tutoriel : Commencez à utiliser le DataStream API service géré pour Apache Flink.

Création de ressources dépendantes

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 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 ? 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

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 for Python (Boto).

  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"))
  2. 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

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.

  2. 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
  3. 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

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 Remplissez les prérequis requis dans le didacticiel Tutoriel : Commencez à utiliser le DataStream API service géré pour Apache Flink.

  2. 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 JAR fichier de l'application (target/aws-kinesis-analytics-java-apps-1.0.jar).

Téléchargez le code Java de streaming Apache Flink

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.

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

  2. À 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.

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

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

Pour créer l’application
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

  3. 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).

  4. Pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  5. Choisissez Créer une application.

Note

Lorsque vous créez un service géré pour une application Apache Flink à l'aide de la console, vous avez la possibilité de créer un IAM rôle et une politique pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces IAM ressources sont nommées à l'aide du nom de votre application et de votre région, comme suit :

  • Stratégie : kinesis-analytics-service-MyApplication-us-west-2

  • Rôle : kinesisanalytics-MyApplication-us-west-2

Modifier la IAM politique

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

  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.

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

    { "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
  1. Sur la MyApplicationpage, choisissez Configurer.

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

  3. Sous Accès aux ressources de l'application, pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

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

  5. Pour la CloudWatch journalisation, cochez la case Activer.

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

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 ListApplicationsdes actions DescribeApplicationou.

Exécutez l'application

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

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

Supprimer votre application Managed Service for Apache Flink
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

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

Supprimer vos flux de données Kinesis
  1. Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com

  2. Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.

  3. Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.

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

Supprimer votre objet et votre compartiment Amazon S3
  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Choisissez le ka-app-code -<username> seau.

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

Supprimer vos IAM ressources
  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans la barre de navigation, choisissez Stratégies.

  3. Dans le contrôle du filtre, saisissez kinesis.

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

  5. Choisissez Actions de stratégie, puis Supprimer.

  6. Dans la barre de navigation, choisissez Rôles.

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

  8. Choisissez Supprimer le rôle, puis confirmez la suppression.

Supprimer vos CloudWatch ressources
  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans la barre de navigation, choisissez Journaux.

  3. Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.

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

Exemple : écriture dans un compartiment Amazon S3

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 le DataStream API service géré pour Apache Flink.

Création de ressources dépendantes

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 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 ? 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

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 for Python (Boto).

  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'))
  2. 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

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.

  2. 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
  3. 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 sujetStreamingFileSink, consultez StreamingFileSinkla documentation d'Apache Flink.

Modifier le code de l'application

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

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 Remplissez les prérequis requis dans le didacticiel Tutoriel : Commencez à utiliser le DataStream API service géré pour Apache Flink.

  2. Compilez l’application à l’aide de la commande suivante :

    mvn package -Dflink.version=1.15.3

La compilation de l'application crée le JAR fichier 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

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.

  1. Dans la console Amazon S3, choisissez le ka-app-code -<username>bucket, accédez au dossier de code, puis choisissez Upload.

  2. À 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.

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

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

Pour créer l’application
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

  3. 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).

  4. Pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  5. Choisissez Créer une application.

    Note

    Lorsque vous créez un service géré pour une application Apache Flink à l'aide de la console, vous avez la possibilité de créer un IAM rôle et une politique pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces IAM ressources sont nommées à l'aide du nom de votre application et de votre 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).

  6. Pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  7. 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 IAM rôle et une politique pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces IAM ressources sont nommées à l'aide du nom de votre application et de votre région, comme suit :

  • Stratégie : kinesis-analytics-service-MyApplication-us-west-2

  • Rôle : kinesisanalytics-MyApplication-us-west-2

Modifier la IAM politique

Modifiez la IAM politique pour ajouter des autorisations d'accès au flux de données Kinesis.

  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.

  4. Ajoutez la section mise en surbrillance dans l’exemple de stratégie suivant à la politique. Remplacez le compte d'exemple IDs (012345678901) avec 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
  1. Sur la MyApplicationpage, choisissez Configurer.

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

  3. Sous Accès aux ressources de l'application, pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

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

  5. Pour la CloudWatch journalisation, cochez la case Activer.

  6. 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
  1. Sur la MyApplicationpage, choisissez Exécuter. Laissez l’option Exécuter sans instantané sélectionnée et confirmez l’action.

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

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

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

Configuration du partitionnement des données

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;
  2. 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. 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 pour obtenir plus d’informations sur un enregistrement afin de déterminer son dossier de destination.

Configuration de la fréquence de lecture

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

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' UpdateApplicationaction 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'ListApplicationsaction.

  2. Ajoutez l’instruction d’importation suivante au début du fichier S3StreamingSinkJob.java :

    import java.util.concurrent.TimeUnit;
  3. 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 dans la documentation d’Apache Flink.

Nettoyer les AWS ressources

Cette section inclut les procédures de nettoyage AWS des ressources que vous avez créées dans le didacticiel Amazon S3.

Supprimer votre application Managed Service for Apache Flink
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

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

Supprimer votre flux de données Kinesis
  1. Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com

  2. Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.

  3. Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.

Supprimer vos objets et votre compartiment Amazon S3
  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Choisissez le ka-app-code -<username> seau.

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

Supprimer vos IAM ressources
  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans la barre de navigation, choisissez Stratégies.

  3. Dans le contrôle du filtre, saisissez kinesis.

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

  5. Choisissez Actions de stratégie, puis Supprimer.

  6. Dans la barre de navigation, choisissez Rôles.

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

  8. Choisissez Supprimer le rôle, puis confirmez la suppression.

Supprimer vos CloudWatch ressources
  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans la barre de navigation, choisissez Journaux.

  3. Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.

  4. 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 MSK cluster vers un autre dans un VPC

Le didacticiel suivant explique comment créer un Amazon VPC avec un MSK cluster Amazon et deux rubriques, et comment créer un service géré pour une application Apache Flink qui lit un MSK sujet Amazon et écrit sur un autre.

Note

Pour configurer les prérequis requis pour cet exercice, commencez par terminer l’exercice Tutoriel : Commencez à utiliser le DataStream API service géré pour Apache Flink.

Création d'un Amazon VPC avec un MSK cluster Amazon

Pour créer un exemple VPC et un MSK cluster Amazon auquel accéder depuis une application Managed Service for Apache Flink, suivez le MSK didacticiel Getting Started Using Amazon.

Lorsque vous avez terminé le didacticiel, notez ce qui suit :

  • À l’étape 3 : création d’une rubrique, 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 ClusterArn avec celui ARN de votre MSK cluster) :

    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

Dans cette section, vous allez télécharger et compiler le JAR fichier de candidature. 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.

  2. 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
  3. 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.

  4. Utilisez l'outil Maven en ligne de commande ou votre environnement de développement préféré pour créer le fichier. JAR Pour compiler le JAR fichier à l'aide de l'outil Maven en ligne de commande, entrez 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

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 le DataStream API service géré pour Apache Flink.

Note

Si vous avez supprimé le compartiment Amazon S3 du didacticiel Mise en route, suivez à nouveau l’étape Téléchargez le JAR fichier de code de l'application.

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

  2. À 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.

  3. 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
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink.

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

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

  4. Pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  5. Choisissez Créer une application.

Note

Lorsque vous créez un service géré pour une application Apache Flink à l'aide de la console, vous avez la possibilité de créer un IAM rôle et une politique pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces IAM ressources sont nommées à l'aide du nom de votre application et de votre région, comme suit :

  • Stratégie : kinesis-analytics-service-MyApplication-us-west-2

  • Rôle : kinesisanalytics-MyApplication-us-west-2

Configuration de l'application
  1. Sur la MyApplicationpage, choisissez Configurer.

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

  3. Sous Accès aux ressources de l'application, pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

    Note

    Lorsque vous spécifiez des ressources d'application à l'aide de la console (comme CloudWatch Logs ou AmazonVPC), la console modifie votre rôle d'exécution d'application pour autoriser l'accès à ces ressources.

  4. Sous Propriétés, sélectionnez Ajouter un groupe. Saisissez les propriétés suivantes :

    ID du groupe Clé Valeur
    KafkaSource topic AWS KafkaTutorialTopic
    KafkaSource serveurs bootstrap The bootstrap server list you saved previously
    KafkaSource security.protocol SSL
    KafkaSource ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts
    KafkaSource ssl.truststore.password changeit
    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 :

    ID du groupe Clé Valeur
    KafkaSink topic AWS KafkaTutorialTopicDestination
    KafkaSink serveurs bootstrap The bootstrap server list you saved previously
    KafkaSink security.protocol SSL
    KafkaSink ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts
    KafkaSink ssl.truststore.password changeit
    KafkaSink transaction.timeout.ms 1 000

    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 MSK cluster VPC et avec Amazon. Pour obtenir plus d’informations sur l’utilisation des propriétés, consultez Utiliser les propriétés d'exécution dans Managed Service pour Apache Flink.

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

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

  7. Pour la CloudWatch journalisation, cochez la case Activer.

  8. Dans la section Virtual Private Cloud (VPC), choisissez le VPC à associer à votre application. Choisissez les sous-réseaux et le groupe de sécurité associés VPC que vous souhaitez que l'application utilise pour accéder aux VPC ressources.

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

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

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 rédiger et lire des enregistrements issus des rubriques, suivez les étapes décrites à l'étape 6 : Produire et consommer des données du MSK didacticiel Getting Started Using Amazon.

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 sectionImpossible d'accéder aux ressources d'un VPC de la rubrique Résoudre les problèmes liés au service géré pour Apache Flink.

Exemple : utiliser un EFO consommateur avec un flux de données Kinesis

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 Enhanced EFO Fan-Out (). Si un client Kinesis l'utiliseEFO, 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 EFO avec les consommateurs Kinesis, voir FLIP-128 : Enhanced Fan Out for 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 le DataStream API service géré pour Apache Flink.

Création de ressources dépendantes

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 dans le Guide du développeur Amazon Kinesis Data Streams. Nommez votre flux de données ExampleInputStream etExampleOutputStream.

  • Comment créer un compartiment S3 ? 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

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 for Python (Boto).

  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'))
  2. 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

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.

  2. 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
  3. 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 EFO consommateur en définissant les paramètres suivants sur le consommateur Kinesis :

    • RECORD_ PUBLISHER _ TYPE : Définissez ce paramètre sur EFOpour que votre application utilise un EFO consommateur pour accéder aux données Kinesis Data Stream.

    • EFO_ CONSUMER _ NAME : 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 EFO consommateur 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

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 Remplissez les prérequis requis dans le didacticiel Tutoriel : Commencez à utiliser le DataStream API service géré pour Apache Flink.

  2. 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 JAR fichier de l'application (target/aws-kinesis-analytics-java-apps-1.0.jar).

Téléchargez le code Java de streaming Apache Flink

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.

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

  2. À 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.

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

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

Pour créer l’application
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

  3. 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).

  4. Pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  5. Choisissez Créer une application.

Note

Lorsque vous créez un service géré pour une application Apache Flink à l'aide de la console, vous avez la possibilité de créer un IAM rôle et une politique pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces IAM ressources sont nommées à l'aide du nom de votre application et de votre région, comme suit :

  • Stratégie : kinesis-analytics-service-MyApplication-us-west-2

  • Rôle : kinesisanalytics-MyApplication-us-west-2

Modifier la IAM politique

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

  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.

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

    Note

    Ces autorisations permettent à l'application d'accéder au EFO consommateur.

    { "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
  1. Sur la MyApplicationpage, choisissez Configurer.

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

  3. Sous Accès aux ressources de l'application, pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  4. Sous Propriétés, sélectionnez Créer un groupe.

  5. Entrez les valeurs et propriétés d’application suivantes :

    ID du groupe Clé Valeur
    ConsumerConfigProperties flink.stream.recordpublisher EFO
    ConsumerConfigProperties flink.stream.efo.consumername basic-efo-flink-app
    ConsumerConfigProperties INPUT_STREAM ExampleInputStream
    ConsumerConfigProperties flink.inputstream.initpos LATEST
    ConsumerConfigProperties AWS_REGION us-west-2
  6. Sous Propriétés, sélectionnez Créer un groupe.

  7. Entrez les valeurs et propriétés d’application suivantes :

    ID du groupe Clé Valeur
    ProducerConfigProperties OUTPUT_STREAM ExampleOutputStream
    ProducerConfigProperties AWS_REGION us-west-2
    ProducerConfigProperties AggregationEnabled false
  8. Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.

  9. Pour la CloudWatch journalisation, cochez la case Activer.

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

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

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

Supprimer votre application Managed Service for Apache Flink
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

  2. dans le panneau Managed Service for Apache Flink, sélectionnez MyApplication.

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

Supprimer vos flux de données Kinesis
  1. Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com

  2. Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.

  3. Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.

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

Supprimer votre objet et votre compartiment Amazon S3
  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Choisissez le ka-app-code -<username> seau.

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

Supprimer vos IAM ressources
  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans la barre de navigation, choisissez Stratégies.

  3. Dans le contrôle du filtre, saisissez kinesis.

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

  5. Choisissez Actions de stratégie, puis Supprimer.

  6. Dans la barre de navigation, choisissez Rôles.

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

  8. Choisissez Supprimer le rôle, puis confirmez la suppression.

Supprimer vos CloudWatch ressources
  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans la barre de navigation, choisissez Journaux.

  3. Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.

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

Exemple : écrire dans Firehose

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 le DataStream API service géré pour Apache Flink.

Création de ressources dépendantes

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 :

Écrire des exemples d'enregistrements dans le flux d'entrée

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 for Python (Boto).

  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'))
  2. 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

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

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 Remplissez les prérequis requis dans le didacticiel Tutoriel : Commencez à utiliser le DataStream API service géré pour Apache Flink.

  2. Pour utiliser le connecteur Kinesis pour l’application suivante, vous devez télécharger, construire et installer Apache Maven. Pour de plus amples informations, veuillez consulter Utilisation du connecteur Apache Flink Kinesis Streams avec les versions précédentes d'Apache Flink.

  3. 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 JAR fichier de l'application (target/aws-kinesis-analytics-java-apps-1.0.jar).

Téléchargez le code Java de streaming Apache Flink

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.

Pour charger le code d’application
  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans la console, choisissez le ka-app-code -<username>bucket, puis choisissez Upload.

  3. À 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.

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

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 AWS Identity and Access Management (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.

Création et exécution de l'application (console)

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

Pour créer l’application
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

  3. 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).

  4. Pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  5. Choisissez Créer une application.

Note

Lorsque vous créez l'application à l'aide de la console, vous avez la possibilité de créer un IAM rôle et une politique pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces IAM ressources sont nommées à l'aide du nom de votre application et de votre région, comme suit :

  • Stratégie : kinesis-analytics-service-MyApplication-us-west-2

  • Rôle : kinesisanalytics-MyApplication-us-west-2

Modifier la IAM politique

Modifiez la IAM politique pour ajouter des autorisations d'accès au flux de données Kinesis et au flux Firehose.

  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.

  4. Ajoutez la section mise en surbrillance dans l’exemple de stratégie suivant à la politique. Remplacez toutes les instances du compte d'exemple IDs (012345678901) avec votre identifiant de compte.

    { "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
  1. Sur la MyApplicationpage, choisissez Configurer.

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

  3. Sous Accès aux ressources de l'application, pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

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

  5. Pour la CloudWatch journalisation, cochez la case Activer.

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

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

Sur la MyApplicationpage, choisissez Stop. Confirmez l’action.

Mise à jour de l'application

À l'aide de la console, vous pouvez mettre à jour les paramètres de l'application, tels que les propriétés de l'application, les paramètres de surveillance, ainsi que l'emplacement ou le nom de fichier de l'applicationJAR.

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

Note

Pour mettre à jour le code de l'application sur la console, vous devez soit modifier le nom de l'objetJAR, soit utiliser un autre compartiment S3, soit utiliser le AWS CLI comme décrit dans la Mise à jour du code de l’application section. 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)

Dans cette section, vous allez utiliser le AWS CLI pour créer et exécuter l'application Managed Service for Apache Flink.

Créer une stratégie d’autorisations

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 associez ensuite la politique à un IAM rôle (que vous créez 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 avec 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.

{ "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 dans le guide de IAM l'utilisateur.

Note

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

créer un rôle IAM ;

Dans cette section, vous allez créer un IAM rôle que l'application Managed Service for 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 accordez ces autorisations via un IAM rôle. Deux politiques sont associées à chaque IAM rôle. 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 IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

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

    Sélectionnez Next: Permissions (Étape suivante : autorisations).

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

  5. 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 avez maintenant créé un nouveau IAM rôle appeléMF-stream-rw-role. Ensuite, vous mettez à jour les stratégies d’approbation et d’autorisation pour le rôle.

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

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

    2. Choisissez Attacher des stratégies.

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

    4. Choisissez la AKReadSourceStreamWriteSinkStreampolitique, puis choisissez Attacher la politique.

Vous avez maintenant créé le rôle d’exécution de service que votre application utilisera pour accéder aux ressources. Prenez note 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 IAM rôle (console) dans le guide de IAM l'utilisateur.

Création du service géré pour l'application Apache Flink
  1. Enregistrez le JSON code suivant dans un fichier nommécreate_request.json. Remplacez le rôle ARN d'exemple par le rôle que vous avez créé précédemment. ARN Remplacez le ARN suffixe du bucket par le suffixe que vous avez choisi dans la Création de ressources dépendantes section (ka-app-code-<username>.) Remplacez l'exemple d'identifiant de compte (012345678901) dans le rôle d'exécution du service avec votre identifiant 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" } } } }
  2. Exécutez l’action CreateApplication 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

Dans cette section, vous utilisez l’action StartApplication pour démarrer l’application.

Pour démarrer l’application
  1. Enregistrez le JSON code suivant dans un fichier nomméstart_request.json.

    { "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. 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

Dans cette section, vous allez utiliser l’action StopApplication pour arrêter l’application.

Pour arrêter l’application
  1. Enregistrez le JSON code suivant dans un fichier nomméstop_request.json.

    { "ApplicationName": "test" }
  2. Exécutez l’action StopApplication 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

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, consultezConfigurer la journalisation des applications dans le service géré pour Apache Flink.

Mise à jour du code de l’application

Lorsque vous devez mettre à jour le code de votre application avec une nouvelle version de votre package de code, vous utilisez l'UpdateApplication 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. Mettre à jour le suffixe du nom du bucket (<username>) avec le suffixe que vous avez choisi dans la Création de ressources dépendantes section.

{ "ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username", "FileKeyUpdate": "java-getting-started-1.0.jar" } } } } }
Nettoyage des ressources AWS

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

Supprimer votre application Managed Service for Apache Flink
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

  3. Choisissez Configurer.

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

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

Supprimer votre flux de données Kinesis
  1. Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com

  2. Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.

  3. Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.

Supprimer votre stream Firehose
  1. Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com

  2. Dans le panneau Firehose, choisissez. ExampleDeliveryStream

  3. Sur la ExampleDeliveryStreampage, choisissez Delete Firehose stream, puis confirmez la suppression.

Supprimer votre objet et votre compartiment Amazon S3
  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Choisissez le ka-app-code -<username> seau.

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

  4. Si vous avez créé un compartiment Amazon S3 pour la destination de votre flux Firehose, supprimez-le également.

Supprimer vos IAM ressources
  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans la barre de navigation, choisissez Stratégies.

  3. Dans le contrôle du filtre, saisissez kinesis.

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

  5. Choisissez Actions de stratégie, puis Supprimer.

  6. Si vous avez créé une nouvelle politique pour votre stream Firehose, supprimez-la également.

  7. Dans la barre de navigation, choisissez Rôles.

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

  9. Choisissez Supprimer le rôle, puis confirmez la suppression.

  10. Si vous avez créé un nouveau rôle pour votre stream Firehose, supprimez-le également.

Supprimer vos CloudWatch ressources
  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans la barre de navigation, choisissez Journaux.

  3. Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.

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

Exemple : lecture depuis un flux Kinesis dans un autre compte

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.

Prérequis
  • 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 le DataStream API service géré pour Apache Flink 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

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 dans la AWS Command Line Interfacedocumentation.

Création d'un flux Kinesis source

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 de IAM rôles et de politiques

Pour autoriser l'accès aux objets entre AWS les comptes, vous devez créer un IAM rôle et une politique dans le compte source. Ensuite, vous modifiez la IAM politique dans le compte récepteur. Pour plus d'informations sur la création de IAM rôles et de politiques, consultez les rubriques suivantes du Guide de AWS Identity and Access Management l'utilisateur :

Rôles et politiques du compte Sink
  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'identifiant de compte (SOURCE01234567) avec l'identifiant du compte que vous utiliserez pour le flux source.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AssumeRoleInSourceAccount", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::SOURCE01234567: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:SINK012345678:log-group:*" ] }, { "Sid": "ListCloudwatchLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:SINK012345678:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutCloudwatchLogs", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:SINK012345678:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] } ] }
  2. Ouvrez le kinesis-analytics-MyApplication-us-west-2 rôle et notez son nom de ressource Amazon (ARN). Vous en aurez besoin pour la section suivante. Le rôle ARN ressemble à ce qui suit.

    arn:aws:iam::SINK012345678:role/service-role/kinesis-analytics-MyApplication-us-west-2
Rôles et politiques du compte source
  1. Créez une politique appelée KA-Source-Stream-Policy dans le compte source. Utilisez ce qui suit JSON pour la politique. Remplacez l’exemple de numéro de compte par le numéro du compte source.

    { "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:SOURCE123456784:stream/SourceAccountExampleInputStream" } ] }
  2. 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 la console IAM de gestion, choisissez Create Role.

    2. Sur la page Créer un rôle, choisissez Service AWS . Dans la liste des services, choisissez Kinesis.

    3. Sous Sélectionnez votre cas d’utilisation, choisissez service géré pour Apache Flink.

    4. Sélectionnez Next: Permissions (Étape suivante : autorisations).

    5. Ajoutez la politique d’autorisations KA-Source-Stream-Policy que vous avez créée à l’étape précédente. Choisissez Suivant : balises.

    6. Choisissez Suivant : vérification.

    7. Nommez le rôle KA-Source-Stream-Role. Votre application utilisera ce rôle pour accéder au flux source.

  3. Ajoutez le compte kinesis-analytics-MyApplication-us-west-2 ARN from the sink à la relation de confiance du KA-Source-Stream-Role rôle dans le compte source :

    1. Ouvrez le KA-Source-Stream-Role dans la IAM console.

    2. Choisissez l’onglet Relations d’approbation.

    3. Choisissez Modifier la relation d'approbation.

    4. Utilisez le code suivant pour la relation d’approbation. Remplacez l'exemple d'identifiant de compte (SINK012345678) avec votre identifiant de compte Sink.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::SINK012345678:role/service-role/kinesis-analytics-MyApplication-us-west-2" }, "Action": "sts:AssumeRole" } ] }
Mettre à jour le script Python

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

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) avec 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

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
  2. Supprimez le JAR fichier précédent de votre compartiment Amazon Simple Storage Service (Amazon S3), puis chargez le aws-kinesis-analytics-java-apps-1.0.jar nouveau fichier dans le compartiment S3.

  3. Sur la page de l'application dans la console Managed Service for Apache Flink, choisissez Configurer, Mettre à jour pour recharger le fichier de l'applicationJAR.

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

Source de données actuelle APIs

Si vous utilisez la source de données actuelleAPIs, votre application peut tirer parti de l'utilitaire Amazon MSK Config Providers décrit ici. Cela permet à votre KafkaSource fonction d'accéder à votre keystore et à votre truststore à des fins mutuelles TLS 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.

Héritage SourceFunction APIs

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

Pour configurer les prérequis requis pour cet exercice, commencez par terminer l’exercice Tutoriel : Commencez à utiliser le DataStream API service géré pour Apache Flink.

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 de manière sécurisée un client Kafka 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 MSK cluster Amazon sur lequel l'authentification mutuelle TLS (MTLS) est activée. Cela implique que les nœuds du MSK cluster utilisent des certificats de serveur émis par une autorité de AWS certification privée (CA ACM privée) de Certificate Manager 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 lors d'une SSL connexion.

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 :

Création d'un MSK cluster VPC avec Amazon

Pour créer un exemple VPC et un MSK cluster Amazon auquel accéder depuis une application Managed Service for Apache Flink, suivez le MSK didacticiel Getting Started Using Amazon.

Lorsque vous avez terminé le didacticiel, effectuez ce qui suit :

  • À l’étape 3 : création d’une rubrique, 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 avec la commande suivante (remplacez ClusterArn avec celui ARN de votre MSK cluster) :

    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

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 MSK cluster.

Pour créer et appliquer votre truststore personnalisé, suivez le didacticiel Authentification client figurant dans le guide du développeur Amazon Managed Streaming for Apache Kafka.

Créez le code de l'application

Dans cette section, vous pouvez télécharger et compiler le JAR fichier de candidature.

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.

  2. 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
  3. 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.

  4. Utilisez l'outil Maven en ligne de commande ou votre environnement de développement préféré pour créer le JAR fichier. Pour compiler le JAR fichier à l'aide de l'outil Maven en ligne de commande, entrez 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

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 le DataStream API service géré pour Apache Flink.

Note

Si vous avez supprimé le compartiment Amazon S3 du didacticiel Mise en route, suivez à nouveau l’étape Téléchargez le JAR fichier de code de l'application.

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

  2. À 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.

  3. 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
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

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

  4. Pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  5. 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 IAM rôle et une politique pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces IAM ressources sont nommées à l'aide du nom de votre application et de votre région, comme suit :

  • Stratégie : kinesis-analytics-service-MyApplication-us-west-2

  • Rôle : kinesisanalytics-MyApplication-us-west-2

Configuration de l'application
  1. Sur la MyApplicationpage, choisissez Configurer.

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

  3. Sous Accès aux ressources de l'application, pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

    Note

    Lorsque vous spécifiez des ressources d'application à l'aide de la console (telles que des journaux ou aVPC), la console modifie votre rôle d'exécution d'application pour autoriser l'accès à ces ressources.

  4. Sous Propriétés, sélectionnez Ajouter un groupe. Saisissez les propriétés suivantes :

    ID du groupe Clé Valeur
    KafkaSource topic AWS KafkaTutorialTopic
    KafkaSource serveurs bootstrap The bootstrap server list you saved previously
    KafkaSource security.protocol SSL
    KafkaSource ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts
    KafkaSource ssl.truststore.password changeit
    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 :

    ID du groupe Clé Valeur
    KafkaSink topic AWS KafkaTutorialTopicDestination
    KafkaSink serveurs bootstrap The bootstrap server list you saved previously
    KafkaSink security.protocol SSL
    KafkaSink ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts
    KafkaSink ssl.truststore.password changeit
    KafkaSink transaction.timeout.ms 1 000

    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 MSK cluster VPC et avec Amazon. Pour obtenir plus d’informations sur l’utilisation des propriétés, consultez Utiliser les propriétés d'exécution dans Managed Service pour Apache Flink.

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

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

  7. Pour la CloudWatch journalisation, cochez la case Activer.

  8. Dans la section Virtual Private Cloud (VPC), choisissez le VPC à associer à votre application. Choisissez les sous-réseaux et le groupe de sécurité associés VPC que vous souhaitez que l'application utilise pour accéder aux VPC ressources.

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

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

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 rédiger et lire des enregistrements issus des rubriques, suivez les étapes décrites à l'étape 6 : Produire et consommer des données du MSK didacticiel Getting Started Using Amazon.

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 sectionImpossible d'accéder aux ressources d'un VPC de la rubrique Résoudre les problèmes liés au service géré pour Apache Flink.

Exemples Python

Les exemples suivants montrent comment créer des applications à l'aide de Python avec la table API Apache Flink.

Exemple : création d'une fenêtre déroulante en Python

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.

Création de ressources dépendantes

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 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 ? 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

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 for Python (Boto).

Note

Le script Python de cette section utilise l’interface AWS CLI. Vous devez configurer votre compte de manière AWS CLI à 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'))
  2. 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

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.

  2. 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
  3. 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 create_table fonction utilise une SQL commande pour créer une table soutenue par la source de diffusion :

    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 flink-sql-connector-kinesis-1.15.2.jar.

Compressez et téléchargez le code Python de streaming d'Apache Flink

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.

  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.

  2. Dans la console Amazon S3, choisissez le ka-app-code -<username>bucket, puis choisissez Upload.

  3. À 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.

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

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

Pour créer l’application
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

  3. 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).

  4. Pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  5. Choisissez Créer une application.

Note

Lorsque vous créez un service géré pour une application Apache Flink à l'aide de la console, vous avez la possibilité de créer un IAM rôle et une politique pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces IAM ressources sont nommées à l'aide du nom de votre application et de votre région, comme suit :

  • Stratégie : kinesis-analytics-service-MyApplication-us-west-2

  • Rôle : kinesisanalytics-MyApplication-us-west-2

Configuration de l'application
  1. Sur la MyApplicationpage, choisissez Configurer.

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

  3. Sous Accès aux ressources de l'application, pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  4. Sous Propriétés, sélectionnez Ajouter un groupe.

  5. Saisissez :

    ID du groupe Clé Valeur
    consumer.config.0 input.stream.name ExampleInputStream
    consumer.config.0 aws.region us-west-2
    consumer.config.0 scan.stream.initpos LATEST

    Choisissez Enregistrer.

  6. Sous Propriétés, sélectionnez à nouveau Ajouter un groupe.

  7. Saisissez :

    ID du groupe Clé Valeur
    producer.config.0 output.stream.name ExampleOutputStream
    producer.config.0 aws.region us-west-2
    producer.config.0 shard.count 1
  8. 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.

  9. Saisissez :

    ID du groupe Clé Valeur
    kinesis.analytics.flink.run.options python tumbling-windows.py
    kinesis.analytics.flink.run.options jarfile flink-sql-connector-kinesis-1.15.2.jar
  10. Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.

  11. Pour la CloudWatch journalisation, cochez la case Activer.

  12. 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 IAM politique

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

  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.

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

    { "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

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

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

Supprimer votre application Managed Service for Apache Flink
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

  2. dans le panneau Managed Service for Apache Flink, sélectionnez MyApplication.

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

Supprimer vos flux de données Kinesis
  1. Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com

  2. Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.

  3. Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.

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

Supprimer votre objet et votre compartiment Amazon S3
  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Choisissez le ka-app-code -<username> seau.

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

Supprimer vos IAM ressources
  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans la barre de navigation, choisissez Stratégies.

  3. Dans le contrôle du filtre, saisissez kinesis.

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

  5. Choisissez Actions de stratégie, puis Supprimer.

  6. Dans la barre de navigation, choisissez Rôles.

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

  8. Choisissez Supprimer le rôle, puis confirmez la suppression.

Supprimer vos CloudWatch ressources
  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans la barre de navigation, choisissez Journaux.

  3. Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.

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

Exemple : création d'une fenêtre coulissante en Python

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.

Création de ressources dépendantes

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 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 ? 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

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 for Python (Boto).

Note

Le script Python de cette section utilise l’interface AWS CLI. Vous devez configurer votre compte de manière AWS CLI à 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'))
  2. 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

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.

  2. 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
  3. 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 create_input_table fonction utilise une SQL commande pour créer une table soutenue par la source de diffusion :

    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

Compressez et téléchargez le code Python de streaming d'Apache Flink

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.

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.

  2. Dans la console Amazon S3, choisissez le ka-app-code -<username>bucket, puis choisissez Upload.

  3. À 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.

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

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

Pour créer l’application
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

  3. 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).

  4. Pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  5. Choisissez Créer une application.

Note

Lorsque vous créez un service géré pour une application Apache Flink à l'aide de la console, vous avez la possibilité de créer un IAM rôle et une politique pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces IAM ressources sont nommées à l'aide du nom de votre application et de votre région, comme suit :

  • Stratégie : kinesis-analytics-service-MyApplication-us-west-2

  • Rôle : kinesisanalytics-MyApplication-us-west-2

Configuration de l'application
  1. Sur la MyApplicationpage, choisissez Configurer.

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

  3. Sous Accès aux ressources de l'application, pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  4. Sous Propriétés, sélectionnez Ajouter un groupe.

  5. Entrez les valeurs et propriétés d’application suivantes :

    ID du groupe Clé Valeur
    consumer.config.0 input.stream.name ExampleInputStream
    consumer.config.0 aws.region us-west-2
    consumer.config.0 scan.stream.initpos LATEST

    Choisissez Enregistrer.

  6. Sous Propriétés, sélectionnez à nouveau Ajouter un groupe.

  7. Entrez les valeurs et propriétés d’application suivantes :

    ID du groupe Clé Valeur
    producer.config.0 output.stream.name ExampleOutputStream
    producer.config.0 aws.region us-west-2
    producer.config.0 shard.count 1
  8. 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.

  9. Entrez les valeurs et propriétés d’application suivantes :

    ID du groupe Clé Valeur
    kinesis.analytics.flink.run.options python sliding-windows.py
    kinesis.analytics.flink.run.options jarfile flink-sql-connector-kinesis_1.15.2.jar
  10. Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.

  11. Pour la CloudWatch journalisation, cochez la case Activer.

  12. 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 IAM politique

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

  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.

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

    { "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

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

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

Supprimer votre application Managed Service for Apache Flink
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

  2. dans le panneau Managed Service for Apache Flink, sélectionnez MyApplication.

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

Supprimer vos flux de données Kinesis
  1. Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com

  2. Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.

  3. Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.

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

Supprimer votre objet et votre compartiment Amazon S3
  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Choisissez le ka-app-code -<username> seau.

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

Supprimer vos IAM ressources
  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans la barre de navigation, choisissez Stratégies.

  3. Dans le contrôle du filtre, saisissez kinesis.

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

  5. Choisissez Actions de stratégie, puis Supprimer.

  6. Dans la barre de navigation, choisissez Rôles.

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

  8. Choisissez Supprimer le rôle, puis confirmez la suppression.

Supprimer vos CloudWatch ressources
  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans la barre de navigation, choisissez Journaux.

  3. Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.

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

Exemple : envoyer des données de streaming à Amazon S3 en Python

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.

Création de ressources dépendantes

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 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 ? 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

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 for Python (Boto).

Note

Le script Python de cette section utilise l’interface AWS CLI. Vous devez configurer votre compte de manière AWS CLI à 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'))
  2. 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

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.

  2. 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
  3. 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 create_source_table fonction utilise une SQL commande pour créer une table qui est soutenue par la source de diffusion

    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

Compressez et téléchargez le code Python de streaming d'Apache Flink

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.

  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. Nommez l’archive myapp.zip.

  2. Dans la console Amazon S3, choisissez le ka-app-code -<username>bucket, puis choisissez Upload.

  3. À 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.

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

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

Pour créer l’application
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

  3. 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).

  4. Pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  5. Choisissez Créer une application.

Note

Lorsque vous créez un service géré pour une application Apache Flink à l'aide de la console, vous avez la possibilité de créer un IAM rôle et une politique pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces IAM ressources sont nommées à l'aide du nom de votre application et de votre région, comme suit :

  • Stratégie : kinesis-analytics-service-MyApplication-us-west-2

  • Rôle : kinesisanalytics-MyApplication-us-west-2

Configuration de l'application
  1. Sur la MyApplicationpage, choisissez Configurer.

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

  3. Sous Accès aux ressources de l'application, pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  4. Sous Propriétés, sélectionnez Ajouter un groupe.

  5. Entrez les valeurs et propriétés d’application suivantes :

    ID du groupe Clé Valeur
    consumer.config.0 input.stream.name ExampleInputStream
    consumer.config.0 aws.region us-west-2
    consumer.config.0 scan.stream.initpos LATEST

    Choisissez Enregistrer.

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

  7. Entrez les valeurs et propriétés d’application suivantes :

    ID du groupe Clé Valeur
    kinesis.analytics.flink.run.options python streaming-file-sink.py
    kinesis.analytics.flink.run.options jarfile S3Sink/lib/flink-sql-connector-kinesis-1.15.2.jar
  8. 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.

  9. Entrez les propriétés et valeurs d'application suivantes : (remplacez bucket-name avec le nom réel de votre compartiment Amazon S3.)

    ID du groupe Clé Valeur
    sink.config.0 output.bucket.name bucket-name
  10. Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.

  11. Pour la CloudWatch journalisation, cochez la case Activer.

  12. 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 IAM politique

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

  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.

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

    { "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

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

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

Supprimer votre application Managed Service for Apache Flink
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

  2. dans le panneau Managed Service for Apache Flink, sélectionnez MyApplication.

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

Supprimer votre flux de données Kinesis
  1. Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com

  2. Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.

  3. Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.

Supprimer vos objets et votre compartiment Amazon S3
  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Choisissez le ka-app-code -<username> seau.

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

Supprimer vos IAM ressources
  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans la barre de navigation, choisissez Stratégies.

  3. Dans le contrôle du filtre, saisissez kinesis.

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

  5. Choisissez Actions de stratégie, puis Supprimer.

  6. Dans la barre de navigation, choisissez Rôles.

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

  8. Choisissez Supprimer le rôle, puis confirmez la suppression.

Supprimer vos CloudWatch ressources
  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans la barre de navigation, choisissez Journaux.

  3. Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.

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

Exemples de Scala

Les exemples suivants montrent comment créer des applications à l’aide de Scala avec Apache Flink.

Exemple : création d'une fenêtre déroulante dans Scala

Note

À partir de la version 1.15, Flink n’utilise plus Scala. Les applications peuvent désormais utiliser le Java API à partir de 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.

Dans cet exercice, vous allez créer une application de streaming simple qui utilise Scala 3.2.0 et le Java de Flink. DataStream API 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).

Téléchargez et examinez le code de l'application

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.

  2. 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
  3. 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.

Compiler et charger le code d’application

Dans cette section, vous compilez et charger votre code d’application dans un compartiment Amazon S3.

Compilation du code d’application

Utilisez l'SBToutil de génération pour créer le code Scala de l'application. Pour l'installerSBT, voir Installer sbt avec cs setup. Vous devez également installer le kit de développement Java (JDK). Consultez Prerequisites for Completing the Exercises.

  1. Pour utiliser le code de votre application, vous devez le compiler et le regrouper dans un JAR fichier. Vous pouvez compiler et empaqueter votre code avec SBT :

    sbt assembly
  2. 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/.

  2. Choisissez Créer un compartiment.

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

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

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

  6. Choisissez Créer un compartiment.

  7. Ouvrez le compartiment ka-app-code-<username>, puis choisissez Charger.

  8. À 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.

  9. 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)

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

Pour créer l’application
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

  3. 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).

  4. Pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  5. Choisissez Créer une application.

Note

Lorsque vous créez un service géré pour une application Apache Flink à l'aide de la console, vous avez la possibilité de créer un IAM rôle et une politique pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces IAM ressources sont nommées à l'aide du nom de votre application et de votre région, comme suit :

  • Stratégie : kinesis-analytics-service-MyApplication-us-west-2

  • Rôle : kinesisanalytics-MyApplication-us-west-2

Configuration de l'application

Procédez comme suit pour configurer l’application.

Pour configurer l’application
  1. Sur la MyApplicationpage, choisissez Configurer.

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

  3. Sous Accès aux ressources de l'application, pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  4. Sous Propriétés, sélectionnez Ajouter un groupe.

  5. Saisissez :

    ID du groupe Clé Valeur
    ConsumerConfigProperties input.stream.name ExampleInputStream
    ConsumerConfigProperties aws.region us-west-2
    ConsumerConfigProperties flink.stream.initpos LATEST

    Choisissez Enregistrer.

  6. Sous Propriétés, sélectionnez à nouveau Ajouter un groupe.

  7. Saisissez :

    ID du groupe Clé Valeur
    ProducerConfigProperties output.stream.name ExampleOutputStream
    ProducerConfigProperties aws.region us-west-2
  8. Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.

  9. Pour la CloudWatch journalisation, cochez la case Activer.

  10. 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 IAM politique

Modifiez la IAM politique pour ajouter des autorisations d'accès au compartiment Amazon S3.

Pour modifier la IAM politique afin d'ajouter des autorisations au compartiment S3
  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.

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

    { "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

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

Pour arrêter l'application, sur la MyApplicationpage, choisissez Arrêter. Confirmez l’action.

Créez et exécutez l'application (CLI)

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
Note

Vous devez créer une stratégie d’autorisations et un rôle pour votre application. Si vous ne créez pas ces IAM ressources, votre application ne pourra 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 associez ensuite la politique à un IAM rôle (que vous créez 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 dans le guide de IAM l'utilisateur.

créer un rôle IAM ;

Dans cette section, vous allez créer un IAM rôle que l'application Managed Service for 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 accordez ces autorisations via un IAM rôle. Deux politiques sont associées à chaque IAM rôle. 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 IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Sous Sélectionner le type d’identité approuvée, choisissez Service AWS .

  4. Sous Choisir le service qui utilisera ce rôle, choisissez EC2.

  5. Sous Sélectionnez votre cas d’utilisation, choisissez service géré pour Apache Flink.

  6. Sélectionnez Next: Permissions (Étape suivante : autorisations).

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

  8. 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 avez maintenant créé un nouveau IAM rôle appeléMF-stream-rw-role. Ensuite, vous mettez à jour les stratégies d’approbation et d’autorisation pour le rôle.

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

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

    2. Choisissez Attacher des stratégies.

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

    4. 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. Prenez note 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 IAM rôle (console) dans le guide de IAM l'utilisateur.

Pour créer l’application

Enregistrez le JSON code suivant dans un fichier nommécreate_request.json. Remplacez le rôle ARN d'exemple par le rôle que vous avez créé précédemment. ARN Remplacez le ARN suffixe du bucket (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. Ils ServiceExecutionRole doivent inclure le rôle IAM d'utilisateur 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 CreateApplicationavec 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

Dans cette section, vous utilisez l'StartApplicationaction pour démarrer l'application.

Pour démarrer l’application
  1. Enregistrez le JSON code suivant dans un fichier nomméstart_request.json.

    { "ApplicationName": "tumbling_window", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. 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

Dans cette section, vous utilisez l'StopApplicationaction pour arrêter l'application.

Pour arrêter l’application
  1. Enregistrez le JSON code suivant dans un fichier nomméstop_request.json.

    { "ApplicationName": "tumbling_window" }
  2. 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

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.

Mettre à jour les propriétés d'environnement

Dans cette section, vous utilisez l'UpdateApplicationaction 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. Enregistrez le JSON code 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" } } ] } } }
  2. 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

Lorsque vous devez mettre à jour le code de votre application avec une nouvelle version de votre package de code, vous utilisez l'UpdateApplicationCLIaction.

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.

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.

{ "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

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

Supprimer votre application Managed Service for Apache Flink
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

  2. dans le panneau Managed Service for Apache Flink, sélectionnez MyApplication.

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

Supprimer vos flux de données Kinesis
  1. Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com

  2. Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.

  3. Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.

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

Supprimer votre objet et votre compartiment Amazon S3
  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Choisissez le ka-app-code -<username> seau.

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

Supprimer vos IAM ressources
  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans la barre de navigation, choisissez Stratégies.

  3. Dans le contrôle du filtre, saisissez kinesis.

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

  5. Choisissez Actions de stratégie, puis Supprimer.

  6. Dans la barre de navigation, choisissez Rôles.

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

  8. Choisissez Supprimer le rôle, puis confirmez la suppression.

Supprimer vos CloudWatch ressources
  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans la barre de navigation, choisissez Journaux.

  3. Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.

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

Exemple : création d'une fenêtre coulissante dans Scala

Note

À partir de la version 1.15, Flink n’utilise plus Scala. Les applications peuvent désormais utiliser le Java API à partir de 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.

Dans cet exercice, vous allez créer une application de streaming simple qui utilise Scala 3.2.0 et le Java de Flink. DataStream API 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).

Téléchargez et examinez le code de l'application

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.

  2. 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
  3. 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.

Compiler et charger le code d’application

Dans cette section, vous compilez et charger votre code d’application dans un compartiment Amazon S3.

Compilation du code d’application

Utilisez l'SBToutil de génération pour créer le code Scala de l'application. Pour l'installerSBT, voir Installer sbt avec cs setup. Vous devez également installer le kit de développement Java (JDK). Consultez Prerequisites for Completing the Exercises.

  1. Pour utiliser le code de votre application, vous devez le compiler et le regrouper dans un JAR fichier. Vous pouvez compiler et empaqueter votre code avec SBT :

    sbt assembly
  2. 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/.

  2. Choisissez Créer un compartiment.

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

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

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

  6. Choisissez Créer un compartiment.

  7. Ouvrez le compartiment ka-app-code-<username>, puis choisissez Charger.

  8. À 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.

  9. 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)

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

Pour créer l’application
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

  3. 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).

  4. Pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  5. Choisissez Créer une application.

Note

Lorsque vous créez un service géré pour une application Apache Flink à l'aide de la console, vous avez la possibilité de créer un IAM rôle et une politique pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces IAM ressources sont nommées à l'aide du nom de votre application et de votre région, comme suit :

  • Stratégie : kinesis-analytics-service-MyApplication-us-west-2

  • Rôle : kinesisanalytics-MyApplication-us-west-2

Configuration de l'application

Procédez comme suit pour configurer l’application.

Pour configurer l’application
  1. Sur la MyApplicationpage, choisissez Configurer.

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

  3. Sous Accès aux ressources de l'application, pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  4. Sous Propriétés, sélectionnez Ajouter un groupe.

  5. Saisissez :

    ID du groupe Clé Valeur
    ConsumerConfigProperties input.stream.name ExampleInputStream
    ConsumerConfigProperties aws.region us-west-2
    ConsumerConfigProperties flink.stream.initpos LATEST

    Choisissez Enregistrer.

  6. Sous Propriétés, sélectionnez à nouveau Ajouter un groupe.

  7. Saisissez :

    ID du groupe Clé Valeur
    ProducerConfigProperties output.stream.name ExampleOutputStream
    ProducerConfigProperties aws.region us-west-2
  8. Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.

  9. Pour la CloudWatch journalisation, cochez la case Activer.

  10. 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 IAM politique

Modifiez la IAM politique pour ajouter des autorisations d'accès au compartiment Amazon S3.

Pour modifier la IAM politique afin d'ajouter des autorisations au compartiment S3
  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.

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

    { "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

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

Pour arrêter l'application, sur la MyApplicationpage, choisissez Arrêter. Confirmez l’action.

Créez et exécutez l'application (CLI)

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
Note

Vous devez créer une stratégie d’autorisations et un rôle pour votre application. Si vous ne créez pas ces IAM ressources, votre application ne pourra 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 associez ensuite la politique à un IAM rôle (que vous créez 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 dans le guide de IAM l'utilisateur.

créer un rôle IAM ;

Dans cette section, vous allez créer un IAM rôle que l'application Managed Service for 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 accordez ces autorisations via un IAM rôle. Deux politiques sont associées à chaque IAM rôle. 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 IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Sous Sélectionner le type d’identité approuvée, choisissez Service AWS .

  4. Sous Choisir le service qui utilisera ce rôle, choisissez EC2.

  5. Sous Sélectionnez votre cas d’utilisation, choisissez service géré pour Apache Flink.

  6. Sélectionnez Next: Permissions (Étape suivante : autorisations).

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

  8. 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 avez maintenant créé un nouveau IAM rôle appeléMF-stream-rw-role. Ensuite, vous mettez à jour les stratégies d’approbation et d’autorisation pour le rôle.

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

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

    2. Choisissez Attacher des stratégies.

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

    4. 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. Prenez note 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 IAM rôle (console) dans le guide de IAM l'utilisateur.

Pour créer l’application

Enregistrez le JSON code suivant dans un fichier nommécreate_request.json. Remplacez le rôle ARN d'exemple par le rôle que vous avez créé précédemment. ARN Remplacez le ARN suffixe du bucket (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 CreateApplicationavec 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

Dans cette section, vous utilisez l'StartApplicationaction pour démarrer l'application.

Pour démarrer l’application
  1. Enregistrez le JSON code suivant dans un fichier nomméstart_request.json.

    { "ApplicationName": "sliding_window", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. 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

Dans cette section, vous utilisez l'StopApplicationaction pour arrêter l'application.

Pour arrêter l’application
  1. Enregistrez le JSON code suivant dans un fichier nomméstop_request.json.

    { "ApplicationName": "sliding_window" }
  2. 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

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.

Mettre à jour les propriétés d'environnement

Dans cette section, vous utilisez l'UpdateApplicationaction 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. Enregistrez le JSON code 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" } } ] } } }
  2. 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

Lorsque vous devez mettre à jour le code de votre application avec une nouvelle version de votre package de code, vous utilisez l'UpdateApplicationCLIaction.

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.

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.

{ "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

Cette section inclut les procédures de nettoyage des AWS ressources créées dans le didacticiel de la fenêtre coulissante.

Supprimer votre application Managed Service for Apache Flink
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

  2. dans le panneau Managed Service for Apache Flink, sélectionnez MyApplication.

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

Supprimer vos flux de données Kinesis
  1. Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com

  2. Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.

  3. Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.

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

Supprimer votre objet et votre compartiment Amazon S3
  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Choisissez le ka-app-code -<username> seau.

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

Supprimer vos IAM ressources
  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans la barre de navigation, choisissez Stratégies.

  3. Dans le contrôle du filtre, saisissez kinesis.

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

  5. Choisissez Actions de stratégie, puis Supprimer.

  6. Dans la barre de navigation, choisissez Rôles.

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

  8. Choisissez Supprimer le rôle, puis confirmez la suppression.

Supprimer vos CloudWatch ressources
  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans la barre de navigation, choisissez Journaux.

  3. Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.

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

Exemple : envoyer des données de streaming à Amazon S3 dans Scala

Note

À partir de la version 1.15, Flink n’utilise plus Scala. Les applications peuvent désormais utiliser le Java API à partir de 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.

Dans cet exercice, vous allez créer une application de streaming simple qui utilise Scala 3.2.0 et le Java de Flink. DataStream API 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). Il vous suffit de créer un dossier supplémentaire data/ dans le compartiment Amazon S3 ka-app-code-<username>.

Téléchargez et examinez le code de l'application

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.

  2. 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
  3. 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.

Compiler et charger le code d’application

Dans cette section, vous compilez et charger votre code d’application dans un compartiment Amazon S3.

Compilation du code d’application

Utilisez l'SBToutil de génération pour créer le code Scala de l'application. Pour l'installerSBT, voir Installer sbt avec cs setup. Vous devez également installer le kit de développement Java (JDK). Consultez Prerequisites for Completing the Exercises.

  1. Pour utiliser le code de votre application, vous devez le compiler et le regrouper dans un JAR fichier. Vous pouvez compiler et empaqueter votre code avec SBT :

    sbt assembly
  2. 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/.

  2. Choisissez Créer un compartiment.

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

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

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

  6. Choisissez Créer un compartiment.

  7. Ouvrez le compartiment ka-app-code-<username>, puis choisissez Charger.

  8. À 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.

  9. 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)

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

Pour créer l’application
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

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

  3. 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).

  4. Pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  5. Choisissez Créer une application.

Note

Lorsque vous créez un service géré pour une application Apache Flink à l'aide de la console, vous avez la possibilité de créer un IAM rôle et une politique pour votre application. Votre application utilise ce rôle et cette politique pour accéder à ses ressources dépendantes. Ces IAM ressources sont nommées à l'aide du nom de votre application et de votre région, comme suit :

  • Stratégie : kinesis-analytics-service-MyApplication-us-west-2

  • Rôle : kinesisanalytics-MyApplication-us-west-2

Configuration de l'application

Procédez comme suit pour configurer l’application.

Pour configurer l’application
  1. Sur la MyApplicationpage, choisissez Configurer.

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

  3. Sous Accès aux ressources de l'application, pour les autorisations d'accès, choisissez Create/update IAM role kinesis-analytics-MyApplication-us-west-2.

  4. Sous Propriétés, sélectionnez Ajouter un groupe.

  5. Saisissez :

    ID du groupe Clé Valeur
    ConsumerConfigProperties input.stream.name ExampleInputStream
    ConsumerConfigProperties aws.region us-west-2
    ConsumerConfigProperties flink.stream.initpos LATEST

    Choisissez Save (Enregistrer).

  6. Sous Propriétés, sélectionnez Ajouter un groupe.

  7. Saisissez :

    ID du groupe Clé Valeur
    ProducerConfigProperties s3.sink.path s3a://ka-app-code-<user-name>/data
  8. Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.

  9. Pour la CloudWatch journalisation, cochez la case Activer.

  10. 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 IAM politique

Modifiez la IAM politique pour ajouter des autorisations d'accès au compartiment Amazon S3.

Pour modifier la IAM politique afin d'ajouter des autorisations au compartiment S3
  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.

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

    { "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

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

Pour arrêter l'application, sur la MyApplicationpage, choisissez Arrêter. Confirmez l’action.

Créez et exécutez l'application (CLI)

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
Note

Vous devez créer une stratégie d’autorisations et un rôle pour votre application. Si vous ne créez pas ces IAM ressources, votre application ne pourra 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 associez ensuite la politique à un IAM rôle (que vous créez 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.

{ "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: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" } ] }

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 dans le guide de IAM l'utilisateur.

créer un rôle IAM ;

Dans cette section, vous allez créer un IAM rôle que l'application Managed Service for 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 accordez ces autorisations via un IAM rôle. Deux politiques sont associées à chaque IAM rôle. 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 IAM console à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Sous Sélectionner le type d’identité approuvée, choisissez Service AWS .

  4. Sous Choisir le service qui utilisera ce rôle, choisissez EC2.

  5. Sous Sélectionnez votre cas d’utilisation, choisissez service géré pour Apache Flink.

  6. Sélectionnez Next: Permissions (Étape suivante : autorisations).

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

  8. 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 avez maintenant créé un nouveau IAM rôle appeléMF-stream-rw-role. Ensuite, vous mettez à jour les stratégies d’approbation et d’autorisation pour le rôle.

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

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

    2. Choisissez Attacher des stratégies.

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

    4. 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. Prenez note 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 IAM rôle (console) dans le guide de IAM l'utilisateur.

Pour créer l’application

Enregistrez le JSON code suivant dans un fichier nommécreate_request.json. Remplacez le rôle ARN d'exemple par le rôle que vous avez créé précédemment. ARN Remplacez le ARN suffixe du bucket (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 CreateApplicationavec 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

Dans cette section, vous utilisez l'StartApplicationaction pour démarrer l'application.

Pour démarrer l’application
  1. Enregistrez le JSON code suivant dans un fichier nomméstart_request.json.

    {{ "ApplicationName": "s3_sink", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. 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

Dans cette section, vous utilisez l'StopApplicationaction pour arrêter l'application.

Pour arrêter l’application
  1. Enregistrez le JSON code suivant dans un fichier nomméstop_request.json.

    { "ApplicationName": "s3_sink" }
  2. 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

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.

Mettre à jour les propriétés d'environnement

Dans cette section, vous utilisez l'UpdateApplicationaction 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. Enregistrez le JSON code 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" } } ] } } }
  2. 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

Lorsque vous devez mettre à jour le code de votre application avec une nouvelle version de votre package de code, vous utilisez l'UpdateApplicationCLIaction.

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.

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.

{ "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

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

Supprimer votre application Managed Service for Apache Flink
  1. Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink

  2. dans le panneau Managed Service for Apache Flink, sélectionnez MyApplication.

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

Supprimer vos flux de données Kinesis
  1. Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com

  2. Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.

  3. Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.

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

Supprimer votre objet et votre compartiment Amazon S3
  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Choisissez le ka-app-code -<username> seau.

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

Supprimer vos IAM ressources
  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans la barre de navigation, choisissez Stratégies.

  3. Dans le contrôle du filtre, saisissez kinesis.

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

  5. Choisissez Actions de stratégie, puis Supprimer.

  6. Dans la barre de navigation, choisissez Rôles.

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

  8. Choisissez Supprimer le rôle, puis confirmez la suppression.

Supprimer vos CloudWatch ressources
  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans la barre de navigation, choisissez Journaux.

  3. Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.

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