Création et exécution de l’application (CLI) - Service géré pour Apache Flink

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

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

Création et exécution de 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 ressources IAM, votre application ne peut pas accéder à ses flux de données et de journaux.

Vous commencez par créer une stratégie d’autorisations avec deux instructions : une qui accorde des autorisations pour l’action de lecture sur le flux source et une autre qui accorde des autorisations pour les actions d’écriture sur le flux récepteur. Vous attachez ensuite la politique à un rôle IAM (que vous allez créer dans la section suivante). Ainsi, lorsque le service géré pour Apache Flink assume le rôle, le service dispose des autorisations nécessaires pour lire à partir du flux source et écrire dans le flux récepteur.

Utilisez le code suivant pour créer la politique d’autorisations AKReadSourceStreamWriteSinkStream. Remplacez username par le nom d’utilisateur que vous avez utilisé pour créer le compartiment Amazon S3 pour stocker le code d’application. Remplacez l’ID de compte dans les Amazon Resource Names (ARN) ((012345678901)) par votre ID 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 l'utilisateur IAM.

Créer une politique IAM

Dans cette section, vous créez un rôle IAM que l’application de service géré pour Apache Flink peut assumer pour lire un flux source et écrire dans le flux récepteur.

Le service géré pour Apache Flink ne peut pas accéder à votre flux sans autorisation. Vous utilisez un rôle IAM pour accorder ces autorisations. Deux politiques sont attachées à chaque rôle IAM. La politique d’approbation accorde au service géré pour Apache Flink l’autorisation d’assumer le rôle, et la politique d’autorisation détermine ce que le service géré pour Apache Flink peut faire après avoir assumé le rôle.

Vous attachez la politique d’autorisations que vous avez créée dans la section précédente à ce rôle.

Pour créer un rôle IAM
  1. Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/.

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

  3. Sous Sélectionner le type d’identité approuvée, choisissez Service AWS .

  4. Sous Choisir le service qui utilisera ce rôle, choisissez EC2.

  5. Sous Sélectionnez votre cas d’utilisation, choisissez service géré pour Apache Flink.

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

  7. Dans la page Attacher des stratégies d’autorisations, choisissez Suivant : vérification. Vous attachez des stratégies d’autorisations après avoir créé le rôle.

  8. Sur la page Créer un rôle, saisissez MF-stream-rw-role pour le Nom du rôle. Sélectionnez Créer un rôle.

    Vous venez de créer un nouveau rôle IAM appelé MF-stream-rw-role. Ensuite, vous mettez à jour les stratégies d’approbation et d’autorisation pour le rôle.

  9. Attachez la politique d’autorisation au rôle.

    Note

    Dans le cadre de cet exercice, Managed Service for Apache Flink assume ce rôle à la fois pour la lecture des données à partir d’un flux de données Kinesis (source) et pour l’écriture des résultats dans un autre flux de données Kinesis. Vous attachez donc la politique que vous avez créée à l’étape précédente, Créer une stratégie d’autorisations.

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

    2. Choisissez Attacher des stratégies.

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

    4. Sélectionnez la politique AKReadSourceStreamWriteSinkStream, puis Attacher une stratégie.

Vous avez maintenant créé le rôle d’exécution de service que votre application utilise pour accéder aux ressources. Notez l’ARN du nouveau rôle.

Pour step-by-step obtenir des instructions sur la création d'un rôle, consultez la section Création d'un rôle IAM (console) dans le guide de l'utilisateur IAM.

Pour créer l’application

Copiez le code JSON suivant dans un fichier nommé create_request.json. Remplacez l’exemple d’ARN du rôle par l’ARN du rôle que vous avez créé précédemment. Remplacez le suffixe de l’ARN du compartiment (nom d’utilisateur) par le suffixe que vous avez choisi dans la section précédente. Remplacez l’exemple d’ID de compte (012345678901) dans le rôle d’exécution de service par votre ID de compte.

{ "ApplicationName": "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
  1. Copiez le code JSON suivant dans un fichier nommé start_request.json.

    { "ApplicationName": "getting_started", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. Exécutez l’action StartApplication avec la demande précédente pour démarrer l’application :

    aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json

L’application est maintenant en cours d’exécution. Vous pouvez consulter les métriques du service géré pour Apache Flink sur la CloudWatch console Amazon pour vérifier que l'application fonctionne.

Arrêtez l'application

Dans cette section, vous utilisez l'StopApplicationaction pour arrêter l'application.

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

    { "ApplicationName": "s3_sink" }
  2. Exécutez l’action StopApplication avec la demande précédente pour arrêter l’application :

    aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json

L’application est maintenant arrêtée.

Ajouter une option de CloudWatch journalisation

Vous pouvez utiliser le AWS CLI pour ajouter un flux de CloudWatch journal Amazon à votre application. Pour plus d'informations sur l'utilisation CloudWatch des journaux avec votre application, consultez la section Configuration de la journalisation des applications.

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

Dans cette section, vous utilisez l'UpdateApplicationaction pour modifier les propriétés d'environnement de l'application sans recompiler le code de l'application. Dans cet exemple, vous modifiez la région des flux source et de destination.

Pour mettre à jour des propriétés d’environnement pour l’application
  1. Copiez le code JSON 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" } } ] } }
  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'action UpdateApplicationCLI.

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" } } } } }