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.
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éation d'une IAM politique
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": "getting_started", "ApplicationDescription": "Scala getting started application", "RuntimeEnvironment": "FLINK-1_19", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-
username
", "FileKey": "getting-started-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": "getting_started", "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": "getting_started", "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": "getting_started", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-<username>", "FileKeyUpdate": "getting-started-scala-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU" } } } } }