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.
Cette rubrique contient les sections suivantes :
- Utilisation du connecteur Apache Flink Kinesis Streams avec les versions précédentes d'Apache Flink
- Création d'applications avec Apache Flink 1.8.2
- Création d'applications avec Apache Flink 1.6.2
- Mise à niveau des applications
- Connecteurs disponibles dans Apache Flink 1.6.2 et 1.8.2
- Pour démarrer : Flink 1.13.2
- Pour démarrer : Flink 1.11.1 - obsolète
- Pour démarrer : Flink 1.8.2 - obsolète
- Pour démarrer : Flink 1.6.2 - obsolète
- Exemples de versions antérieures (anciennes) pour le service géré pour 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 :
Assurez-vous qu'Apache Maven
est installé et que votre variable d' JAVA_HOME
environnement pointe vers un JDK plutôt que vers unJRE. Vous pouvez tester votre installation Apache Maven à l’aide de la commande suivante :mvn -version
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
Décompressez le code source d’Apache Flink :
tar -xvf flink-1.8.2-src.tgz
Accédez au répertoire du code source d’Apache Flink :
cd flink-1.8.2
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 obtenir des informations sur les connecteurs disponibles dans l’environnement Apache Flink 1.6.2, consultez Connectors (1.6.2)
dans la documentation Apache Flink (1.6.2) . Pour obtenir des informations sur les connecteurs disponibles dans l’environnement Apache Flink 1.8.2, consultez Connectors (1.8.2)
dans la documentation Apache Flink (1.8.2) .
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.
Rubriques
- Composants d'un service géré pour une application Apache Flink
- Conditions préalables à la réalisation des exercices
- Étape 1 : configurer un AWS compte et créer un utilisateur administrateur
- Étape suivante
- Étape 2 : configurer le AWS Command Line Interface (AWS CLI)
- Étape 3 : créer et exécuter un service géré pour l'application Apache Flink
- Étape 4 : Nettoyer les AWS ressources
- Étape 5 : étapes suivantes
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_HOME
environnement 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
Ouvrez l'https://portal.aws.amazon.com/billing/inscription.
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/
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
-
Connectez-vous en AWS Management Console
tant que propriétaire du compte en choisissant Utilisateur root et en saisissant votre adresse Compte AWS e-mail. Sur la page suivante, saisissez votre mot de passe. Pour obtenir de l‘aide pour vous connecter en utilisant l‘utilisateur racine, consultez Connexion en tant qu‘utilisateur racine dans le Guide de l‘utilisateur Connexion à AWS .
-
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
-
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 .
-
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
-
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 .
-
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
-
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 :
-
Configuration de l’interface AWS CLI (français non garanti)
-
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.
-
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.
Cette section contient les étapes suivantes :
- Création de deux flux de données Amazon Kinesis
- Écrire des exemples d'enregistrements dans le flux d'entrée
- Téléchargez et examinez le code Java de streaming d'Apache Flink
- Compilez le code de l'application
- Téléchargez le code Java de streaming Apache Flink
- Création et exécution du service géré pour l'application Apache Flink
- Étape suivante
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)
-
Pour créer le premier flux (
ExampleInputStream
), utilisez la commande Amazon Kinesiscreate-stream
AWS CLI suivante.$ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
-
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)
-
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'))
-
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 :
-
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
-
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éthodemain
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
etcreateSinkFromApplicationProperties
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
-
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).
-
-
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
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. -
Choisissez Créer un compartiment.
-
Saisissez
ka-app-code-
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.<username>
-
À l’étape Configurer les options, conservez les paramètres, puis choisissez Suivant.
-
À l’étape Définir des autorisations, conservez les paramètres, puis choisissez Suivant.
-
Choisissez Créer un compartiment.
-
Dans la console Amazon S3, choisissez le ka-app-code -
<username>
bucket, puis choisissez Upload. -
À 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. -
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
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le tableau de bord du service géré pour Apache Flink, choisissez Créer une application d’analyse.
-
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 .
-
-
Pour les autorisations d'accès, choisissez Create/update IAM role
kinesis-analytics-MyApplication-us-west-2
. -
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.
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
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. -
Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.
-
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
-
Sur la MyApplicationpage, choisissez Configurer.
-
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
.
-
-
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
. -
Saisissez :
ID du groupe Clé Valeur ProducerConfigProperties
flink.inputstream.initpos
LATEST
ProducerConfigProperties
aws.region
us-west-2
ProducerConfigProperties
AggregationEnabled
false
-
Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.
-
Pour la CloudWatch journalisation, cochez la case Activer.
-
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
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) (username
) par votre identifiant de compte.012345678901
{ "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
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
Dans le volet de navigation, choisissez Rôles, puis Créer un rôle.
-
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).
-
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.
-
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. -
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.
-
Sur la page Récapitulatif, choisissez l’onglet Autorisations.
-
Choisissez Attacher des stratégies.
-
Dans la zone de recherche, saisissez
AKReadSourceStreamWriteSinkStream
(la politique que vous avez créée dans la section précédente). -
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
-
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 section précédente. Remplacez l’exemple d’ID de compte (username
) dans le rôle d’exécution de service par votre ID de compte.012345678901
{ "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" } } ] } } } -
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
-
Enregistrez le JSON code suivant dans un fichier nommé
start_request.json
.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
-
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
-
Enregistrez le JSON code suivant dans un fichier nommé
stop_request.json
.{ "ApplicationName": "test" }
-
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
-
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" } } ] } } }
-
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.
Cette rubrique contient les sections suivantes :
Supprimer votre application Managed Service for Apache Flink
Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com
-
Dans le panneau Managed Service for Apache Flink, choisissez MyApplication.
-
Sur la page de l’application, choisissez Supprimer, puis confirmez la suppression.
Supprimer vos flux de données Kinesis
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.
-
Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.
-
Sur la page Kinesis Streams, choisissez le ExampleOutputStream, choisissez Actions, choisissez Supprimer, puis confirmez la suppression.
Supprimer votre objet et votre compartiment Amazon S3
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. -
Choisissez le ka-app-code -
<username>
seau. -
Choisissez Supprimer, puis saisissez le nombre du compartiment pour confirmer la suppression.
Supprimer vos IAM ressources
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
Dans la barre de navigation, choisissez Stratégies.
-
Dans le contrôle du filtre, saisissez kinesis.
-
Choisissez la politique kinesis-analytics-service- MyApplication -us-west-2.
-
Choisissez Actions de stratégie, puis Supprimer.
-
Dans la barre de navigation, choisissez Rôles.
-
Choisissez le rôle kinesis-analytics- MyApplication -us-west-2.
-
Choisissez Supprimer le rôle, puis confirmez la suppression.
Supprimer vos CloudWatch ressources
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. -
Dans la barre de navigation, choisissez Journaux.
-
Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.
-
Choisissez Supprimer le groupe de journaux, puis confirmez la suppression.
Étape suivante
É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.
Rubriques
- Composants d'un service géré pour une application Apache Flink
- Conditions préalables à la réalisation des exercices
- Étape 1 : configurer un AWS compte et créer un utilisateur administrateur
- Étape 2 : Configuration de l' AWS Command Line Interface (AWS CLI)
- Étape 3 : créer et exécuter un service géré pour l'application Apache Flink
- Étape 4 : Nettoyer les AWS ressources
- Étape 5 : étapes suivantes
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_HOME
environnement 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
Ouvrez l'https://portal.aws.amazon.com/billing/inscription.
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/
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
-
Connectez-vous en AWS Management Console
tant que propriétaire du compte en choisissant Utilisateur root et en saisissant votre adresse Compte AWS e-mail. Sur la page suivante, saisissez votre mot de passe. Pour obtenir de l‘aide pour vous connecter en utilisant l‘utilisateur racine, consultez Connexion en tant qu‘utilisateur racine dans le Guide de l‘utilisateur Connexion à AWS .
-
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
-
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 .
-
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
-
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 .
-
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
-
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 :
-
Configuration de l’interface AWS CLI (français non garanti)
-
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.
-
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.
Cette section contient les étapes suivantes :
- Création de deux flux de données Amazon Kinesis
- Écrire des exemples d'enregistrements dans le flux d'entrée
- Téléchargez et examinez le code Java de streaming d'Apache Flink
- Compilez le code de l'application
- Téléchargez le code Java de streaming Apache Flink
- Création et exécution du service géré pour l'application Apache Flink
- Étape suivante
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)
-
Pour créer le premier flux (
ExampleInputStream
), utilisez la commande Amazon Kinesiscreate-stream
AWS CLI suivante.$ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
-
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)
-
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"))
-
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 :
-
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
-
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éthodemain
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
etcreateSinkFromApplicationProperties
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
-
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).
-
-
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
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. -
Choisissez Créer un compartiment.
-
Saisissez
ka-app-code-
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.<username>
-
À l’étape Configurer les options, conservez les paramètres, puis choisissez Suivant.
-
À l’étape Définir des autorisations, conservez les paramètres, puis choisissez Suivant.
-
Choisissez Créer un compartiment.
-
Dans la console Amazon S3, choisissez le ka-app-code -
<username>
bucket, puis choisissez Upload. -
À 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. -
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
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le tableau de bord du service géré pour Apache Flink, choisissez Créer une application d’analyse.
-
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).
-
-
Pour les autorisations d'accès, choisissez Create/update IAM role
kinesis-analytics-MyApplication-us-west-2
. -
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.
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
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. -
Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.
-
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
-
Sur la MyApplicationpage, choisissez Configurer.
-
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
.
-
-
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
. -
Sous Propriétés, pour ID de groupe, saisissez
ProducerConfigProperties
. -
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
-
Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.
-
Pour la CloudWatch journalisation, cochez la case Activer.
-
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
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) (username
) par votre identifiant de compte.012345678901
{ "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
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
Dans le volet de navigation, choisissez Rôles, puis Créer un rôle.
-
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).
-
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.
-
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. -
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.
-
Sur la page Récapitulatif, choisissez l’onglet Autorisations.
-
Choisissez Attacher des stratégies.
-
Dans la zone de recherche, saisissez
AKReadSourceStreamWriteSinkStream
(la politique que vous avez créée dans la section précédente). -
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
-
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 section précédente. Remplacez l’exemple d’ID de compte (username
) dans le rôle d’exécution de service par votre ID de compte.012345678901
{ "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" } } ] } } } -
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
-
Enregistrez le JSON code suivant dans un fichier nommé
start_request.json
.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
-
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
-
Enregistrez le JSON code suivant dans un fichier nommé
stop_request.json
.{ "ApplicationName": "test" }
-
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
-
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" } } ] } } }
-
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.
Cette rubrique contient les sections suivantes :
Supprimer votre application Managed Service for Apache Flink
Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com
-
Dans le panneau Managed Service for Apache Flink, choisissez MyApplication.
-
Sur la page de l’application, choisissez Supprimer, puis confirmez la suppression.
Supprimer vos flux de données Kinesis
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.
-
Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.
-
Sur la page Kinesis Streams, choisissez le ExampleOutputStream, choisissez Actions, choisissez Supprimer, puis confirmez la suppression.
Supprimer votre objet et votre compartiment Amazon S3
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. -
Choisissez le ka-app-code -
<username>
seau. -
Choisissez Supprimer, puis saisissez le nombre du compartiment pour confirmer la suppression.
Supprimer quatre ressources IAM
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
Dans la barre de navigation, choisissez Stratégies.
-
Dans le contrôle du filtre, saisissez kinesis.
-
Choisissez la politique kinesis-analytics-service- MyApplication -us-west-2.
-
Choisissez Actions de stratégie, puis Supprimer.
-
Dans la barre de navigation, choisissez Rôles.
-
Choisissez le rôle kinesis-analytics- MyApplication -us-west-2.
-
Choisissez Supprimer le rôle, puis confirmez la suppression.
Supprimer vos CloudWatch ressources
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. -
Dans la barre de navigation, choisissez Journaux.
-
Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.
-
Choisissez Supprimer le groupe de journaux, puis confirmez la suppression.
Étape suivante
É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.
Rubriques
- Composants du service géré pour l'application Apache Flink
- Conditions préalables à la réalisation des exercices
- Étape 1 : configurer un AWS compte et créer un utilisateur administrateur
- Étape 2 : configurer le AWS Command Line Interface (AWS CLI)
- Étape 3 : créer et exécuter un service géré pour l'application Apache Flink
- Étape 4 : Nettoyer les AWS ressources
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 :
-
Kit de développement Java (JDK) version 8
. Définissez la variable d' JAVA_HOME
environnement pour qu'elle pointe vers l'emplacement de votre JDK installation. -
Pour utiliser le connecteur Kinesis Apache Flink dans ce didacticiel, vous devez télécharger et installer Apache Flink. Pour plus de détails, consultez Utilisation du connecteur Apache Flink Kinesis Streams avec les versions précédentes d'Apache Flink.
-
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
Ouvrez l'https://portal.aws.amazon.com/billing/inscription.
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/
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
-
Connectez-vous en AWS Management Console
tant que propriétaire du compte en choisissant Utilisateur root et en saisissant votre adresse Compte AWS e-mail. Sur la page suivante, saisissez votre mot de passe. Pour obtenir de l‘aide pour vous connecter en utilisant l‘utilisateur racine, consultez Connexion en tant qu‘utilisateur racine dans le Guide de l‘utilisateur Connexion à AWS .
-
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
-
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 .
-
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
-
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 .
-
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
-
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 :
-
Configuration de l’interface AWS CLI (français non garanti)
-
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.
-
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.
Cette section contient les étapes suivantes :
- Création de deux flux de données Amazon Kinesis
- Écrire des exemples d'enregistrements dans le flux d'entrée
- Téléchargez et examinez le code Java de streaming d'Apache Flink
- Compilez le code de l'application
- Téléchargez le code Java de streaming Apache Flink
- Création et exécution du service géré pour l'application Apache Flink
- Étape suivante
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)
-
Pour créer le premier flux (
ExampleInputStream
), utilisez la commande Amazon Kinesiscreate-stream
AWS CLI suivante.$ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
-
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)
-
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"))
-
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 :
-
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
-
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éthodemain
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
etcreateSinkFromApplicationProperties
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
-
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).
-
-
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
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. -
Choisissez Créer un compartiment.
-
Saisissez
ka-app-code-
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.<username>
-
À l’étape Configurer les options, conservez les paramètres, puis choisissez Suivant.
-
À l’étape Définir des autorisations, conservez les paramètres, puis choisissez Suivant.
-
Choisissez Créer un compartiment.
-
Dans la console Amazon S3, choisissez le ka-app-code -
<username>
bucket, puis choisissez Upload. -
À 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. -
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
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le tableau de bord du service géré pour Apache Flink, choisissez Créer une application d’analyse.
-
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).
-
-
Pour les autorisations d'accès, choisissez Create/update IAM role
kinesis-analytics-MyApplication-us-west-2
. -
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.
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
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. -
Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.
-
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
-
Sur la MyApplicationpage, choisissez Configurer.
-
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
.
-
-
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
. -
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
-
Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.
-
Pour la CloudWatch journalisation, cochez la case Activer.
-
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
-
Sur la MyApplicationpage, choisissez Exécuter. Confirmez l’action.
-
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
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) (username
) par votre identifiant de compte.012345678901
{ "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
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
Dans le volet de navigation, choisissez Rôles, puis Créer un rôle.
-
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).
-
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.
-
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. -
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.
-
Sur la page Récapitulatif, choisissez l’onglet Autorisations.
-
Choisissez Attacher des stratégies.
-
Dans la zone de recherche, saisissez
AKReadSourceStreamWriteSinkStream
(la politique que vous avez créée dans la section précédente). -
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
-
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 section précédente. Remplacez l’exemple d’ID de compte (username
) dans le rôle d’exécution de service par votre ID de compte.012345678901
{ "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" } } ] } } } -
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
-
Enregistrez le JSON code suivant dans un fichier nommé
start_request.json
.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
-
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
-
Enregistrez le JSON code suivant dans un fichier nommé
stop_request.json
.{ "ApplicationName": "test" }
-
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
-
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" } } ] } } }
-
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.
Cette rubrique contient les sections suivantes :
Supprimer votre application Managed Service for Apache Flink
Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com
-
Dans le panneau Managed Service for Apache Flink, choisissez MyApplication.
-
Choisissez Configurer.
-
Dans la section Instantanés, choisissez Désactiver, puis sélectionnez Mettre à jour.
-
Sur la page de l’application, choisissez Supprimer, puis confirmez la suppression.
Supprimer vos flux de données Kinesis
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.
-
Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.
-
Sur la page Kinesis Streams, choisissez le ExampleOutputStream, choisissez Actions, choisissez Supprimer, puis confirmez la suppression.
Supprimer votre objet et votre compartiment Amazon S3
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. -
Choisissez le ka-app-code -
<username>
seau. -
Choisissez Supprimer, puis saisissez le nombre du compartiment pour confirmer la suppression.
Supprimer vos IAM ressources
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
Dans la barre de navigation, choisissez Stratégies.
-
Dans le contrôle du filtre, saisissez kinesis.
-
Choisissez la politique kinesis-analytics-service- MyApplication -us-west-2.
-
Choisissez Actions de stratégie, puis Supprimer.
-
Dans la barre de navigation, choisissez Rôles.
-
Choisissez le rôle kinesis-analytics- MyApplication -us-west-2.
-
Choisissez Supprimer le rôle, puis confirmez la suppression.
Supprimer vos CloudWatch ressources
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. -
Dans la barre de navigation, choisissez Journaux.
-
Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.
-
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.
Rubriques
- Composants d'un service géré pour une application Apache Flink
- Conditions préalables à la réalisation des exercices
- Étape 1 : configurer un AWS compte et créer un utilisateur administrateur
- Étape 2 : configurer le AWS Command Line Interface (AWS CLI)
- Étape 3 : créer et exécuter un service géré pour l'application Apache Flink
- Étape 4 : Nettoyer les AWS ressources
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_HOME
environnement 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
Ouvrez l'https://portal.aws.amazon.com/billing/inscription.
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/
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
-
Connectez-vous en AWS Management Console
tant que propriétaire du compte en choisissant Utilisateur root et en saisissant votre adresse Compte AWS e-mail. Sur la page suivante, saisissez votre mot de passe. Pour obtenir de l‘aide pour vous connecter en utilisant l‘utilisateur racine, consultez Connexion en tant qu‘utilisateur racine dans le Guide de l‘utilisateur Connexion à AWS .
-
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
-
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 .
-
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
-
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 .
-
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
-
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 :
-
Configuration de l’interface AWS CLI (français non garanti)
-
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.
-
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.
Cette section contient les étapes suivantes :
- Création de deux flux de données Amazon Kinesis
- Écrire des exemples d'enregistrements dans le flux d'entrée
- Téléchargez et examinez le code Java de streaming d'Apache Flink
- Compilez le code de l'application
- Téléchargez le code Java de streaming Apache Flink
- Création et exécution du service géré pour l'application Apache Flink
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)
-
Pour créer le premier flux (
ExampleInputStream
), utilisez la commande Amazon Kinesiscreate-stream
AWS CLI suivante.$ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
-
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)
-
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"))
-
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 :
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
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éthodemain
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
etcreateSinkFromApplicationProperties
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
-
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).
-
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
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. -
Choisissez Créer un compartiment.
-
Saisissez
ka-app-code-
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.<username>
-
À l’étape Configurer les options, conservez les paramètres, puis choisissez Suivant.
-
À l’étape Définir des autorisations, conservez les paramètres, puis choisissez Suivant.
-
Choisissez Créer un compartiment.
-
Dans la console Amazon S3, choisissez le ka-app-code -
<username>
bucket, puis choisissez Upload. -
À 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. -
À l'étape Définir des autorisations, conservez les paramètres. Choisissez Suivant.
-
À 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
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le tableau de bord du service géré pour Apache Flink, choisissez Créer une application d’analyse.
-
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.
-
-
Pour les autorisations d'accès, choisissez Create/update IAM role
kinesis-analytics-MyApplication-us-west-2
. -
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.
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
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. -
Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.
-
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
-
Sur la MyApplicationpage, choisissez Configurer.
-
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
.
-
-
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
. -
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
-
Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.
-
Pour la CloudWatch journalisation, cochez la case Activer.
-
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
-
Sur la MyApplicationpage, choisissez Exécuter. Confirmez l’action.
-
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
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) (username
) par votre identifiant de compte.012345678901
{ "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
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
Dans le volet de navigation, choisissez Rôles, puis Créer un rôle.
-
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).
-
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.
-
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. -
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.
-
Sur la page Récapitulatif, choisissez l’onglet Autorisations.
-
Choisissez Attacher des stratégies.
-
Dans la zone de recherche, saisissez
AKReadSourceStreamWriteSinkStream
(la politique que vous avez créée dans la section précédente). -
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
-
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 section précédente. Remplacez l’exemple d’ID de compte (username
) dans le rôle d’exécution de service par votre ID de compte.012345678901
{ "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" } } ] } } } -
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
-
Enregistrez le JSON code suivant dans un fichier nommé
start_request.json
.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
-
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
-
Enregistrez le JSON code suivant dans un fichier nommé
stop_request.json
.{ "ApplicationName": "test" }
-
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
-
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" } } ] } } }
-
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.
Cette rubrique contient les sections suivantes :
Supprimer votre application Managed Service for Apache Flink
Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com
Dans le panneau Managed Service for Apache Flink, choisissez MyApplication.
Choisissez Configurer.
Dans la section Instantanés, choisissez Désactiver, puis sélectionnez Mettre à jour.
Sur la page de l’application, choisissez Supprimer, puis confirmez la suppression.
Supprimer vos flux de données Kinesis
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.
Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.
Sur la page Kinesis Streams, choisissez le ExampleOutputStream, choisissez Actions, choisissez Supprimer, puis confirmez la suppression.
Supprimer votre objet et votre compartiment Amazon S3
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. Choisissez le ka-app-code -
<username>
seau.Choisissez Supprimer, puis saisissez le nombre du compartiment pour confirmer la suppression.
Supprimer vos IAM ressources
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. Dans la barre de navigation, choisissez Stratégies.
Dans le contrôle du filtre, saisissez kinesis.
Choisissez la politique kinesis-analytics-service- MyApplication -us-west-2.
Choisissez Actions de stratégie, puis Supprimer.
Dans la barre de navigation, choisissez Rôles.
Choisissez le rôle kinesis-analytics- MyApplication -us-west-2.
Choisissez Supprimer le rôle, puis confirmez la suppression.
Supprimer vos CloudWatch ressources
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. Dans la barre de navigation, choisissez Journaux.
Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.
Choisissez Supprimer le groupe de journaux, puis confirmez la suppression.
Exemples de versions antérieures (anciennes) pour le service géré pour Apache Flink
Note
Pour des exemples actuels, voirExemples de création et d'utilisation d'un service géré pour les applications 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.
Rubriques
- Exemple : fenêtre à culbuter
- Exemple : fenêtre coulissante
- Exemple : écriture dans un compartiment Amazon S3
- Tutoriel : Utilisation d'un service géré pour l'application Apache Flink afin de répliquer des données d'un sujet d'un MSK cluster vers un autre dans un VPC
- Exemple : utiliser un EFO consommateur avec un flux de données Kinesis
- Exemple : écrire dans Firehose
- Exemple : lecture depuis un flux Kinesis dans un autre compte
- Tutoriel : Utilisation d'un truststore personnalisé avec Amazon MSK
Exemple : fenêtre à culbuter
Note
Pour des exemples actuels, voirExemples de création et d'utilisation d'un service géré pour les applications Apache Flink.
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.
Cette rubrique contient les sections suivantes :
- Création de ressources dépendantes
- Écrire des exemples d'enregistrements dans le flux d'entrée
- Téléchargez et examinez le code de l'application
- Compilez le code de l'application
- Téléchargez le code Java de streaming Apache Flink
- Création et exécution du service géré pour l'application Apache Flink
- Nettoyage des ressources AWS
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
etExampleOutputStream
)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)
-
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'))
-
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 :
Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez Installation de Git
. 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
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 :
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.
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.
-
Dans la console Amazon S3, choisissez le ka-app-code -
<username>
bucket, puis choisissez Upload. -
À 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. 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
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le tableau de bord du service géré pour Apache Flink, choisissez Créer une application d’analyse.
-
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).
-
-
Pour les autorisations d'accès, choisissez Create/update IAM role
kinesis-analytics-MyApplication-us-west-2
. -
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.
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
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. -
Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.
-
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
-
Sur la MyApplicationpage, choisissez Configurer.
-
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
.
-
-
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
. -
Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.
-
Pour la CloudWatch journalisation, cochez la case Activer.
-
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
-
Sur la MyApplicationpage, choisissez Exécuter. Laissez l’option Exécuter sans instantané sélectionnée et confirmez l’action.
-
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.
Cette rubrique contient les sections suivantes :
Supprimer votre application Managed Service for Apache Flink
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
dans le panneau Managed Service for Apache Flink, sélectionnez MyApplication.
Sur la page de l’application, choisissez Supprimer, puis confirmez la suppression.
Supprimer vos flux de données Kinesis
Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com
Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.
Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.
Sur la page Kinesis Streams, choisissez le ExampleOutputStream, choisissez Actions, choisissez Supprimer, puis confirmez la suppression.
Supprimer votre objet et votre compartiment Amazon S3
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. Choisissez le ka-app-code -
<username>
seau.Choisissez Supprimer, puis saisissez le nombre du compartiment pour confirmer la suppression.
Supprimer vos IAM ressources
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. Dans la barre de navigation, choisissez Stratégies.
Dans le contrôle du filtre, saisissez kinesis.
Choisissez la politique kinesis-analytics-service- MyApplication -us-west-2.
Choisissez Actions de stratégie, puis Supprimer.
Dans la barre de navigation, choisissez Rôles.
Choisissez le rôle kinesis-analytics- MyApplication -us-west-2.
Choisissez Supprimer le rôle, puis confirmez la suppression.
Supprimer vos CloudWatch ressources
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. Dans la barre de navigation, choisissez Journaux.
Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.
Choisissez Supprimer le groupe de journaux, puis confirmez la suppression.
Exemple : fenêtre coulissante
Note
Pour des exemples actuels, voirExemples de création et d'utilisation d'un service géré pour les applications Apache Flink.
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.
Cette rubrique contient les sections suivantes :
- Création de ressources dépendantes
- Écrire des exemples d'enregistrements dans le flux d'entrée
- Téléchargez et examinez le code de l'application
- Compilez le code de l'application
- Téléchargez le code Java de streaming Apache Flink
- Création et exécution du service géré pour l'application Apache Flink
- Nettoyer les AWS ressources
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
etExampleOutputStream
).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
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)
-
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"))
-
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 :
Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez Installation de Git
. 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
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 :
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.
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.
-
Dans la console Amazon S3, choisissez le ka-app-code -
<username>
bucket, puis choisissez Upload. -
À 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. 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
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le tableau de bord du service géré pour Apache Flink, choisissez Créer une application d’analyse.
-
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).
-
-
Pour les autorisations d'accès, choisissez Create/update IAM role
kinesis-analytics-MyApplication-us-west-2
. -
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.
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
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. -
Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.
-
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
-
Sur la MyApplicationpage, choisissez Configurer.
-
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
.
-
-
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
. -
Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.
-
Pour la CloudWatch journalisation, cochez la case Activer.
-
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.
Cette rubrique contient les sections suivantes :
Supprimer votre application Managed Service for Apache Flink
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
Dans le panneau Managed Service for Apache Flink, choisissez MyApplication.
Sur la page de l’application, choisissez Supprimer, puis confirmez la suppression.
Supprimer vos flux de données Kinesis
Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com
Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.
Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.
Sur la page Kinesis Streams, choisissez le ExampleOutputStream, choisissez Actions, choisissez Supprimer, puis confirmez la suppression.
Supprimer votre objet et votre compartiment Amazon S3
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. Choisissez le ka-app-code -
<username>
seau.Choisissez Supprimer, puis saisissez le nombre du compartiment pour confirmer la suppression.
Supprimer vos IAM ressources
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. Dans la barre de navigation, choisissez Stratégies.
Dans le contrôle du filtre, saisissez kinesis.
Choisissez la politique kinesis-analytics-service- MyApplication -us-west-2.
Choisissez Actions de stratégie, puis Supprimer.
Dans la barre de navigation, choisissez Rôles.
Choisissez le rôle kinesis-analytics- MyApplication -us-west-2.
Choisissez Supprimer le rôle, puis confirmez la suppression.
Supprimer vos CloudWatch ressources
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. Dans la barre de navigation, choisissez Journaux.
Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.
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.
Cette rubrique contient les sections suivantes :
- Création de ressources dépendantes
- Écrire des exemples d'enregistrements dans le flux d'entrée
- Téléchargez et examinez le code de l'application
- Modifier le code de l'application
- Compilez le code de l'application
- Téléchargez le code Java de streaming Apache Flink
- Création et exécution du service géré pour l'application Apache Flink
- Vérifiez le résultat de l'application
- Facultatif : personnalisez la source et le récepteur
- Nettoyer les AWS ressources
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-
. Créez deux dossiers (<username>
code
etdata
) 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)
-
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'))
-
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 :
-
Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez Installation de Git
. -
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
-
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 StreamingFileSink
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 :
-
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.
-
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.
-
Dans la console Amazon S3, choisissez le ka-app-code -
<username>
bucket, accédez au dossier de code, puis choisissez Upload. -
À 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. -
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
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le tableau de bord du service géré pour Apache Flink, choisissez Créer une application d’analyse.
-
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).
-
-
Pour les autorisations d'accès, choisissez Create/update IAM role
kinesis-analytics-MyApplication-us-west-2
. -
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).
-
-
Pour les autorisations d'accès, choisissez Create/update IAM role
kinesis-analytics-MyApplication-us-west-2
. -
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.
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
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. -
Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.
-
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
-
Sur la MyApplicationpage, choisissez Configurer.
-
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
.
-
-
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
. -
Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.
-
Pour la CloudWatch journalisation, cochez la case Activer.
-
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
-
Sur la MyApplicationpage, choisissez Exécuter. Laissez l’option Exécuter sans instantané sélectionnée et confirmez l’action.
-
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.
Cette section contient les sections suivantes :
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 :
-
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;
-
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 BucketAssignergetBucketId
.
Une implémentation personnalisée du BucketAssigner
peut utiliser le paramètre Context
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 :
-
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.
-
Ajoutez l’instruction d’importation suivante au début du fichier
S3StreamingSinkJob.java
:import java.util.concurrent.TimeUnit;
-
Mettez à jour la méthode
createS3SinkFromStaticConfig
dans le fichierS3StreamingSinkJob.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
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.
Cette rubrique contient les sections suivantes :
Supprimer votre application Managed Service for Apache Flink
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le panneau Managed Service for Apache Flink, choisissez MyApplication.
-
Sur la page de l’application, choisissez Supprimer, puis confirmez la suppression.
Supprimer votre flux de données Kinesis
Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com
-
Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.
-
Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.
Supprimer vos objets et votre compartiment Amazon S3
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. -
Choisissez le ka-app-code -
<username>
seau. -
Choisissez Supprimer, puis saisissez le nombre du compartiment pour confirmer la suppression.
Supprimer vos IAM ressources
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
Dans la barre de navigation, choisissez Stratégies.
-
Dans le contrôle du filtre, saisissez kinesis.
-
Choisissez la politique kinesis-analytics-service- MyApplication -us-west-2.
-
Choisissez Actions de stratégie, puis Supprimer.
-
Dans la barre de navigation, choisissez Rôles.
-
Choisissez le rôle kinesis-analytics- MyApplication -us-west-2.
-
Choisissez Supprimer le rôle, puis confirmez la suppression.
Supprimer vos CloudWatch ressources
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. -
Dans la barre de navigation, choisissez Journaux.
-
Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.
-
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
Note
Pour des exemples actuels, voirExemples de création et d'utilisation d'un service géré pour les applications Apache Flink.
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.
Ce didacticiel contient les sections suivantes :
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éeAWSKafkaTutorialTopicDestination
:bin/kafka-topics.sh --create --zookeeper
ZooKeeperConnectionString
--replication-factor 3 --partitions 1 --topic AWS KafkaTutorialTopicDestinationEnregistrez 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 :
Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez Installation de Git
. 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
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.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.
-
Dans la console Amazon S3, choisissez le ka-app-code -
<username>
bucket, puis choisissez Upload. -
À 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. 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
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink.
-
Dans le tableau de bord du service géré pour Apache Flink, choisissez Créer une application d’analyse.
-
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.
-
-
Pour les autorisations d'accès, choisissez Create/update IAM role
kinesis-analytics-MyApplication-us-west-2
. -
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
-
Sur la MyApplicationpage, choisissez Configurer.
-
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
.
-
-
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.
-
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.
-
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.
-
Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.
-
Pour la CloudWatch journalisation, cochez la case Activer.
-
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.
-
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
Note
Pour des exemples actuels, voirExemples de création et d'utilisation d'un service géré pour les applications Apache Flink.
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
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.
Cette rubrique contient les sections suivantes :
- Création de ressources dépendantes
- Écrire des exemples d'enregistrements dans le flux d'entrée
- Téléchargez et examinez le code de l'application
- Compilez le code de l'application
- Téléchargez le code Java de streaming Apache Flink
- Création et exécution du service géré pour l'application Apache Flink
- Nettoyer les AWS ressources
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
etExampleOutputStream
)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)
-
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'))
-
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 :
Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez Installation de Git
. 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
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 :
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.
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.
-
Dans la console Amazon S3, choisissez le ka-app-code -
<username>
bucket, puis choisissez Upload. -
À 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. 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
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le tableau de bord du service géré pour Apache Flink, choisissez Créer une application d’analyse.
-
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).
-
-
Pour les autorisations d'accès, choisissez Create/update IAM role
kinesis-analytics-MyApplication-us-west-2
. -
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.
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
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. -
Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.
-
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
-
Sur la MyApplicationpage, choisissez Configurer.
-
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
.
-
-
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
. -
Sous Propriétés, sélectionnez Créer un groupe.
-
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
-
Sous Propriétés, sélectionnez Créer un groupe.
-
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
-
Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.
-
Pour la CloudWatch journalisation, cochez la case Activer.
-
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.
Cette rubrique contient les sections suivantes :
Supprimer votre application Managed Service for Apache Flink
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
dans le panneau Managed Service for Apache Flink, sélectionnez MyApplication.
Sur la page de l’application, choisissez Supprimer, puis confirmez la suppression.
Supprimer vos flux de données Kinesis
Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com
Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.
Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.
Sur la page Kinesis Streams, choisissez le ExampleOutputStream, choisissez Actions, choisissez Supprimer, puis confirmez la suppression.
Supprimer votre objet et votre compartiment Amazon S3
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. Choisissez le ka-app-code -
<username>
seau.Choisissez Supprimer, puis saisissez le nombre du compartiment pour confirmer la suppression.
Supprimer vos IAM ressources
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. Dans la barre de navigation, choisissez Stratégies.
Dans le contrôle du filtre, saisissez kinesis.
Choisissez la politique kinesis-analytics-service- MyApplication -us-west-2.
Choisissez Actions de stratégie, puis Supprimer.
Dans la barre de navigation, choisissez Rôles.
Choisissez le rôle kinesis-analytics- MyApplication -us-west-2.
Choisissez Supprimer le rôle, puis confirmez la suppression.
Supprimer vos CloudWatch ressources
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. Dans la barre de navigation, choisissez Journaux.
Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.
Choisissez Supprimer le groupe de journaux, puis confirmez la suppression.
Exemple : écrire dans Firehose
Note
Pour des exemples actuels, voirExemples de création et d'utilisation d'un service géré pour les applications Apache Flink.
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.
Cette section contient les étapes suivantes :
- Création de ressources dépendantes
- Écrire des exemples d'enregistrements dans le flux d'entrée
- Téléchargez et examinez le code Java de streaming d'Apache Flink
- Compilez le code de l'application
- Téléchargez le code Java de streaming Apache Flink
- Création et exécution du service géré pour l'application Apache Flink
- Nettoyage des ressources AWS
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 :
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
.Création d'un flux de diffusion Amazon Kinesis Data Firehose dans le manuel du développeur Amazon Data Firehose. Donnez un nom à votre stream Firehose.
ExampleDeliveryStream
Lorsque vous créez le flux Firehose, créez également la destination et le rôle S3 du flux Firehose. IAMComment 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)
-
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'))
-
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 :
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
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 :
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.
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.
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
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. -
Dans la console, choisissez le ka-app-code -
<username>
bucket, puis choisissez Upload. -
À 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. 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
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le tableau de bord du service géré pour Apache Flink, choisissez Créer une application d’analyse.
-
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).
-
-
Pour les autorisations d'accès, choisissez Create/update IAM role
kinesis-analytics-MyApplication-us-west-2
. -
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.
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
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. -
Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.
-
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
-
Sur la MyApplicationpage, choisissez Configurer.
-
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
.
-
-
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
. -
Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.
-
Pour la CloudWatch journalisation, cochez la case Activer.
-
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) (
) par votre identifiant de compte.012345678901
{ "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
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
Dans le volet de navigation, choisissez Rôles, puis Créer un rôle.
-
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).
-
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.
-
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. -
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.
-
Sur la page Récapitulatif, choisissez l’onglet Autorisations.
-
Choisissez Attacher des stratégies.
-
Dans la zone de recherche, saisissez
AKReadSourceStreamWriteSinkStream
(la politique que vous avez créée dans la section précédente). -
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
-
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-
.) Remplacez l'exemple d'identifiant de compte (<username>
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" } } } } -
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
-
Enregistrez le JSON code suivant dans un fichier nommé
start_request.json
.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
-
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
-
Enregistrez le JSON code suivant dans un fichier nommé
stop_request.json
.{ "ApplicationName": "test" }
-
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.
Cette rubrique contient les sections suivantes :
Supprimer votre application Managed Service for Apache Flink
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
Dans le panneau Managed Service for Apache Flink, choisissez MyApplication.
Choisissez Configurer.
Dans la section Instantanés, choisissez Désactiver, puis sélectionnez Mettre à jour.
Sur la page de l’application, choisissez Supprimer, puis confirmez la suppression.
Supprimer votre flux de données Kinesis
Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com
Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.
Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.
Supprimer votre stream Firehose
Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com
Dans le panneau Firehose, choisissez. ExampleDeliveryStream
Sur la ExampleDeliveryStreampage, choisissez Delete Firehose stream, puis confirmez la suppression.
Supprimer votre objet et votre compartiment Amazon S3
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. Choisissez le ka-app-code -
<username>
seau.Choisissez Supprimer, puis saisissez le nombre du compartiment pour confirmer la suppression.
Si vous avez créé un compartiment Amazon S3 pour la destination de votre flux Firehose, supprimez-le également.
Supprimer vos IAM ressources
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. Dans la barre de navigation, choisissez Stratégies.
Dans le contrôle du filtre, saisissez kinesis.
Choisissez la politique kinesis-analytics-service- MyApplication -us-west-2.
Choisissez Actions de stratégie, puis Supprimer.
Si vous avez créé une nouvelle politique pour votre stream Firehose, supprimez-la également.
Dans la barre de navigation, choisissez Rôles.
Choisissez le rôle kinesis-analytics- MyApplication -us-west-2.
Choisissez Supprimer le rôle, puis confirmez la suppression.
Si vous avez créé un nouveau rôle pour votre stream Firehose, supprimez-le également.
Supprimer vos CloudWatch ressources
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. Dans la barre de navigation, choisissez Journaux.
Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.
Choisissez Supprimer le groupe de journaux, puis confirmez la suppression.
Exemple : lecture depuis un flux Kinesis dans un autre compte
Note
Pour des exemples actuels, voirExemples de création et d'utilisation d'un service géré pour les applications Apache Flink.
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.
Cette rubrique contient les sections suivantes :
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
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-
et un rôle appelé<application name>
-<application region>
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" ] } ] }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
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" } ] }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 :Dans la console IAM de gestion, choisissez Create Role.
Sur la page Créer un rôle, choisissez Service AWS . Dans la liste des services, choisissez Kinesis.
Sous Sélectionnez votre cas d’utilisation, choisissez service géré pour Apache Flink.
Sélectionnez Next: Permissions (Étape suivante : autorisations).
Ajoutez la politique d’autorisations
KA-Source-Stream-Policy
que vous avez créée à l’étape précédente. Choisissez Suivant : balises.Choisissez Suivant : vérification.
Nommez le rôle
KA-Source-Stream-Role
. Votre application utilisera ce rôle pour accéder au flux source.
Ajoutez le compte
kinesis-analytics-MyApplication-us-west-2
ARN from the sink à la relation de confiance duKA-Source-Stream-Role
rôle dans le compte source :Ouvrez le
KA-Source-Stream-Role
dans la IAM console.Choisissez l’onglet Relations d’approbation.
Choisissez Modifier la relation d'approbation.
Utilisez le code suivant pour la relation d’approbation. Remplacez l'exemple d'identifiant de compte (
) avec votre identifiant de compte Sink.SINK012345678
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
:role/service-role/kinesis-analytics-MyApplication-us-west-2" }, "Action": "sts:AssumeRole" } ] }SINK012345678
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 :
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
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.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.
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
Note
Pour des exemples actuels, voirExemples de création et d'utilisation d'un service géré pour les applications Apache Flink.
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
... // 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 :
Un cluster Apache Kafka personnalisé hébergé dans AWS (Amazon EC2
ou Amazon EKS ) Un cluster Confluent Kafka hébergé
dans AWS Un cluster Kafka sur site accessible via ou AWS Direct Connect
VPN
Ce didacticiel contient les sections suivantes :
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éeAWS KafkaTutorialTopicDestination
:bin/kafka-topics.sh --create --bootstrap-server
ZooKeeperConnectionString
--replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopicDestinationNote
Si la
kafka-topics.sh
commande renvoie uneZooKeeperClientTimeoutException
, 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 :
Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez Installation de Git
. 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
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.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.
-
Dans la console Amazon S3, choisissez le ka-app-code -
<username>
bucket, puis choisissez Upload. -
À 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. 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
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le tableau de bord du service géré pour Apache Flink, choisissez Créer une application d’analyse.
-
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.
-
-
Pour les autorisations d'accès, choisissez Create/update IAM role
kinesis-analytics-MyApplication-us-west-2
. -
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
-
Sur la MyApplicationpage, choisissez Configurer.
-
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
.
-
-
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.
-
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.
-
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.
-
Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.
-
Pour la CloudWatch journalisation, cochez la case Activer.
-
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.
-
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.
Rubriques
Exemple : création d'une fenêtre déroulante en Python
Note
Pour des exemples actuels, voirExemples de création et d'utilisation d'un service géré pour les applications Apache Flink.
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.
Cette rubrique contient les sections suivantes :
- Création de ressources dépendantes
- Écrire des exemples d'enregistrements dans le flux d'entrée
- Téléchargez et examinez le code de l'application
- Compressez et téléchargez le code Python de streaming d'Apache Flink
- Création et exécution du service géré pour l'application Apache Flink
- Nettoyer les AWS ressources
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
etExampleOutputStream
)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
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)
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
-
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'))
-
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 :
Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez Installation de Git
. 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
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.
Utilisez votre application de compression préférée pour compresser les fichiers
tumbling-windows.py
etflink-sql-connector-kinesis-1.15.2.jar
. Nommez l’archivemyapp.zip
.-
Dans la console Amazon S3, choisissez le ka-app-code -
<username>
bucket, puis choisissez Upload. -
À 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. 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
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le tableau de bord du service géré pour Apache Flink, choisissez Créer une application d’analyse.
-
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).
-
-
Pour les autorisations d'accès, choisissez Create/update IAM role
kinesis-analytics-MyApplication-us-west-2
. -
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
-
Sur la MyApplicationpage, choisissez Configurer.
-
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
.
-
-
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
. -
Sous Propriétés, sélectionnez Ajouter un groupe.
-
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.
Sous Propriétés, sélectionnez à nouveau Ajouter un groupe.
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
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.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
-
Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.
-
Pour la CloudWatch journalisation, cochez la case Activer.
-
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.
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
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. -
Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.
-
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.
Cette rubrique contient les sections suivantes :
Supprimer votre application Managed Service for Apache Flink
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
dans le panneau Managed Service for Apache Flink, sélectionnez MyApplication.
Sur la page de l’application, choisissez Supprimer, puis confirmez la suppression.
Supprimer vos flux de données Kinesis
Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com
Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.
Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.
Sur la page Kinesis Streams, choisissez le ExampleOutputStream, choisissez Actions, choisissez Supprimer, puis confirmez la suppression.
Supprimer votre objet et votre compartiment Amazon S3
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. Choisissez le ka-app-code -
<username>
seau.Choisissez Supprimer, puis saisissez le nombre du compartiment pour confirmer la suppression.
Supprimer vos IAM ressources
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. Dans la barre de navigation, choisissez Stratégies.
Dans le contrôle du filtre, saisissez kinesis.
Choisissez la politique kinesis-analytics-service- MyApplication -us-west-2.
Choisissez Actions de stratégie, puis Supprimer.
Dans la barre de navigation, choisissez Rôles.
Choisissez le rôle kinesis-analytics- MyApplication -us-west-2.
Choisissez Supprimer le rôle, puis confirmez la suppression.
Supprimer vos CloudWatch ressources
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. Dans la barre de navigation, choisissez Journaux.
Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.
Choisissez Supprimer le groupe de journaux, puis confirmez la suppression.
Exemple : création d'une fenêtre coulissante en Python
Note
Pour des exemples actuels, voirExemples de création et d'utilisation d'un service géré pour les applications Apache Flink.
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.
Cette rubrique contient les sections suivantes :
- Création de ressources dépendantes
- Écrire des exemples d'enregistrements dans le flux d'entrée
- Téléchargez et examinez le code de l'application
- Compressez et téléchargez le code Python de streaming d'Apache Flink
- Création et exécution du service géré pour l'application Apache Flink
- Nettoyer les AWS ressources
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
etExampleOutputStream
)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
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)
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
-
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'))
-
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 :
Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez Installation de Git
. 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
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") )
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.
Utilisez votre application de compression préférée pour compresser les fichiers
sliding-windows.py
etflink-sql-connector-kinesis-1.15.2.jar
. Nommez l’archivemyapp.zip
.-
Dans la console Amazon S3, choisissez le ka-app-code -
<username>
bucket, puis choisissez Upload. -
À 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. 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
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le tableau de bord du service géré pour Apache Flink, choisissez Créer une application d’analyse.
-
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).
-
-
Pour les autorisations d'accès, choisissez Create/update IAM role
kinesis-analytics-MyApplication-us-west-2
. -
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
-
Sur la MyApplicationpage, choisissez Configurer.
-
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
.
-
-
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
. -
Sous Propriétés, sélectionnez Ajouter un groupe.
-
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.
Sous Propriétés, sélectionnez à nouveau Ajouter un groupe.
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
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.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
-
Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.
-
Pour la CloudWatch journalisation, cochez la case Activer.
-
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.
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
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. -
Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.
-
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.
Cette rubrique contient les sections suivantes :
Supprimer votre application Managed Service for Apache Flink
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
dans le panneau Managed Service for Apache Flink, sélectionnez MyApplication.
Sur la page de l’application, choisissez Supprimer, puis confirmez la suppression.
Supprimer vos flux de données Kinesis
Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com
Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.
Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.
Sur la page Kinesis Streams, choisissez le ExampleOutputStream, choisissez Actions, choisissez Supprimer, puis confirmez la suppression.
Supprimer votre objet et votre compartiment Amazon S3
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. Choisissez le ka-app-code -
<username>
seau.Choisissez Supprimer, puis saisissez le nombre du compartiment pour confirmer la suppression.
Supprimer vos IAM ressources
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. Dans la barre de navigation, choisissez Stratégies.
Dans le contrôle du filtre, saisissez kinesis.
Choisissez la politique kinesis-analytics-service- MyApplication -us-west-2.
Choisissez Actions de stratégie, puis Supprimer.
Dans la barre de navigation, choisissez Rôles.
Choisissez le rôle kinesis-analytics- MyApplication -us-west-2.
Choisissez Supprimer le rôle, puis confirmez la suppression.
Supprimer vos CloudWatch ressources
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. Dans la barre de navigation, choisissez Journaux.
Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.
Choisissez Supprimer le groupe de journaux, puis confirmez la suppression.
Exemple : envoyer des données de streaming à Amazon S3 en Python
Note
Pour des exemples actuels, voirExemples de création et d'utilisation d'un service géré pour les applications Apache Flink.
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.
Cette rubrique contient les sections suivantes :
- Création de ressources dépendantes
- Écrire des exemples d'enregistrements dans le flux d'entrée
- Téléchargez et examinez le code de l'application
- Compressez et téléchargez le code Python de streaming d'Apache Flink
- Création et exécution du service géré pour l'application Apache Flink
- Nettoyer les AWS ressources
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
-
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'))
-
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 :
Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez Installation de Git
. 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
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 diffusionimport 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)
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.
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
.-
Dans la console Amazon S3, choisissez le ka-app-code -
<username>
bucket, puis choisissez Upload. -
À 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. 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
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le tableau de bord du service géré pour Apache Flink, choisissez Créer une application d’analyse.
-
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).
-
-
Pour les autorisations d'accès, choisissez Create/update IAM role
kinesis-analytics-MyApplication-us-west-2
. -
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
-
Sur la MyApplicationpage, choisissez Configurer.
-
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
.
-
-
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
. -
Sous Propriétés, sélectionnez Ajouter un groupe.
-
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.
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.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
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.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
-
Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.
-
Pour la CloudWatch journalisation, cochez la case Activer.
-
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.
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
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. -
Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.
-
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.
Cette rubrique contient les sections suivantes :
Supprimer votre application Managed Service for Apache Flink
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
dans le panneau Managed Service for Apache Flink, sélectionnez MyApplication.
Sur la page de l’application, choisissez Supprimer, puis confirmez la suppression.
Supprimer votre flux de données Kinesis
Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com
Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.
Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.
Supprimer vos objets et votre compartiment Amazon S3
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. Choisissez le ka-app-code -
<username>
seau.Choisissez Supprimer, puis saisissez le nombre du compartiment pour confirmer la suppression.
Supprimer vos IAM ressources
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. Dans la barre de navigation, choisissez Stratégies.
Dans le contrôle du filtre, saisissez kinesis.
Choisissez la politique kinesis-analytics-service- MyApplication -us-west-2.
Choisissez Actions de stratégie, puis Supprimer.
Dans la barre de navigation, choisissez Rôles.
Choisissez le rôle kinesis-analytics- MyApplication -us-west-2.
Choisissez Supprimer le rôle, puis confirmez la suppression.
Supprimer vos CloudWatch ressources
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. Dans la barre de navigation, choisissez Journaux.
Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.
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.
Rubriques
Exemple : création d'une fenêtre déroulante dans Scala
Note
Pour des exemples actuels, voirExemples de création et d'utilisation d'un service géré pour les applications Apache Flink.
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).
Cette rubrique contient les sections suivantes :
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 :
Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez Installation de Git
. 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
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'SBT
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
-
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.
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. Choisissez Créer un compartiment.
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.À l’étape Configurer les options, conservez les paramètres, puis choisissez Suivant.
À l’étape Définir des autorisations, conservez les paramètres, puis choisissez Suivant.
Choisissez Créer un compartiment.
Ouvrez le compartiment
ka-app-code-<username>
, puis choisissez Charger.-
À 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. 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
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le tableau de bord du service géré pour Apache Flink, choisissez Créer une application d’analyse.
-
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).
-
-
Pour les autorisations d'accès, choisissez Create/update IAM role
kinesis-analytics-MyApplication-us-west-2
. -
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
-
Sur la MyApplicationpage, choisissez Configurer.
-
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
.
-
-
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
. -
Sous Propriétés, sélectionnez Ajouter un groupe.
-
Saisissez :
ID du groupe Clé Valeur ConsumerConfigProperties
input.stream.name
ExampleInputStream
ConsumerConfigProperties
aws.region
us-west-2
ConsumerConfigProperties
flink.stream.initpos
LATEST
Choisissez Enregistrer.
Sous Propriétés, sélectionnez à nouveau Ajouter un groupe.
Saisissez :
ID du groupe Clé Valeur ProducerConfigProperties
output.stream.name
ExampleOutputStream
ProducerConfigProperties
aws.region
us-west-2
-
Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.
-
Pour la CloudWatch journalisation, cochez la case Activer.
-
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
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
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. -
Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.
-
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
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. Dans le volet de navigation, choisissez Rôles, puis Créer un Rôle.
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électionnez votre cas d’utilisation, choisissez service géré pour Apache Flink.
Sélectionnez Next: Permissions (Étape suivante : autorisations).
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.
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.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.
Sur la page Récapitulatif, choisissez l’onglet Autorisations.
Choisissez Attacher des stratégies.
Dans la zone de recherche, saisissez
AKReadSourceStreamWriteSinkStream
(la politique que vous avez créée dans la section précédente).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
Enregistrez le JSON code suivant dans un fichier nommé
start_request.json
.{ "ApplicationName": "tumbling_window", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
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
Enregistrez le JSON code suivant dans un fichier nommé
stop_request.json
.{ "ApplicationName": "tumbling_window" }
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
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" } } ] } } }
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.
Cette rubrique contient les sections suivantes :
Supprimer votre application Managed Service for Apache Flink
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
dans le panneau Managed Service for Apache Flink, sélectionnez MyApplication.
Sur la page de l’application, choisissez Supprimer, puis confirmez la suppression.
Supprimer vos flux de données Kinesis
Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com
Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.
Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.
Sur la page Kinesis Streams, choisissez le ExampleOutputStream, choisissez Actions, choisissez Supprimer, puis confirmez la suppression.
Supprimer votre objet et votre compartiment Amazon S3
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. Choisissez le ka-app-code -
<username>
seau.Choisissez Supprimer, puis saisissez le nombre du compartiment pour confirmer la suppression.
Supprimer vos IAM ressources
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. Dans la barre de navigation, choisissez Stratégies.
Dans le contrôle du filtre, saisissez kinesis.
Choisissez la politique kinesis-analytics-service- MyApplication -us-west-2.
Choisissez Actions de stratégie, puis Supprimer.
Dans la barre de navigation, choisissez Rôles.
Choisissez le rôle kinesis-analytics- MyApplication -us-west-2.
Choisissez Supprimer le rôle, puis confirmez la suppression.
Supprimer vos CloudWatch ressources
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. Dans la barre de navigation, choisissez Journaux.
Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.
Choisissez Supprimer le groupe de journaux, puis confirmez la suppression.
Exemple : création d'une fenêtre coulissante dans Scala
Note
Pour des exemples actuels, voirExemples de création et d'utilisation d'un service géré pour les applications Apache Flink.
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).
Cette rubrique contient les sections suivantes :
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 :
Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez Installation de Git
. 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
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'SBT
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
-
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.
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. Choisissez Créer un compartiment.
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.À l’étape Configurer les options, conservez les paramètres, puis choisissez Suivant.
À l’étape Définir des autorisations, conservez les paramètres, puis choisissez Suivant.
Choisissez Créer un compartiment.
Ouvrez le compartiment
ka-app-code-<username>
, puis choisissez Charger.-
À 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. 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
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le tableau de bord du service géré pour Apache Flink, choisissez Créer une application d’analyse.
-
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).
-
-
Pour les autorisations d'accès, choisissez Create/update IAM role
kinesis-analytics-MyApplication-us-west-2
. -
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
-
Sur la MyApplicationpage, choisissez Configurer.
-
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.
.
-
-
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
. -
Sous Propriétés, sélectionnez Ajouter un groupe.
-
Saisissez :
ID du groupe Clé Valeur ConsumerConfigProperties
input.stream.name
ExampleInputStream
ConsumerConfigProperties
aws.region
us-west-2
ConsumerConfigProperties
flink.stream.initpos
LATEST
Choisissez Enregistrer.
Sous Propriétés, sélectionnez à nouveau Ajouter un groupe.
Saisissez :
ID du groupe Clé Valeur ProducerConfigProperties
output.stream.name
ExampleOutputStream
ProducerConfigProperties
aws.region
us-west-2
-
Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.
-
Pour la CloudWatch journalisation, cochez la case Activer.
-
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
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
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. -
Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.
-
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
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. Dans le volet de navigation, choisissez Rôles, puis Créer un Rôle.
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électionnez votre cas d’utilisation, choisissez service géré pour Apache Flink.
Sélectionnez Next: Permissions (Étape suivante : autorisations).
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.
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.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.
Sur la page Récapitulatif, choisissez l’onglet Autorisations.
Choisissez Attacher des stratégies.
Dans la zone de recherche, saisissez
AKReadSourceStreamWriteSinkStream
(la politique que vous avez créée dans la section précédente).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
Enregistrez le JSON code suivant dans un fichier nommé
start_request.json
.{ "ApplicationName": "sliding_window", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
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
Enregistrez le JSON code suivant dans un fichier nommé
stop_request.json
.{ "ApplicationName": "sliding_window" }
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
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" } } ] } } }
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.
Cette rubrique contient les sections suivantes :
Supprimer votre application Managed Service for Apache Flink
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
dans le panneau Managed Service for Apache Flink, sélectionnez MyApplication.
Sur la page de l’application, choisissez Supprimer, puis confirmez la suppression.
Supprimer vos flux de données Kinesis
Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com
Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.
Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.
Sur la page Kinesis Streams, choisissez le ExampleOutputStream, choisissez Actions, choisissez Supprimer, puis confirmez la suppression.
Supprimer votre objet et votre compartiment Amazon S3
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. Choisissez le ka-app-code -
<username>
seau.Choisissez Supprimer, puis saisissez le nombre du compartiment pour confirmer la suppression.
Supprimer vos IAM ressources
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. Dans la barre de navigation, choisissez Stratégies.
Dans le contrôle du filtre, saisissez kinesis.
Choisissez la politique kinesis-analytics-service- MyApplication -us-west-2.
Choisissez Actions de stratégie, puis Supprimer.
Dans la barre de navigation, choisissez Rôles.
Choisissez le rôle kinesis-analytics- MyApplication -us-west-2.
Choisissez Supprimer le rôle, puis confirmez la suppression.
Supprimer vos CloudWatch ressources
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. Dans la barre de navigation, choisissez Journaux.
Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.
Choisissez Supprimer le groupe de journaux, puis confirmez la suppression.
Exemple : envoyer des données de streaming à Amazon S3 dans Scala
Note
Pour des exemples actuels, voirExemples de création et d'utilisation d'un service géré pour les applications Apache Flink.
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>.
Cette rubrique contient les sections suivantes :
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 :
Installez le client Git si vous ne l’avez pas déjà fait. Pour plus d’informations, consultez Installation de Git
. 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
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'SBT
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
-
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.
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. Choisissez Créer un compartiment.
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.À l’étape Configurer les options, conservez les paramètres, puis choisissez Suivant.
À l’étape Définir des autorisations, conservez les paramètres, puis choisissez Suivant.
Choisissez Créer un compartiment.
Ouvrez le compartiment
ka-app-code-<username>
, puis choisissez Charger.-
À 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. 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
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
-
Dans le tableau de bord du service géré pour Apache Flink, choisissez Créer une application d’analyse.
-
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).
-
-
Pour les autorisations d'accès, choisissez Create/update IAM role
kinesis-analytics-MyApplication-us-west-2
. -
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
-
Sur la MyApplicationpage, choisissez Configurer.
-
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
.
-
-
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
. -
Sous Propriétés, sélectionnez Ajouter un groupe.
-
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).
-
Sous Propriétés, sélectionnez Ajouter un groupe.
-
Saisissez :
ID du groupe Clé Valeur ProducerConfigProperties
s3.sink.path
s3a://ka-app-code-
<user-name>
/data -
Sous Surveillance, assurez-vous que Surveillance du niveau des métriques est défini sur Application.
-
Pour la CloudWatch journalisation, cochez la case Activer.
-
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
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
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. -
Sur la page Récapitulatif, choisissez Modifier la politique. Choisissez l'JSONonglet.
-
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
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. Dans le volet de navigation, choisissez Rôles, puis Créer un Rôle.
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électionnez votre cas d’utilisation, choisissez service géré pour Apache Flink.
Sélectionnez Next: Permissions (Étape suivante : autorisations).
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.
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.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.
Sur la page Récapitulatif, choisissez l’onglet Autorisations.
Choisissez Attacher des stratégies.
Dans la zone de recherche, saisissez
AKReadSourceStreamWriteSinkStream
(la politique que vous avez créée dans la section précédente).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
Enregistrez le JSON code suivant dans un fichier nommé
start_request.json
.{{ "ApplicationName": "s3_sink", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
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
Enregistrez le JSON code suivant dans un fichier nommé
stop_request.json
.{ "ApplicationName": "s3_sink" }
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
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" } } ] } } }
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.
Cette rubrique contient les sections suivantes :
Supprimer votre application Managed Service for Apache Flink
Ouvrez le service géré pour la console Apache Flink à https://console.aws.amazon.com l'adresse /flink
dans le panneau Managed Service for Apache Flink, sélectionnez MyApplication.
Sur la page de l’application, choisissez Supprimer, puis confirmez la suppression.
Supprimer vos flux de données Kinesis
Ouvrez la console Kinesis à l'adresse /kinesis. https://console.aws.amazon.com
Dans le panneau Kinesis Data Streams, ExampleInputStreamsélectionnez.
Sur la ExampleInputStreampage, choisissez Supprimer Kinesis Stream, puis confirmez la suppression.
Sur la page Kinesis Streams, choisissez le ExampleOutputStream, choisissez Actions, choisissez Supprimer, puis confirmez la suppression.
Supprimer votre objet et votre compartiment Amazon S3
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. Choisissez le ka-app-code -
<username>
seau.Choisissez Supprimer, puis saisissez le nombre du compartiment pour confirmer la suppression.
Supprimer vos IAM ressources
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. Dans la barre de navigation, choisissez Stratégies.
Dans le contrôle du filtre, saisissez kinesis.
Choisissez la politique kinesis-analytics-service- MyApplication -us-west-2.
Choisissez Actions de stratégie, puis Supprimer.
Dans la barre de navigation, choisissez Rôles.
Choisissez le rôle kinesis-analytics- MyApplication -us-west-2.
Choisissez Supprimer le rôle, puis confirmez la suppression.
Supprimer vos CloudWatch ressources
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. Dans la barre de navigation, choisissez Journaux.
Choisissez le groupe/aws/kinesis-analytics/MyApplicationlog.
Choisissez Supprimer le groupe de journaux, puis confirmez la suppression.