Creación y ejecución de la aplicación (CLI) - Managed Service para Apache Flink

Amazon Managed Service para Apache Flink Amazon se denominaba anteriormente Amazon Kinesis Data Analytics para Apache Flink.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Creación y ejecución de la aplicación (CLI)

En esta sección, se utiliza AWS Command Line Interface para crear y ejecutar la aplicación Managed Service for Apache Flink. Utilice el AWS CLI comando kinesisanalyticsv2 para crear aplicaciones de Managed Service for Apache Flink e interactuar con ellas.

Creación de una política de permisos

nota

Debe crear una política de permisos y un rol para su aplicación. Si no crea estos recursos de IAM, la aplicación no podrá acceder a sus flujos de datos y de registro.

En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción de lectura en el flujo de origen y otra que concede permisos para las acciones de escritura en el flujo de recepción. A continuación, asocie la política a un rol de IAM (que se crea en la siguiente sección). Por lo tanto, cuando Managed Service para Apache Flink asume el rol, el servicio tiene los permisos necesarios para leer desde el flujo de origen y escribir en el flujo de recepción.

Utilice el siguiente código para crear la política de permisos AKReadSourceStreamWriteSinkStream. Reemplace username por el nombre de usuario que se utilizó para crear el bucket de Amazon S3 para almacenar el código de la aplicación. Reemplace el ID de la cuenta en el nombre de recurso de Amazon (ARN) (012345678901) por el ID de su cuenta.

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

Para step-by-step obtener instrucciones sobre cómo crear una política de permisos, consulte el tutorial: Cómo crear y adjuntar su primera política gestionada por el cliente en la Guía del usuario de IAM.

Creación de una política de IAM

En esta sección, creará un rol de IAM que la aplicación de Managed Service para Apache Flink pueda asumir para leer un flujo de origen y escribir en el flujo de recepción.

Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se conceden a través del rol de IAM. Cada rol de IAM tiene dos políticas asociadas. La política de confianza concede a Managed Service para Apache Flink permiso para asumir el rol, y la política de permisos determina lo que Managed Service para Apache Flink puede hacer después de asumir el rol.

Usted deberá asociar la política de permisos que ha creado en la sección anterior a este rol.

Cómo crear un rol de IAM
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, seleccione Roles y, a continuación, seleccione Crear rol.

  3. En Seleccionar tipo de entidad de confianza, elija Servicio de AWS

  4. En Elegir el servicio que usará este rol, elija Kinesis.

  5. En Seleccione su caso de uso, elija Managed Service para Apache Flink.

  6. Elija Siguiente: permisos.

  7. En la página Asociar políticas de permisos, elija Siguiente: Revisión. Asociará políticas de permisos después de crear el rol.

  8. En la página Crear rol, escriba MF-stream-rw-role como Nombre de rol. Elija Crear rol.

    Ahora ha creado un nuevo rol de IAM llamado MF-stream-rw-role. A continuación, actualice las políticas de confianza y permisos para el rol

  9. Asocie la política de permisos al rol.

    nota

    Para este ejercicio, Managed Service para Apache Flink asume este rol tanto para leer datos de un flujo de datos de Kinesis (origen) como para escribir la salida en otro flujo de datos de Kinesis. Para asociar la política que ha creado en el paso anterior: Crear una política de permisos.

    1. En la página Resumen, elija la pestaña Permisos.

    2. Seleccione Asociar políticas.

    3. En el campo de búsqueda, escriba AKReadSourceStreamWriteSinkStream (la política que ha creado en la sección anterior).

    4. Elija la política AKReadSourceStreamWriteSinkStream y, a continuación, elija Asociar política.

Ahora ha creado el rol de ejecución de servicio que utiliza la aplicación para obtener acceso a los recursos. Anote el ARN del nuevo rol.

Para step-by-step obtener instrucciones sobre cómo crear un rol, consulte Creación de un rol de IAM (consola) en la Guía del usuario de IAM.

Creación de la aplicación

Guarde el siguiente código JSON en un archivo denominado create_request.json. Cambie el ARN del rol de ejemplo por el ARN del rol que ha creado antes. Reemplace el sufijo del ARN del bucket (nombre de usuario) por el sufijo que eligió en la sección anterior. Reemplace el ID de la cuenta de muestra (012345678901) en el rol de ejecución del servicio por el ID de su cuenta.

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

CreateApplicationEjecútelo con la siguiente solicitud para crear la aplicación:

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

Se ha creado la aplicación. Puede iniciar la aplicación en el siguiente paso.

Inicie la aplicación

En esta sección, se utiliza la StartApplicationacción para iniciar la aplicación.

Cómo iniciar la aplicación
  1. Guarde el siguiente código JSON en un archivo denominado start_request.json.

    { "ApplicationName": "getting_started", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. Ejecute la acción StartApplication con la solicitud anterior para iniciar la aplicación:

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

Ya se debe estar ejecutando la aplicación. Puedes comprobar las métricas de Managed Service for Apache Flink en la CloudWatch consola de Amazon para comprobar que la aplicación funciona.

Detenga la aplicación

En esta sección, se utiliza la StopApplicationacción para detener la aplicación.

Cómo detener la aplicación
  1. Guarde el siguiente código JSON en un archivo denominado stop_request.json.

    { "ApplicationName": "s3_sink" }
  2. Ejecute la acción StopApplication con la solicitud anterior para detener la aplicación:

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

La aplicación se habrá detenido.

Agregue una opción de CloudWatch registro

Puedes usar el AWS CLI para añadir un flujo de CloudWatch registro de Amazon a tu aplicación. Para obtener información sobre el uso de CloudWatch registros con su aplicación, consulte Configuración del registro de aplicaciones.

Actualice las propiedades del entorno

En esta sección, se utiliza la UpdateApplicationacción para cambiar las propiedades del entorno de la aplicación sin volver a compilar el código de la aplicación. En este ejemplo, deberá cambiar la región de los flujos de origen y destino.

Cómo actualizar las propiedades de entorno de la aplicación
  1. Guarde el siguiente código JSON en un archivo denominado 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. Ejecute la acción UpdateApplication con la solicitud anterior para actualizar las propiedades del entorno:

    aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json

Actualización del código de la aplicación

Cuando necesite actualizar el código de la aplicación con una nueva versión del paquete de códigos, utilice la acción UpdateApplicationCLI.

nota

Para cargar una nueva versión del código de la aplicación con el mismo nombre de archivo, debe especificar la nueva versión del objeto. Para obtener más información sobre el uso de versiones de objetos de Amazon S3, consulte Enabling or Disabling Versioning.

Para usarlo AWS CLI, elimine su paquete de códigos anterior de su bucket de Amazon S3, cargue la nueva versión y llameUpdateApplication, especificando el mismo nombre de objeto y bucket de Amazon S3 y la nueva versión del objeto. La aplicación se reiniciará con el nuevo paquete de código.

En el siguiente ejemplo de solicitud de la acción UpdateApplication, se vuelve a cargar el código de la aplicación y se reinicia la aplicación. Actualice la CurrentApplicationVersionId a la versión actual de la aplicación. Puede comprobar la versión actual de la aplicación mediante las acciones ListApplications o DescribeApplication. Actualice el sufijo del nombre del bucket (<username>) con el sufijo que haya elegido en la sección Cree recursos dependientes.

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