Información sobre versiones anteriores de Managed Service for Apache Flink - 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.

Información sobre versiones anteriores de Managed Service for Apache Flink

nota

La comunidad de Apache Flink no admite las versiones 1.6, 1.8 y 1.11 de Apache Flink desde hace más de tres años. Tenemos previsto dejar de utilizar estas versiones en Amazon Managed Service para Apache Flink el 5 de noviembre de 2024. A partir de esta fecha, no podrá crear nuevas aplicaciones para estas versiones de Flink. En este momento, puede seguir ejecutando las aplicaciones existentes. Puede actualizar sus aplicaciones de forma automática mediante la función de actualizaciones de versiones local de Amazon Managed Service for Apache Flink. Para obtener más información, consulte. Utilice actualizaciones de versión locales para Apache Flink

Managed Service for Apache Flink admite las versiones 1.15.2 y 1.13.2 de Apache Flink, pero la comunidad de Apache Flink ya no las admite.

Uso del conector Apache Flink Kinesis Streams con versiones anteriores de Apache Flink

El conector Apache Flink Kinesis Streams no estaba incluido en Apache Flink antes de la versión 1.11. Para que su aplicación utilice el conector Apache Flink Kinesis con versiones anteriores de Apache Flink, debe descargar, compilar e instalar la versión de Apache Flink que utilice su aplicación. Este conector se utiliza para consumir datos de un flujo de Kinesis utilizado como fuente de aplicación o para escribir datos en un flujo de Kinesis utilizado para la salida de la aplicación.

nota

Asegúrese de que está compilando el conector con la versión 0.14.0 o superior de KPL.

Para descargar e instalar el código fuente de la versión 1.8.2 de Apache Flink, haga lo siguiente:

  1. Asegúrese de tener instalado Apache Maven y de que su variable de entorno JAVA_HOME apunte a un JDK en lugar de un JRE. Puede probar la instalación de Apache Maven con el siguiente comando:

    mvn -version
  2. Descargue el código fuente de la versión 1.8.2 de Apache Flink:

    wget https://archive.apache.org/dist/flink/flink-1.8.2/flink-1.8.2-src.tgz
  3. Descomprima el código fuente de Apache Flink:

    tar -xvf flink-1.8.2-src.tgz
  4. Cambie al directorio del código fuente de Apache Flink:

    cd flink-1.8.2
  5. Compile e instale Apache Flink:

    mvn clean install -Pinclude-kinesis -DskipTests
    nota

    Si está compilando Flink en Microsoft Windows, debe agregar el parámetro -Drat.skip=true.

Creación de aplicaciones con Apache Flink 1.8.2

Esta sección contiene información sobre los componentes que se utilizan para crear aplicaciones de Managed Service para Apache Flink que funcionan con Apache Flink 1.8.2.

Utilice las siguientes versiones de los componentes para las aplicaciones de Managed Service para Apache Flink:

Componente Versión
Java 1.8 (recomendado)
Apache Flink 1.8.2
Servicio gestionado para Apache Flink for Flink Runtime () aws-kinesisanalytics-runtime 1.0.1
Servicio gestionado para los conectores Apache Flink Flink () aws-kinesisanalytics-flink 1.0.1
Apache Maven 3.1

Para compilar una aplicación con Apache Flink 1.8.2, ejecute Maven con el siguiente parámetro:

mvn package -Dflink.version=1.8.2

Para ver un ejemplo de un archivo pom.xml de una aplicación de Managed Service para Apache Flink que utiliza la versión 1.8.2 de Apache Flink, consulte Managed Service for Apache Flink 1.8.2 Getting Started Application.

Para obtener información sobre cómo crear y usar el código de aplicación para una aplicación de Managed Service para Apache Flink, consulte Cree un servicio gestionado para la aplicación Apache Flink.

Creación de aplicaciones con Apache Flink 1.6.2

Esta sección contiene información sobre los componentes que se utilizan para crear aplicaciones de Managed Service para Apache Flink que funcionan con Apache Flink 1.6.2.

Utilice las siguientes versiones de los componentes para las aplicaciones de Managed Service para Apache Flink:

Componente Versión
Java 1.8 (recomendado)
AWS SDK de Java 1.11.379
Apache Flink 1.6.2
Servicio gestionado para Apache Flink para Flink Runtime () aws-kinesisanalytics-runtime 1.0.1
Servicio gestionado para los conectores Apache Flink Flink () aws-kinesisanalytics-flink 1.0.1
Apache Maven 3.1
Apache Beam No compatible con Apache Flink 1.6.2
nota

Al utilizar la versión 1.0.1 del tiempo de ejecución de Managed Service para Apache Flink, debe especificar la versión de Apache Flink del archivo pom.xml en lugar de utilizar el parámetro -Dflink.version al compilar el código de la aplicación.

Para ver un ejemplo de un archivo pom.xml de una aplicación de Managed Service para Apache Flink que utiliza la versión 1.6.2 de Apache Flink, consulte Managed Service for Apache Flink 1.6.2 Getting Started Application.

Para obtener información sobre cómo crear y usar el código de aplicación para una aplicación de Managed Service para Apache Flink, consulte Cree un servicio gestionado para la aplicación Apache Flink.

Actualización de aplicaciones

Para actualizar la versión de Apache Flink de una aplicación de Amazon Managed Service for Apache Flink, utilice la función de actualización de versión local de Apache Flink mediante el AWS CLI AWS SDK o el. AWS CloudFormation AWS Management Console Para obtener más información, consulte Utilice actualizaciones de versión locales para Apache Flink.

Puedes usar esta función con cualquier aplicación existente que utilices con Amazon Managed Service para Apache Flink en READY o RUNNING estado.

Conectores disponibles en Apache Flink 1.6.2 y 1.8.2

El marco de Apache Flink contiene conectores para acceder a los datos desde una variedad de fuentes.

Primeros pasos: Flink 1.13.2

En esta sección, se presentan los conceptos fundamentales del servicio gestionado para Apache Flink y la DataStream API. Describe las opciones disponibles para crear y probar sus aplicaciones. También proporciona instrucciones para instalar las herramientas necesarias para completar los tutoriales de esta guía y crear su primera aplicación.

Componentes de una aplicación de servicio gestionado para Apache Flink

Para procesar los datos, su aplicación de Managed Service para Apache Flink utiliza una aplicación Java/Apache Maven o Scala que procesa las entradas y produce las salidas mediante el tiempo de ejecución de Apache Flink.

La aplicación de Managed Service para Apache Flink tiene los siguientes componentes:

Después de crear, compilar y empaquetar el código de la aplicación, debe cargar el paquete del código a un bucket de Amazon Simple Storage Service (Amazon S3). Luego debe crear la aplicación de Managed Service para Apache Flink. Introduzca la ubicación del paquete del código, un flujo de datos de Kinesis como origen de datos de streaming y, normalmente, una ubicación de streaming o archivo que recibe los datos procesados de la aplicación.

Requisitos previos para completar los ejercicios

Para completar los pasos de esta guía, debe disponer de lo siguiente:

Para empezar, vaya a Configure una AWS cuenta y cree un usuario administrador.

Paso 1: Configurar una AWS cuenta y crear un usuario administrador

Inscríbase en una Cuenta de AWS

Si no tiene uno Cuenta de AWS, complete los siguientes pasos para crearlo.

Para suscribirse a una Cuenta de AWS
  1. Abra https://portal.aws.amazon.com/billing/signup.

  2. Siga las instrucciones que se le indiquen.

    Parte del procedimiento de registro consiste en recibir una llamada telefónica e indicar un código de verificación en el teclado del teléfono.

    Cuando te registras en una Cuenta de AWS, Usuario raíz de la cuenta de AWSse crea una. El usuario raíz tendrá acceso a todos los Servicios de AWS y recursos de esa cuenta. Como práctica recomendada de seguridad, asigne acceso administrativo a un usuario y utilice únicamente el usuario raíz para realizar tareas que requieren acceso de usuario raíz.

AWS te envía un correo electrónico de confirmación una vez finalizado el proceso de registro. Puede ver la actividad de la cuenta y administrar la cuenta en cualquier momento entrando en https://aws.amazon.com/ y seleccionando Mi cuenta.

Creación de un usuario con acceso administrativo

Después de crear un usuario administrativo Cuenta de AWS, asegúrelo Usuario raíz de la cuenta de AWS AWS IAM Identity Center, habilite y cree un usuario administrativo para no usar el usuario root en las tareas diarias.

Proteja su Usuario raíz de la cuenta de AWS
  1. Inicie sesión AWS Management Consolecomo propietario de la cuenta seleccionando el usuario root e introduciendo su dirección de Cuenta de AWS correo electrónico. En la siguiente página, escriba su contraseña.

    Para obtener ayuda para iniciar sesión con el usuario raíz, consulte Iniciar sesión como usuario raíz en la Guía del usuario de AWS Sign-In .

  2. Active la autenticación multifactor (MFA) para el usuario raíz.

    Para obtener instrucciones, consulte Habilitar un dispositivo MFA virtual para el usuario Cuenta de AWS raíz (consola) en la Guía del usuario de IAM.

Creación de un usuario con acceso administrativo
  1. Activar IAM Identity Center.

    Consulte las instrucciones en Activar AWS IAM Identity Center en la Guía del usuario de AWS IAM Identity Center .

  2. En IAM Identity Center, conceda acceso administrativo a un usuario.

    Para ver un tutorial sobre su uso Directorio de IAM Identity Center como fuente de identidad, consulte Configurar el acceso de los usuarios con la configuración predeterminada Directorio de IAM Identity Center en la Guía del AWS IAM Identity Center usuario.

Iniciar sesión como usuario con acceso de administrador
  • Para iniciar sesión con el usuario de IAM Identity Center, utilice la URL de inicio de sesión que se envió a la dirección de correo electrónico cuando creó el usuario de IAM Identity Center.

    Para obtener ayuda para iniciar sesión con un usuario del Centro de identidades de IAM, consulte Iniciar sesión en el portal de AWS acceso en la Guía del AWS Sign-In usuario.

Concesión de acceso a usuarios adicionales
  1. En IAM Identity Center, cree un conjunto de permisos que siga la práctica recomendada de aplicar permisos de privilegios mínimos.

    Para conocer las instrucciones, consulte Create a permission set en la Guía del usuario de AWS IAM Identity Center .

  2. Asigne usuarios a un grupo y, a continuación, asigne el acceso de inicio de sesión único al grupo.

    Para conocer las instrucciones, consulte Add groups en la Guía del usuario de AWS IAM Identity Center .

Conceder acceso programático

Los usuarios necesitan acceso programático si quieren interactuar con personas AWS ajenas a. AWS Management Console La forma de conceder el acceso programático depende del tipo de usuario que acceda. AWS

Para conceder acceso programático a los usuarios, elija una de las siguientes opciones.

¿Qué usuario necesita acceso programático? Para Mediante

Identidad del personal

(Usuarios administrados en el IAM Identity Center)

Usa credenciales temporales para firmar las solicitudes programáticas a los AWS CLI AWS SDK o las API. AWS

Siga las instrucciones de la interfaz que desea utilizar:

IAM Utilice credenciales temporales para firmar las solicitudes programáticas a los AWS SDK o las AWS CLI API. AWS Siga las instrucciones de Uso de credenciales temporales con AWS recursos de la Guía del usuario de IAM.
IAM

(No recomendado)

Utilice credenciales de larga duración para firmar las solicitudes programáticas a los AWS CLI AWS SDK o las API. AWS

Siga las instrucciones de la interfaz que desea utilizar:

Siguiente paso

Configure el AWS Command Line Interface (AWS CLI)

Siguiente paso

Paso 2: Configura el AWS Command Line Interface ()AWS CLI

Paso 2: Configura el AWS Command Line Interface ()AWS CLI

En este paso, debe descargar y configurar AWS CLI para usarlo con Managed Service for Apache Flink.

nota

En los ejercicios introductorios de esta guía se presupone que está utilizando las credenciales de administrador (adminuser) en su cuenta para realizar las operaciones.

nota

Si ya lo tiene AWS CLI instalado, es posible que necesite actualizarlo para obtener la funcionalidad más reciente. Para obtener más información, consulte Installing the AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface . Para comprobar la versión de AWS CLI, ejecute el siguiente comando:

aws --version

Los ejercicios de este tutorial requieren la siguiente AWS CLI versión o una posterior:

aws-cli/1.16.63
Para configurar el AWS CLI
  1. Descargue y configure la AWS CLI. Para obtener instrucciones, consulte los siguientes temas en la Guía del usuario de la AWS Command Line Interface :

  2. Añada un perfil con nombre para el usuario administrador en el AWS CLI config archivo. Puede utilizar este perfil cuando ejecute los comandos de la AWS CLI . Para obtener más información sobre los perfiles con nombre, consulte Perfiles con nombre en la Guía del usuario de la 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

    Para obtener una lista de AWS las regiones disponibles, consulte Regiones y puntos finales en la Referencia general de Amazon Web Services.

    nota

    El código y los comandos de ejemplo de este tutorial utilizan la región Oeste de EE. UU. (Oregón). Para usar una región diferente, cambie la región en el código y los comandos de este tutorial por la región que desea usar.

  3. Verifique la configuración introduciendo el siguiente comando de ayuda en el símbolo del sistema:

    aws help

Después de configurar una AWS cuenta y el AWS CLI, puede probar el siguiente ejercicio, en el que configurará una aplicación de ejemplo y probará la end-to-end configuración.

Siguiente paso

Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink

Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink

En este ejercicio, deberá crear una aplicación de Managed Service para Apache Flink con flujos de datos como origen y receptor.

Cree dos transmisiones de datos de Amazon Kinesis

Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, cree dos flujos de datos de Kinesis (ExampleInputStream y ExampleOutputStream). Su aplicación utiliza estos flujos para los flujos de origen y destino de la aplicación.

Puede crear estos flujos mediante la consola de Amazon Kinesis o el siguiente comando de la AWS CLI . Para obtener instrucciones sobre la consola, consulte Creating and Updating Data Streams en la Guía para desarrolladores de Amazon Kinesis Data Streams.

Cómo crear flujos de datos (AWS CLI)
  1. Para crear la primera transmisión (ExampleInputStream), utilice el siguiente comando de Amazon Kinesis create-stream AWS CLI .

    $ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
  2. Para crear el segundo flujo que la aplicación utilizará para escribir la salida, ejecute el mismo comando, cambiando el nombre a ExampleOutputStream.

    $ aws kinesis create-stream \ --stream-name ExampleOutputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser

Escriba registros de muestra en la transmisión de entrada

En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.

nota

Esta sección requiere AWS SDK for Python (Boto).

  1. Cree un archivo denominado stock.py con el siguiente contenido:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  2. Más adelante en el tutorial, se ejecuta el script stock.py para enviar datos a la aplicación.

    $ python stock.py

Descargue y examine el código Java de streaming de Apache Flink

El código de la aplicación Java para este ejemplo está disponible en. GitHub Para descargar el código de la aplicación, haga lo siguiente:

  1. Clone el repositorio remoto con el siguiente comando:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  2. Vaya al directorio amazon-kinesis-data-analytics-java-examples/GettingStarted.

Tenga en cuenta lo siguiente en relación con el código de la aplicación:

  • Un archivo Project Object Model (pom.xml) contiene información sobre la configuración y las dependencias de la aplicación, incluidas las bibliotecas de Managed Service para Apache Flink.

  • El archivo BasicStreamingJob.java contiene el método main que define la funcionalidad de la aplicación.

  • La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de Kinesis:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • La aplicación crea conectores de origen y recepción para obtener acceso a recursos externos usando un objeto StreamExecutionEnvironment.

  • La aplicación crea conectores de origen y recepción mediante propiedades estáticas. Para utilizar propiedades dinámicas de la aplicación, utilice los métodos createSourceFromApplicationProperties y createSinkFromApplicationProperties para crear los conectores. Estos métodos leen las propiedades de la aplicación para configurar los conectores.

    Para obtener más información sobre las propiedades de tiempo de ejecución, consulte Utilice las propiedades de tiempo de ejecución en Managed Service for Apache Flink.

Compila el código de la aplicación

En esta sección, se utiliza el compilador Apache Maven para crear el código de Java para la aplicación. Para obtener más información sobre la instalación de Apache Maven y el Java Development Kit (JDK), consulte Cumpla con los requisitos previos para completar los ejercicios.

Cómo compilar el código de la aplicación
  1. Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Puede compilar y empaquetar el código de una de las dos formas siguientes:

    • Utilice la herramienta de línea de comandos de Maven. Cree su archivo JAR ejecutando el siguiente comando en el directorio que contiene el archivo pom.xml:

      mvn package -Dflink.version=1.13.2
    • Use el entorno de desarrollo. Consulte la documentación de su entorno de desarrollo para obtener más información.

      nota

      El código fuente proporcionado se basa en bibliotecas de Java 11.

    Puede cargar el paquete como un archivo JAR o puede comprimir el paquete y cargarlo como un archivo ZIP. Si crea la aplicación con AWS CLI, especifique el tipo de contenido del código (JAR o ZIP).

  2. Si hay errores al compilar, verifique que la variable de entorno JAVA_HOME se ha configurado correctamente.

Si la aplicación se compila correctamente, se crea el siguiente archivo:

target/aws-kinesis-analytics-java-apps-1.0.jar

Cargue el código Java de streaming de Apache Flink

En esta sección, creará un bucket de Amazon Simple Storage Service (Amazon S3) y cargará el código de la aplicación.

Cómo cargar el código de la aplicación
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija Crear bucket.

  3. Escriba ka-app-code-<username> en el campo Nombre del bucket. Añada un sufijo al nombre del bucket, como su nombre de usuario, para que sea único a nivel global. Elija Siguiente.

  4. En el paso Configurar opciones, deje los ajustes tal y como están y elija Siguiente.

  5. En el paso Establecer permisos, deje los ajustes tal y como están y elija Siguiente.

  6. Elija Crear bucket.

  7. En la consola de Amazon S3, elija el <username>bucket ka-app-code- y elija Upload.

  8. En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo aws-kinesis-analytics-java-apps-1.0.jar que creó en el paso anterior. Elija Siguiente.

  9. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.

El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.

Cree y ejecute la aplicación Managed Service for Apache Flink

Puede crear y ejecutar una aplicación de Managed Service para Apache Flink mediante la consola o la AWS CLI.

nota

Cuando crea la aplicación mediante la consola, sus recursos AWS Identity and Access Management (de IAM) y de Amazon CloudWatch Logs se crean automáticamente. Cuando crea la aplicación con AWS CLI, crea estos recursos por separado.

Cree y ejecute la aplicación (consola)

Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.

Creación de la aplicación
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.

  3. En la página Managed Service para Apache Flink: crear aplicación, proporcione los detalles de la aplicación de la siguiente manera:

    • En Nombre de la aplicación, escriba MyApplication.

    • En Descripción, escriba My java test app.

    • En Tiempo de ejecución, escriba Apache Flink.

    • Deje el menú desplegable de versión como Apache Flink versión 1.13.

  4. Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM. kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:

  • Política: kinesis-analytics-service-MyApplication-us-west-2

  • Rol: kinesisanalytics-MyApplication-us-west-2

Edite la política de IAM

Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Elija Políticas. Elija la política kinesis-analytics-service-MyApplication-us-west-2 que la consola creó en su nombre en la sección anterior.

  3. En la página Resumen, elija Editar política. Seleccione la pestaña JSON.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (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/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" } ] }
Configure la aplicación
  1. En la MyApplicationpágina, elija Configurar.

  2. En la página Configurar aplicación, proporcione la Ubicación del código:

    • Para el bucket de Amazon S3, introduzca ka-app-code-<username>.

    • En Ruta al objeto de Amazon S3, introduzca aws-kinesis-analytics-java-apps-1.0.jar.

  3. En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM kinesis-analytics-MyApplication-us-west-2.

  4. Introduzca lo siguiente:

    ID de grupo Clave Valor
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  5. En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.

  6. Para el CloudWatch registro, active la casilla Activar.

  7. Elija Actualizar.

nota

Cuando eliges habilitar el CloudWatch registro de Amazon, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros para ti. Los nombres de estos recursos son los siguientes:

  • Grupo de registro: /aws/kinesis-analytics/MyApplication

  • Flujo de registro: kinesis-analytics-log-stream

Ejecución de la aplicación

Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.

Detenga la aplicación

En la MyApplicationpágina, selecciona Detener. Confirme la acción.

Actualizar la aplicación

Mediante la consola, puede actualizar la configuración de la aplicación, tal como sus propiedades, ajustes de monitorización y la ubicación o el nombre de archivo JAR de la aplicación. También puede volver a cargar el JAR de la aplicación del bucket de Amazon S3 si necesita actualizar el código de la aplicación.

En la MyApplicationpágina, elija Configurar. Actualice la configuración de la aplicación y elija Actualizar.

Cree y ejecute la aplicación (AWS CLI)

En esta sección, se utiliza AWS CLI para crear y ejecutar la aplicación Managed Service for Apache Flink. Managed Service for Apache Flink usa el kinesisanalyticsv2 AWS CLI comando para crear aplicaciones 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 read en el flujo de origen y otra que concede permisos para las acciones write 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. Sustituya el ID de la cuenta en los nombres de recurso de Amazon (ARN) (012345678901) por el ID de su cuenta.

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

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.

nota

Para acceder a otros servicios de Amazon, puede usar AWS SDK for Java. Managed Service para Apache Flink establece automáticamente las credenciales requeridas por el SDK con las del rol de IAM de ejecución del servicio asociada a su aplicación. No hace falta realizar ningún otro paso.

Creación de un rol 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, elija Roles, Crear rol.

  3. En Seleccionar tipo de entidad de confianza, elija Servicio de AWS . En Elegir el servicio que usará este rol, elija Kinesis. En Seleccionar su caso de uso, elija Kinesis Analytics.

    Elija Siguiente: permisos.

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

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

  6. 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. Asocie la política que ha creado en el paso anterior, Creación de 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 ReadSourceStreamWriteSinkStream política AK y elija Adjuntar 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.

Cree la aplicación Managed Service para Apache Flink
  1. 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 (username) por el sufijo que eligió en la sección anterior. Reemplace el ID de la cuenta de ejemplo (012345678901) del rol de ejecución del servicio por el ID de su cuenta.

    { "ApplicationName": "test", "ApplicationDescription": "my java test app", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "aws-kinesis-analytics-java-apps-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
  2. Ejecute la acción CreateApplication con la solicitud anterior 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.

Inicio de la aplicación

En esta sección, se utiliza la acción StartApplication 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": "test", "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.

Detención de la aplicación

En esta sección, se utiliza la acción StopApplication 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": "test" }
  2. Ejecute la acción StopApplication con la siguiente solicitud para detener la aplicación:

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

La aplicación se habrá detenido.

Agrega 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 CloudWatch de Logs con su aplicación, consulteConfigurar el registro de aplicaciones en Managed Service for Apache Flink.

Actualización de las propiedades de entorno

En esta sección, utilizará la acción UpdateApplication para cambiar las propiedades del entorno de la aplicación sin tener que 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": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
  2. 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 UpdateApplication AWS CLI acción.

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 el paquete de códigos anterior de su bucket de Amazon S3, cargue la nueva versión y llameUpdateApplication, especificando el mismo nombre de bucket y objeto 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 dos transmisiones de datos de Amazon Kinesis.

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

Siguiente paso

Paso 4: Limpiar AWS los recursos

Paso 4: Limpiar AWS los recursos

Esta sección incluye procedimientos para limpiar AWS los recursos creados en el tutorial de introducción.

Elimine su aplicación Managed Service for Apache Flink

  1. Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis.

  2. En el panel Servicio gestionado para Apache Flink, elija. MyApplication

  3. En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.

Elimine sus transmisiones de datos de Kinesis

  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel Kinesis Data Streams, ExampleInputStreamelija.

  3. En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.

  4. En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.

Elimine el objeto y el bucket de Amazon S3

  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija el cubo ka-app-code -. <username>

  3. Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.

Elimine sus recursos de IAM

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En la barra de navegación, seleccione Políticas.

  3. En el control de filtros, introduzca kinesis.

  4. Elija la política kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleccione Acciones de política y, a continuación, Eliminar.

  6. En la barra de navegación, seleccione Roles.

  7. Elija el rol kinesis-analytics- MyApplication -us-west-2.

  8. Elija Eliminar rol y, a continuación, confirme la eliminación.

CloudWatch Elimine sus recursos

  1. Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.

  2. En la barra de navegación, elija Registros.

  3. Elija el grupo de registros MyApplication/aws/kinesis-analytics/.

  4. Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.

Siguiente paso

Paso 5: Siguientes pasos

Paso 5: Siguientes pasos

Ahora que ha creado y ejecutado una aplicación básica de Managed Service para Apache Flink, consulte los siguientes recursos para conocer soluciones más avanzadas de Managed Service para Apache Flink.

  • La solución de datos de AWS transmisión para Amazon Kinesis: la solución de datos de AWS transmisión para Amazon Kinesis configura automáticamente AWS los servicios necesarios para capturar, almacenar, procesar y entregar fácilmente los datos de transmisión. La solución ofrece varias opciones para resolver casos de uso de datos de streaming. La opción Managed Service for Apache Flink ofrece un ejemplo de ETL de end-to-end streaming que muestra una aplicación real que ejecuta operaciones analíticas con datos simulados de taxis de Nueva York. La solución configura todos los AWS recursos necesarios, como las funciones y políticas de IAM, un CloudWatch panel de control y alarmas. CloudWatch

  • AWS Solución de transmisión de datos para Amazon MSK: La solución de AWS transmisión de datos para Amazon MSK proporciona AWS CloudFormation plantillas en las que los datos fluyen a través de los productores, el almacenamiento de streaming, los consumidores y los destinos.

  • Clickstream Lab con Apache Flink y Apache Kafka: Un laboratorio integral para casos de uso de secuencias de clics que utiliza Amazon Managed Streaming para Apache Kafka para almacenamiento de streaming y aplicaciones de Managed Service para Apache Flink para procesamiento de flujos.

  • Taller de Amazon Managed Service para Apache Flink: en este taller, crearás una arquitectura de end-to-end streaming para ingerir, analizar y visualizar datos de streaming prácticamente en tiempo real. Usted se propuso mejorar las operaciones de una empresa de taxis de la ciudad de Nueva York. Usted analiza los datos de telemetría de una flota de taxis de la ciudad de Nueva York prácticamente en tiempo real para optimizar las operaciones de su flota.

  • Aprenda Flink: formación práctica: formación oficial introductoria sobre Apache Flink que le permitirá empezar a crear aplicaciones escalables de ETL de streaming, análisis y basadas en eventos.

    nota

    Tenga en cuenta que Managed Service para Apache Flink no es compatible con la versión de Apache Flink (1.12) utilizada en esta formación. Puede utilizar Flink 1.15.2 en el servicio gestionado de Flink para Apache Flink.

Primeros pasos: Flink 1.11.1: obsoleto

nota

La comunidad de Apache Flink no admite las versiones 1.6, 1.8 y 1.11 de Apache Flink desde hace más de tres años. Tenemos previsto dejar de utilizar estas versiones en Amazon Managed Service para Apache Flink el 5 de noviembre de 2024. A partir de esta fecha, no podrá crear nuevas aplicaciones para estas versiones de Flink. En este momento, puede seguir ejecutando las aplicaciones existentes. Puede actualizar sus aplicaciones de forma automática mediante la función de actualizaciones de versiones local de Amazon Managed Service for Apache Flink. Para obtener más información, consulte. Utilice actualizaciones de versión locales para Apache Flink

Este tema contiene una versión del Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink tutorial que utiliza Apache Flink 1.11.1.

En esta sección, se presentan los conceptos fundamentales del servicio gestionado para Apache Flink y la API. DataStream Describe las opciones disponibles para crear y probar sus aplicaciones. También proporciona instrucciones para instalar las herramientas necesarias para completar los tutoriales de esta guía y crear su primera aplicación.

Componentes de una aplicación de servicio gestionado para Apache Flink

Para procesar los datos, su aplicación de Managed Service para Apache Flink utiliza una aplicación Java/Apache Maven o Scala que procesa las entradas y produce las salidas mediante el tiempo de ejecución de Apache Flink.

Una aplicación de Managed Service para Apache Flink tiene los siguientes componentes:

Después de crear, compilar y empaquetar el código de la aplicación, debe cargar el paquete del código a un bucket de Amazon Simple Storage Service (Amazon S3). Luego debe crear la aplicación de Managed Service para Apache Flink. Introduzca la ubicación del paquete del código, un flujo de datos de Kinesis como origen de datos de streaming y, normalmente, una ubicación de streaming o archivo que recibe los datos procesados de la aplicación.

Requisitos previos para completar los ejercicios

Para completar los pasos de esta guía, debe disponer de lo siguiente:

Para empezar, vaya a Configure una AWS cuenta y cree un usuario administrador.

Paso 1: Configurar una AWS cuenta y crear un usuario administrador

Inscríbase en una Cuenta de AWS

Si no tiene uno Cuenta de AWS, complete los siguientes pasos para crearlo.

Para suscribirse a una Cuenta de AWS
  1. Abra https://portal.aws.amazon.com/billing/signup.

  2. Siga las instrucciones que se le indiquen.

    Parte del procedimiento de registro consiste en recibir una llamada telefónica e indicar un código de verificación en el teclado del teléfono.

    Cuando te registras en una Cuenta de AWS, Usuario raíz de la cuenta de AWSse crea una. El usuario raíz tendrá acceso a todos los Servicios de AWS y recursos de esa cuenta. Como práctica recomendada de seguridad, asigne acceso administrativo a un usuario y utilice únicamente el usuario raíz para realizar tareas que requieren acceso de usuario raíz.

AWS te envía un correo electrónico de confirmación una vez finalizado el proceso de registro. Puede ver la actividad de la cuenta y administrar la cuenta en cualquier momento entrando en https://aws.amazon.com/ y seleccionando Mi cuenta.

Creación de un usuario con acceso administrativo

Después de crear un usuario administrativo Cuenta de AWS, asegúrelo Usuario raíz de la cuenta de AWS AWS IAM Identity Center, habilite y cree un usuario administrativo para no usar el usuario root en las tareas diarias.

Proteja su Usuario raíz de la cuenta de AWS
  1. Inicie sesión AWS Management Consolecomo propietario de la cuenta seleccionando el usuario root e introduciendo su dirección de Cuenta de AWS correo electrónico. En la siguiente página, escriba su contraseña.

    Para obtener ayuda para iniciar sesión con el usuario raíz, consulte Iniciar sesión como usuario raíz en la Guía del usuario de AWS Sign-In .

  2. Active la autenticación multifactor (MFA) para el usuario raíz.

    Para obtener instrucciones, consulte Habilitar un dispositivo MFA virtual para el usuario Cuenta de AWS raíz (consola) en la Guía del usuario de IAM.

Creación de un usuario con acceso administrativo
  1. Activar IAM Identity Center.

    Consulte las instrucciones en Activar AWS IAM Identity Center en la Guía del usuario de AWS IAM Identity Center .

  2. En IAM Identity Center, conceda acceso administrativo a un usuario.

    Para ver un tutorial sobre su uso Directorio de IAM Identity Center como fuente de identidad, consulte Configurar el acceso de los usuarios con la configuración predeterminada Directorio de IAM Identity Center en la Guía del AWS IAM Identity Center usuario.

Iniciar sesión como usuario con acceso de administrador
  • Para iniciar sesión con el usuario de IAM Identity Center, utilice la URL de inicio de sesión que se envió a la dirección de correo electrónico cuando creó el usuario de IAM Identity Center.

    Para obtener ayuda para iniciar sesión con un usuario del Centro de identidades de IAM, consulte Iniciar sesión en el portal de AWS acceso en la Guía del AWS Sign-In usuario.

Concesión de acceso a usuarios adicionales
  1. En IAM Identity Center, cree un conjunto de permisos que siga la práctica recomendada de aplicar permisos de privilegios mínimos.

    Para conocer las instrucciones, consulte Create a permission set en la Guía del usuario de AWS IAM Identity Center .

  2. Asigne usuarios a un grupo y, a continuación, asigne el acceso de inicio de sesión único al grupo.

    Para conocer las instrucciones, consulte Add groups en la Guía del usuario de AWS IAM Identity Center .

Conceder acceso programático

Los usuarios necesitan acceso programático si quieren interactuar con personas AWS ajenas a. AWS Management Console La forma de conceder el acceso programático depende del tipo de usuario que acceda. AWS

Para conceder acceso programático a los usuarios, elija una de las siguientes opciones.

¿Qué usuario necesita acceso programático? Para Mediante

Identidad del personal

(Usuarios administrados en el IAM Identity Center)

Usa credenciales temporales para firmar las solicitudes programáticas a los AWS CLI AWS SDK o las API. AWS

Siga las instrucciones de la interfaz que desea utilizar:

IAM Utilice credenciales temporales para firmar las solicitudes programáticas a los AWS SDK o las AWS CLI API. AWS Siga las instrucciones de Uso de credenciales temporales con AWS recursos de la Guía del usuario de IAM.
IAM

(No recomendado)

Utilice credenciales de larga duración para firmar las solicitudes programáticas a los AWS CLI AWS SDK o las API. AWS

Siga las instrucciones de la interfaz que desea utilizar:

Siguiente paso

Configure el AWS Command Line Interface (AWS CLI)

Paso 2: Configuración de la AWS Command Line Interface (AWS CLI)

En este paso, debe descargar y configurar AWS CLI para usarlo con Managed Service for Apache Flink.

nota

En los ejercicios introductorios de esta guía se presupone que está utilizando las credenciales de administrador (adminuser) en su cuenta para realizar las operaciones.

nota

Si ya lo tiene AWS CLI instalado, es posible que necesite actualizarlo para obtener la funcionalidad más reciente. Para obtener más información, consulte Installing the AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface . Para comprobar la versión de AWS CLI, ejecute el siguiente comando:

aws --version

Los ejercicios de este tutorial requieren la siguiente AWS CLI versión o una posterior:

aws-cli/1.16.63
Para configurar el AWS CLI
  1. Descargue y configure la AWS CLI. Para obtener instrucciones, consulte los siguientes temas en la Guía del usuario de la AWS Command Line Interface :

  2. Añada un perfil con nombre para el usuario administrador en el AWS CLI config archivo. Puede utilizar este perfil cuando ejecute los comandos de la AWS CLI . Para obtener más información sobre los perfiles con nombre, consulte Perfiles con nombre en la Guía del usuario de la 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

    Para obtener una lista de AWS las regiones disponibles, consulte Regiones y puntos finales en la Referencia general de Amazon Web Services.

    nota

    El código y los comandos de ejemplo de este tutorial utilizan la región Oeste de EE. UU. (Oregón). Para usar una región diferente, cambie la región en el código y los comandos de este tutorial por la región que desea usar.

  3. Verifique la configuración introduciendo el siguiente comando de ayuda en el símbolo del sistema:

    aws help

Después de configurar una AWS cuenta y el AWS CLI, puede probar el siguiente ejercicio, en el que configurará una aplicación de ejemplo y probará la end-to-end configuración.

Siguiente paso

Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink

Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink

En este ejercicio, deberá crear una aplicación de Managed Service para Apache Flink con flujos de datos como origen y receptor.

Cree dos transmisiones de datos de Amazon Kinesis

Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, cree dos flujos de datos de Kinesis (ExampleInputStream y ExampleOutputStream). Su aplicación utiliza estos flujos para los flujos de origen y destino de la aplicación.

Puede crear estos flujos mediante la consola de Amazon Kinesis o el siguiente comando de la AWS CLI . Para obtener instrucciones sobre la consola, consulte Creating and Updating Data Streams en la Guía para desarrolladores de Amazon Kinesis Data Streams.

Cómo crear flujos de datos (AWS CLI)
  1. Para crear la primera transmisión (ExampleInputStream), utilice el siguiente comando de Amazon Kinesis create-stream AWS CLI .

    $ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
  2. Para crear el segundo flujo que la aplicación utilizará para escribir la salida, ejecute el mismo comando, cambiando el nombre a ExampleOutputStream.

    $ aws kinesis create-stream \ --stream-name ExampleOutputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser

Escriba registros de muestra en la transmisión de entrada

En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.

nota

Esta sección requiere AWS SDK for Python (Boto).

  1. Cree un archivo denominado stock.py con el siguiente contenido:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { "EVENT_TIME": datetime.datetime.now().isoformat(), "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]), "PRICE": round(random.random() * 100, 2), } def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey" ) if __name__ == "__main__": generate(STREAM_NAME, boto3.client("kinesis"))
  2. Más adelante en el tutorial, se ejecuta el script stock.py para enviar datos a la aplicación.

    $ python stock.py

Descargue y examine el código Java de streaming de Apache Flink

El código de la aplicación Java para este ejemplo está disponible en. GitHub Para descargar el código de la aplicación, haga lo siguiente:

  1. Clone el repositorio remoto con el siguiente comando:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  2. Vaya al directorio amazon-kinesis-data-analytics-java-examples/GettingStarted.

Tenga en cuenta lo siguiente en relación con el código de la aplicación:

  • Un archivo Project Object Model (pom.xml) contiene información sobre la configuración y las dependencias de la aplicación, incluidas las bibliotecas de Managed Service para Apache Flink.

  • El archivo BasicStreamingJob.java contiene el método main que define la funcionalidad de la aplicación.

  • La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de Kinesis:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • La aplicación crea conectores de origen y recepción para obtener acceso a recursos externos usando un objeto StreamExecutionEnvironment.

  • La aplicación crea conectores de origen y recepción mediante propiedades estáticas. Para utilizar propiedades dinámicas de la aplicación, utilice los métodos createSourceFromApplicationProperties y createSinkFromApplicationProperties para crear los conectores. Estos métodos leen las propiedades de la aplicación para configurar los conectores.

    Para obtener más información sobre las propiedades de tiempo de ejecución, consulte Utilice las propiedades de tiempo de ejecución en Managed Service for Apache Flink.

Compila el código de la aplicación

En esta sección, se utiliza el compilador Apache Maven para crear el código de Java para la aplicación. Para obtener más información sobre la instalación de Apache Maven y el Java Development Kit (JDK), consulte Cumpla con los requisitos previos para completar los ejercicios.

Cómo compilar el código de la aplicación
  1. Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Puede compilar y empaquetar el código de una de las dos formas siguientes:

    • Utilice la herramienta de línea de comandos de Maven. Cree su archivo JAR ejecutando el siguiente comando en el directorio que contiene el archivo pom.xml:

      mvn package -Dflink.version=1.11.3
    • Use el entorno de desarrollo. Consulte la documentación de su entorno de desarrollo para obtener más información.

      nota

      El código fuente proporcionado se basa en bibliotecas de Java 11. Asegúrese de que la versión Java de su proyecto sea 11.

    Puede cargar el paquete como un archivo JAR o puede comprimir el paquete y cargarlo como un archivo ZIP. Si crea la aplicación con AWS CLI, especifique el tipo de contenido del código (JAR o ZIP).

  2. Si hay errores al compilar, verifique que la variable de entorno JAVA_HOME se ha configurado correctamente.

Si la aplicación se compila correctamente, se crea el siguiente archivo:

target/aws-kinesis-analytics-java-apps-1.0.jar

Cargue el código Java de streaming de Apache Flink

En esta sección, creará un bucket de Amazon Simple Storage Service (Amazon S3) y cargará el código de la aplicación.

Cómo cargar el código de la aplicación
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija Crear bucket.

  3. Escriba ka-app-code-<username> en el campo Nombre del bucket. Añada un sufijo al nombre del bucket, como su nombre de usuario, para que sea único a nivel global. Elija Siguiente.

  4. En el paso Configurar opciones, deje los ajustes tal y como están y elija Siguiente.

  5. En el paso Establecer permisos, deje los ajustes tal y como están y elija Siguiente.

  6. Elija Crear bucket.

  7. En la consola de Amazon S3, elija el <username>bucket ka-app-code- y elija Upload.

  8. En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo aws-kinesis-analytics-java-apps-1.0.jar que creó en el paso anterior. Elija Siguiente.

  9. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.

El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.

Cree y ejecute la aplicación Managed Service for Apache Flink

Puede crear y ejecutar una aplicación de Managed Service para Apache Flink mediante la consola o la AWS CLI.

nota

Cuando crea la aplicación mediante la consola, sus recursos AWS Identity and Access Management (de IAM) y de Amazon CloudWatch Logs se crean automáticamente. Cuando crea la aplicación con AWS CLI, crea estos recursos por separado.

Cree y ejecute la aplicación (consola)

Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.

Creación de la aplicación
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.

  3. En la página Managed Service para Apache Flink: crear aplicación, proporcione los detalles de la aplicación de la siguiente manera:

    • En Nombre de la aplicación, escriba MyApplication.

    • En Descripción, escriba My java test app.

    • En Tiempo de ejecución, escriba Apache Flink.

    • Deje el menú desplegable de versión como Apache Flink versión 1.11 (versión recomendada).

  4. Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM. kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:

  • Política: kinesis-analytics-service-MyApplication-us-west-2

  • Rol: kinesisanalytics-MyApplication-us-west-2

Edite la política de IAM

Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Elija Políticas. Elija la política kinesis-analytics-service-MyApplication-us-west-2 que la consola creó en su nombre en la sección anterior.

  3. En la página Resumen, elija Editar política. Seleccione la pestaña JSON.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (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/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" } ] }
Configure la aplicación
  1. En la MyApplicationpágina, elija Configurar.

  2. En la página Configurar aplicación, proporcione la Ubicación del código:

    • Para el bucket de Amazon S3, introduzca ka-app-code-<username>.

    • En Ruta al objeto de Amazon S3, introduzca aws-kinesis-analytics-java-apps-1.0.jar.

  3. En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar rol de IAM kinesis-analytics-MyApplication-us-west-2.

  4. En Propiedades, en ID de grupo, escriba ProducerConfigProperties.

  5. Escriba las siguientes propiedades y valores de la aplicación:

    ID de grupo Clave Valor
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  6. En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.

  7. Para el CloudWatch registro, active la casilla Activar.

  8. Elija Actualizar.

nota

Cuando eliges habilitar el CloudWatch registro de Amazon, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros para ti. Los nombres de estos recursos son los siguientes:

  • Grupo de registro: /aws/kinesis-analytics/MyApplication

  • Flujo de registro: kinesis-analytics-log-stream

Ejecución de la aplicación

Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.

Detenga la aplicación

En la MyApplicationpágina, selecciona Detener. Confirme la acción.

Actualizar la aplicación

Mediante la consola, puede actualizar la configuración de la aplicación, tal como sus propiedades, ajustes de monitorización y la ubicación o el nombre de archivo JAR de la aplicación. También puede volver a cargar el JAR de la aplicación del bucket de Amazon S3 si necesita actualizar el código de la aplicación.

En la MyApplicationpágina, elija Configurar. Actualice la configuración de la aplicación y elija Actualizar.

Cree y ejecute la aplicación (AWS CLI)

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

Crear 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 read en el flujo de origen y otra que concede permisos para las acciones write 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. Sustituya el ID de la cuenta en los nombres de recurso de Amazon (ARN) (012345678901) por el ID de su cuenta.

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

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.

nota

Para acceder a otros servicios de Amazon, puede usar AWS SDK for Java. Managed Service para Apache Flink establece automáticamente las credenciales requeridas por el SDK con las del rol de IAM de ejecución del servicio asociada a su aplicación. No hace falta realizar ningún otro paso.

Creación de un rol 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, elija Roles, Crear rol.

  3. En Seleccionar tipo de entidad de confianza, elija Servicio de AWS . En Elegir el servicio que usará este rol, elija Kinesis. En Seleccionar su caso de uso, elija Kinesis Analytics.

    Elija Siguiente: permisos.

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

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

  6. 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. Asocie 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 ReadSourceStreamWriteSinkStream política AK y elija Adjuntar 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.

Cree la aplicación Managed Service para Apache Flink
  1. 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 (username) por el sufijo que eligió en la sección anterior. Reemplace el ID de la cuenta de ejemplo (012345678901) del rol de ejecución del servicio por el ID de su cuenta.

    { "ApplicationName": "test", "ApplicationDescription": "my java test app", "RuntimeEnvironment": "FLINK-1_11", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "aws-kinesis-analytics-java-apps-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
  2. Ejecute la acción CreateApplication con la solicitud anterior 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 acción StartApplication 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": "test", "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 acción StopApplication 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": "test" }
  2. Ejecute la acción StopApplication con la siguiente solicitud para detener la aplicación:

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

La aplicación se habrá detenido.

Añada 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 CloudWatch de Logs con su aplicación, consulteConfigurar el registro de aplicaciones en Managed Service for Apache Flink.

Actualice las propiedades del entorno

En esta sección, utilizará la acción UpdateApplication para cambiar las propiedades del entorno de la aplicación sin tener que 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": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
  2. 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 UpdateApplication AWS CLI acción.

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 el paquete de códigos anterior de su bucket de Amazon S3, cargue la nueva versión y llameUpdateApplication, especificando el mismo nombre de bucket y objeto 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 dos transmisiones de datos de Amazon Kinesis.

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

Siguiente paso

Paso 4: Limpiar AWS los recursos

Paso 4: Limpiar AWS los recursos

Esta sección incluye procedimientos para limpiar AWS los recursos creados en el tutorial de introducción.

Elimine su aplicación Managed Service for Apache Flink

  1. Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis.

  2. En el panel Servicio gestionado para Apache Flink, elija. MyApplication

  3. En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.

Elimine sus transmisiones de datos de Kinesis

  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel Kinesis Data Streams, ExampleInputStreamelija.

  3. En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.

  4. En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.

Elimine el objeto y el bucket de Amazon S3

  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija el cubo ka-app-code -. <username>

  3. Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.

Elimine sus recursos de IAM

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En la barra de navegación, seleccione Políticas.

  3. En el control de filtros, introduzca kinesis.

  4. Elija la política kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleccione Acciones de política y, a continuación, Eliminar.

  6. En la barra de navegación, seleccione Roles.

  7. Elija el rol kinesis-analytics- MyApplication -us-west-2.

  8. Elija Eliminar rol y, a continuación, confirme la eliminación.

CloudWatch Elimine sus recursos

  1. Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.

  2. En la barra de navegación, elija Registros.

  3. Elija el grupo de registros MyApplication/aws/kinesis-analytics/.

  4. Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.

Siguiente paso

Paso 5: Siguientes pasos

Paso 5: Siguientes pasos

Ahora que ha creado y ejecutado una aplicación básica de Managed Service para Apache Flink, consulte los siguientes recursos para conocer soluciones más avanzadas de Managed Service para Apache Flink.

  • La solución de datos de AWS transmisión para Amazon Kinesis: la solución de datos de AWS transmisión para Amazon Kinesis configura automáticamente AWS los servicios necesarios para capturar, almacenar, procesar y entregar fácilmente los datos de transmisión. La solución ofrece varias opciones para resolver casos de uso de datos de streaming. La opción Managed Service for Apache Flink ofrece un ejemplo de ETL de end-to-end streaming que muestra una aplicación real que ejecuta operaciones analíticas con datos simulados de taxis de Nueva York. La solución configura todos los AWS recursos necesarios, como las funciones y políticas de IAM, un CloudWatch panel de control y alarmas. CloudWatch

  • AWS Solución de transmisión de datos para Amazon MSK: La solución de AWS transmisión de datos para Amazon MSK proporciona AWS CloudFormation plantillas en las que los datos fluyen a través de los productores, el almacenamiento de streaming, los consumidores y los destinos.

  • Clickstream Lab con Apache Flink y Apache Kafka: Un laboratorio integral para casos de uso de secuencias de clics que utiliza Amazon Managed Streaming para Apache Kafka para almacenamiento de streaming y aplicaciones de Managed Service para Apache Flink para procesamiento de flujos.

  • Taller de Amazon Managed Service para Apache Flink: en este taller, crearás una arquitectura de end-to-end streaming para ingerir, analizar y visualizar datos de streaming prácticamente en tiempo real. Usted se propuso mejorar las operaciones de una empresa de taxis de la ciudad de Nueva York. Usted analiza los datos de telemetría de una flota de taxis de la ciudad de Nueva York prácticamente en tiempo real para optimizar las operaciones de su flota.

  • Aprenda Flink: formación práctica: formación oficial introductoria sobre Apache Flink que le permitirá empezar a crear aplicaciones escalables de ETL de streaming, análisis y basadas en eventos.

    nota

    Tenga en cuenta que Managed Service para Apache Flink no es compatible con la versión de Apache Flink (1.12) utilizada en esta formación. Puede utilizar Flink 1.15.2 en el servicio gestionado de Flink para Apache Flink.

  • Ejemplos de código de Apache Flink: GitHub repositorio de una amplia variedad de ejemplos de aplicaciones de Apache Flink.

Primeros pasos: Flink 1.8.2: obsoleto

nota

La comunidad de Apache Flink no admite las versiones 1.6, 1.8 y 1.11 de Apache Flink desde hace más de tres años. Tenemos previsto dejar de utilizar estas versiones en Amazon Managed Service para Apache Flink el 5 de noviembre de 2024. A partir de esta fecha, no podrá crear nuevas aplicaciones para estas versiones de Flink. En este momento, puede seguir ejecutando las aplicaciones existentes. Puede actualizar sus aplicaciones de forma automática mediante la función de actualizaciones de versiones local de Amazon Managed Service for Apache Flink. Para obtener más información, consulte. Utilice actualizaciones de versión locales para Apache Flink

Este tema contiene una versión del Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink tutorial que utiliza Apache Flink 1.8.2.

Componentes del servicio gestionado para la aplicación Apache Flink

Para procesar los datos, su aplicación de Managed Service para Apache Flink utiliza una aplicación Java/Apache Maven o Scala que procesa las entradas y produce las salidas mediante el tiempo de ejecución de Apache Flink.

Una aplicación de Managed Service para Apache Flink tiene los siguientes componentes:

Después de crear, compilar y empaquetar el código de la aplicación, debe cargar el paquete del código a un bucket de Amazon Simple Storage Service (Amazon S3). Luego debe crear la aplicación de Managed Service para Apache Flink. Introduzca la ubicación del paquete del código, un flujo de datos de Kinesis como origen de datos de streaming y, normalmente, una ubicación de streaming o archivo que recibe los datos procesados de la aplicación.

Requisitos previos para completar los ejercicios

Para completar los pasos de esta guía, debe disponer de lo siguiente:

Para empezar, vaya a Paso 1: Configurar una AWS cuenta y crear un usuario administrador.

Paso 1: Configurar una AWS cuenta y crear un usuario administrador

Inscríbase en una Cuenta de AWS

Si no tiene uno Cuenta de AWS, complete los siguientes pasos para crearlo.

Para suscribirse a una Cuenta de AWS
  1. Abra https://portal.aws.amazon.com/billing/signup.

  2. Siga las instrucciones que se le indiquen.

    Parte del procedimiento de registro consiste en recibir una llamada telefónica e indicar un código de verificación en el teclado del teléfono.

    Cuando te registras en una Cuenta de AWS, Usuario raíz de la cuenta de AWSse crea una. El usuario raíz tendrá acceso a todos los Servicios de AWS y recursos de esa cuenta. Como práctica recomendada de seguridad, asigne acceso administrativo a un usuario y utilice únicamente el usuario raíz para realizar tareas que requieren acceso de usuario raíz.

AWS te envía un correo electrónico de confirmación una vez finalizado el proceso de registro. Puede ver la actividad de la cuenta y administrar la cuenta en cualquier momento entrando en https://aws.amazon.com/ y seleccionando Mi cuenta.

Creación de un usuario con acceso administrativo

Después de crear un usuario administrativo Cuenta de AWS, asegúrelo Usuario raíz de la cuenta de AWS AWS IAM Identity Center, habilite y cree un usuario administrativo para no usar el usuario root en las tareas diarias.

Proteja su Usuario raíz de la cuenta de AWS
  1. Inicie sesión AWS Management Consolecomo propietario de la cuenta seleccionando el usuario root e introduciendo su dirección de Cuenta de AWS correo electrónico. En la siguiente página, escriba su contraseña.

    Para obtener ayuda para iniciar sesión con el usuario raíz, consulte Iniciar sesión como usuario raíz en la Guía del usuario de AWS Sign-In .

  2. Active la autenticación multifactor (MFA) para el usuario raíz.

    Para obtener instrucciones, consulte Habilitar un dispositivo MFA virtual para el usuario Cuenta de AWS raíz (consola) en la Guía del usuario de IAM.

Creación de un usuario con acceso administrativo
  1. Activar IAM Identity Center.

    Consulte las instrucciones en Activar AWS IAM Identity Center en la Guía del usuario de AWS IAM Identity Center .

  2. En IAM Identity Center, conceda acceso administrativo a un usuario.

    Para ver un tutorial sobre su uso Directorio de IAM Identity Center como fuente de identidad, consulte Configurar el acceso de los usuarios con la configuración predeterminada Directorio de IAM Identity Center en la Guía del AWS IAM Identity Center usuario.

Iniciar sesión como usuario con acceso de administrador
  • Para iniciar sesión con el usuario de IAM Identity Center, utilice la URL de inicio de sesión que se envió a la dirección de correo electrónico cuando creó el usuario de IAM Identity Center.

    Para obtener ayuda para iniciar sesión con un usuario del Centro de identidades de IAM, consulte Iniciar sesión en el portal de AWS acceso en la Guía del AWS Sign-In usuario.

Concesión de acceso a usuarios adicionales
  1. En IAM Identity Center, cree un conjunto de permisos que siga la práctica recomendada de aplicar permisos de privilegios mínimos.

    Para conocer las instrucciones, consulte Create a permission set en la Guía del usuario de AWS IAM Identity Center .

  2. Asigne usuarios a un grupo y, a continuación, asigne el acceso de inicio de sesión único al grupo.

    Para conocer las instrucciones, consulte Add groups en la Guía del usuario de AWS IAM Identity Center .

Conceder acceso programático

Los usuarios necesitan acceso programático si quieren interactuar con personas AWS ajenas a. AWS Management Console La forma de conceder el acceso programático depende del tipo de usuario que acceda. AWS

Para conceder acceso programático a los usuarios, elija una de las siguientes opciones.

¿Qué usuario necesita acceso programático? Para Mediante

Identidad del personal

(Usuarios administrados en el IAM Identity Center)

Usa credenciales temporales para firmar las solicitudes programáticas a los AWS CLI AWS SDK o las API. AWS

Siga las instrucciones de la interfaz que desea utilizar:

IAM Utilice credenciales temporales para firmar las solicitudes programáticas a los AWS SDK o las AWS CLI API. AWS Siga las instrucciones de Uso de credenciales temporales con AWS recursos de la Guía del usuario de IAM.
IAM

(No recomendado)

Utilice credenciales de larga duración para firmar las solicitudes programáticas a los AWS CLI AWS SDK o las API. AWS

Siga las instrucciones de la interfaz que desea utilizar:

Paso 2: Configura el AWS Command Line Interface ()AWS CLI

En este paso, debe descargar y configurar AWS CLI para usarlo con Managed Service for Apache Flink.

nota

En los ejercicios introductorios de esta guía se presupone que está utilizando las credenciales de administrador (adminuser) en su cuenta para realizar las operaciones.

nota

Si ya lo tiene AWS CLI instalado, es posible que necesite actualizarlo para obtener la funcionalidad más reciente. Para obtener más información, consulte Installing the AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface . Para comprobar la versión de AWS CLI, ejecute el siguiente comando:

aws --version

Los ejercicios de este tutorial requieren la siguiente AWS CLI versión o una posterior:

aws-cli/1.16.63
Para configurar el AWS CLI
  1. Descargue y configure la AWS CLI. Para obtener instrucciones, consulte los siguientes temas en la Guía del usuario de la AWS Command Line Interface :

  2. Añada un perfil con nombre para el usuario administrador en el AWS CLI config archivo. Puede utilizar este perfil cuando ejecute los comandos de la AWS CLI . Para obtener más información sobre los perfiles con nombre, consulte Perfiles con nombre en la Guía del usuario de 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

    Para ver una lista de las regiones disponibles, consulte este artículo sobre las regiones y puntos de enlace de en la Referencia general de Amazon Web Services.

    nota

    El código y los comandos de ejemplo de este tutorial utilizan la región Oeste de EE. UU. (Oregón). Para usar una AWS región diferente, cambie la región en el código y los comandos de este tutorial por la región que desee usar.

  3. Verifique la configuración introduciendo el siguiente comando de ayuda en el símbolo del sistema:

    aws help

Tras configurar una AWS cuenta y la AWS CLI, puede probar el siguiente ejercicio, en el que configurará una aplicación de ejemplo y probará la end-to-end configuración.

Siguiente paso

Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink

Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink

En este ejercicio, deberá crear una aplicación de Managed Service para Apache Flink con flujos de datos como origen y receptor.

Cree dos transmisiones de datos de Amazon Kinesis

Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, cree dos flujos de datos de Kinesis (ExampleInputStream y ExampleOutputStream). Su aplicación utiliza estos flujos para los flujos de origen y destino de la aplicación.

Puede crear estos flujos mediante la consola de Amazon Kinesis o el siguiente comando de la AWS CLI . Para obtener instrucciones sobre la consola, consulte Creating and Updating Data Streams en la Guía para desarrolladores de Amazon Kinesis Data Streams.

Cómo crear flujos de datos (AWS CLI)
  1. Para crear la primera transmisión (ExampleInputStream), utilice el siguiente comando de Amazon Kinesis create-stream AWS CLI .

    $ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
  2. Para crear el segundo flujo que la aplicación utilizará para escribir la salida, ejecute el mismo comando, cambiando el nombre a ExampleOutputStream.

    $ aws kinesis create-stream \ --stream-name ExampleOutputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser

Escriba registros de muestra en la transmisión de entrada

En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.

nota

Esta sección requiere AWS SDK for Python (Boto).

  1. Cree un archivo denominado stock.py con el siguiente contenido:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { "EVENT_TIME": datetime.datetime.now().isoformat(), "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]), "PRICE": round(random.random() * 100, 2), } def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey" ) if __name__ == "__main__": generate(STREAM_NAME, boto3.client("kinesis"))
  2. Más adelante en el tutorial, se ejecuta el script stock.py para enviar datos a la aplicación.

    $ python stock.py

Descargue y examine el código Java de streaming de Apache Flink

El código de la aplicación Java para este ejemplo está disponible en. GitHub Para descargar el código de la aplicación, haga lo siguiente:

  1. Clone el repositorio remoto con el siguiente comando:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  2. Vaya al directorio amazon-kinesis-data-analytics-java-examples/GettingStarted_1_8.

Tenga en cuenta lo siguiente en relación con el código de la aplicación:

  • Un archivo Project Object Model (pom.xml) contiene información sobre la configuración y las dependencias de la aplicación, incluidas las bibliotecas de Managed Service para Apache Flink.

  • El archivo BasicStreamingJob.java contiene el método main que define la funcionalidad de la aplicación.

  • La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de Kinesis:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • La aplicación crea conectores de origen y recepción para obtener acceso a recursos externos usando un objeto StreamExecutionEnvironment.

  • La aplicación crea conectores de origen y recepción mediante propiedades estáticas. Para utilizar propiedades dinámicas de la aplicación, utilice los métodos createSourceFromApplicationProperties y createSinkFromApplicationProperties para crear los conectores. Estos métodos leen las propiedades de la aplicación para configurar los conectores.

    Para obtener más información sobre las propiedades de tiempo de ejecución, consulte Utilice las propiedades de tiempo de ejecución en Managed Service for Apache Flink.

Compila el código de la aplicación

En esta sección, se utiliza el compilador Apache Maven para crear el código de Java para la aplicación. Para obtener más información sobre la instalación de Apache Maven y el Java Development Kit (JDK), consulte Requisitos previos para completar los ejercicios.

nota

Para utilizar el conector de Kinesis con versiones de Apache Flink anteriores a la 1.11, debe descargar, compilar e instalar Apache Maven. Para obtener más información, consulte Uso del conector Apache Flink Kinesis Streams con versiones anteriores de Apache Flink.

Cómo compilar el código de la aplicación
  1. Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Puede compilar y empaquetar el código de una de las dos formas siguientes:

    • Utilice la herramienta de línea de comandos de Maven. Cree su archivo JAR ejecutando el siguiente comando en el directorio que contiene el archivo pom.xml:

      mvn package -Dflink.version=1.8.2
    • Use el entorno de desarrollo. Consulte la documentación de su entorno de desarrollo para obtener más información.

      nota

      El código fuente proporcionado se basa en bibliotecas de Java 1.8. Asegúrese de que la versión Java de su proyecto sea 1.8.

    Puede cargar el paquete como un archivo JAR o puede comprimir el paquete y cargarlo como un archivo ZIP. Si crea la aplicación con AWS CLI, especifique el tipo de contenido del código (JAR o ZIP).

  2. Si hay errores al compilar, verifique que la variable de entorno JAVA_HOME se ha configurado correctamente.

Si la aplicación se compila correctamente, se crea el siguiente archivo:

target/aws-kinesis-analytics-java-apps-1.0.jar

Cargue el código Java de streaming de Apache Flink

En esta sección, creará un bucket de Amazon Simple Storage Service (Amazon S3) y cargará el código de la aplicación.

Cómo cargar el código de la aplicación
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija Crear bucket.

  3. Escriba ka-app-code-<username> en el campo Nombre del bucket. Añada un sufijo al nombre del bucket, como su nombre de usuario, para que sea único a nivel global. Elija Siguiente.

  4. En el paso Configurar opciones, deje los ajustes tal y como están y elija Siguiente.

  5. En el paso Establecer permisos, deje los ajustes tal y como están y elija Siguiente.

  6. Elija Crear bucket.

  7. En la consola de Amazon S3, elija el <username>bucket ka-app-code- y elija Upload.

  8. En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo aws-kinesis-analytics-java-apps-1.0.jar que creó en el paso anterior. Elija Siguiente.

  9. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.

El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.

Cree y ejecute la aplicación Managed Service for Apache Flink

Puede crear y ejecutar una aplicación de Managed Service para Apache Flink mediante la consola o la AWS CLI.

nota

Cuando crea la aplicación mediante la consola, sus recursos AWS Identity and Access Management (de IAM) y de Amazon CloudWatch Logs se crean automáticamente. Cuando crea la aplicación con AWS CLI, crea estos recursos por separado.

Cree y ejecute la aplicación (consola)

Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.

Creación de la aplicación
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.

  3. En la página Managed Service para Apache Flink: crear aplicación, proporcione los detalles de la aplicación de la siguiente manera:

    • En Nombre de la aplicación, escriba MyApplication.

    • En Descripción, escriba My java test app.

    • En Tiempo de ejecución, escriba Apache Flink.

    • Deje el menú desplegable de versión como Apache Flink versión 1.8 (versión recomendada).

  4. Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM. kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:

  • Política: kinesis-analytics-service-MyApplication-us-west-2

  • Rol: kinesisanalytics-MyApplication-us-west-2

Edite la política de IAM

Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Elija Políticas. Elija la política kinesis-analytics-service-MyApplication-us-west-2 que la consola creó en su nombre en la sección anterior.

  3. En la página Resumen, elija Editar política. Seleccione la pestaña JSON.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (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/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" } ] }
Configure la aplicación
  1. En la MyApplicationpágina, elija Configurar.

  2. En la página Configurar aplicación, proporcione la Ubicación del código:

    • Para el bucket de Amazon S3, introduzca ka-app-code-<username>.

    • En Ruta al objeto de Amazon S3, introduzca aws-kinesis-analytics-java-apps-1.0.jar.

  3. En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM kinesis-analytics-MyApplication-us-west-2.

  4. Escriba las siguientes propiedades y valores de la aplicación:

    ID de grupo Clave Valor
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  5. En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.

  6. Para el CloudWatch registro, active la casilla Activar.

  7. Elija Actualizar.

nota

Cuando eliges habilitar el CloudWatch registro de Amazon, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros para ti. Los nombres de estos recursos son los siguientes:

  • Grupo de registro: /aws/kinesis-analytics/MyApplication

  • Flujo de registro: kinesis-analytics-log-stream

Ejecución de la aplicación
  1. En la MyApplicationpágina, selecciona Ejecutar. Confirme la acción.

  2. Cuando la aplicación se está ejecutando, actualice la página. La consola muestra el Gráfico de la aplicación.

Detenga la aplicación

En la MyApplicationpágina, selecciona Detener. Confirme la acción.

Actualizar la aplicación

Mediante la consola, puede actualizar la configuración de la aplicación, tal como sus propiedades, ajustes de monitorización y la ubicación o el nombre de archivo JAR de la aplicación. También puede volver a cargar el JAR de la aplicación del bucket de Amazon S3 si necesita actualizar el código de la aplicación.

En la MyApplicationpágina, elija Configurar. Actualice la configuración de la aplicación y elija Actualizar.

Cree y ejecute la aplicación (AWS CLI)

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

Crear 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 read en el flujo de origen y otra que concede permisos para las acciones write 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. Sustituya el ID de la cuenta en los nombres de recurso de Amazon (ARN) (012345678901) por el ID de su cuenta.

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

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.

nota

Para acceder a otros servicios de Amazon, puede usar AWS SDK for Java. Managed Service para Apache Flink establece automáticamente las credenciales requeridas por el SDK con las del rol de IAM de ejecución del servicio asociada a su aplicación. No hace falta realizar ningún otro paso.

Creación de un rol 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, elija Roles, Crear rol.

  3. En Seleccionar tipo de entidad de confianza, elija Servicio de AWS . En Elegir el servicio que usará este rol, elija Kinesis. En Seleccionar su caso de uso, elija Kinesis Analytics.

    Elija Siguiente: permisos.

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

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

  6. 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. Asocie 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 ReadSourceStreamWriteSinkStream política AK y elija Adjuntar 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.

Cree la aplicación Managed Service para Apache Flink
  1. 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 (username) por el sufijo que eligió en la sección anterior. Reemplace el ID de la cuenta de ejemplo (012345678901) del rol de ejecución del servicio por el ID de su cuenta.

    { "ApplicationName": "test", "ApplicationDescription": "my java test app", "RuntimeEnvironment": "FLINK-1_8", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "aws-kinesis-analytics-java-apps-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
  2. Ejecute la acción CreateApplication con la solicitud anterior 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 acción StartApplication 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": "test", "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 acción StopApplication 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": "test" }
  2. Ejecute la acción StopApplication con la siguiente solicitud para detener la aplicación:

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

La aplicación se habrá detenido.

Añada 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 CloudWatch de Logs con su aplicación, consulteConfigurar el registro de aplicaciones en Managed Service for Apache Flink.

Actualice las propiedades del entorno

En esta sección, utilizará la acción UpdateApplication para cambiar las propiedades del entorno de la aplicación sin tener que 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": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
  2. 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 UpdateApplication AWS CLI acción.

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 el paquete de códigos anterior de su bucket de Amazon S3, cargue la nueva versión y llameUpdateApplication, especificando el mismo nombre de bucket y objeto 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 dos transmisiones de datos de Amazon Kinesis.

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

Siguiente paso

Paso 4: Limpiar AWS los recursos

Paso 4: Limpiar AWS los recursos

Esta sección incluye procedimientos para limpiar AWS los recursos creados en el tutorial de introducción.

Elimine su aplicación Managed Service for Apache Flink

  1. Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis.

  2. En el panel Servicio gestionado para Apache Flink, elija. MyApplication

  3. Elija Configurar.

  4. En la sección Instantáneas, seleccione Deshabilitar y, a continuación, seleccione Actualizar.

  5. En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.

Elimine sus transmisiones de datos de Kinesis

  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel Kinesis Data Streams, ExampleInputStreamelija.

  3. En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.

  4. En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.

Elimine el objeto y el bucket de Amazon S3

  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija el cubo ka-app-code -. <username>

  3. Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.

Elimine sus recursos de IAM

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En la barra de navegación, seleccione Políticas.

  3. En el control de filtros, introduzca kinesis.

  4. Elija la política kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleccione Acciones de política y, a continuación, Eliminar.

  6. En la barra de navegación, seleccione Roles.

  7. Elija el rol kinesis-analytics- MyApplication -us-west-2.

  8. Elija Eliminar rol y, a continuación, confirme la eliminación.

CloudWatch Elimine sus recursos

  1. Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.

  2. En la barra de navegación, elija Registros.

  3. Elija el grupo de registros MyApplication/aws/kinesis-analytics/.

  4. Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.

Para empezar: Flink 1.6.2: obsoleto

nota

La comunidad de Apache Flink no admite las versiones 1.6, 1.8 y 1.11 de Apache Flink desde hace más de tres años. Tenemos previsto dejar de utilizar estas versiones en Amazon Managed Service para Apache Flink el 5 de noviembre de 2024. A partir de esta fecha, no podrá crear nuevas aplicaciones para estas versiones de Flink. En este momento, puede seguir ejecutando las aplicaciones existentes. Puede actualizar sus aplicaciones de forma automática mediante la función de actualizaciones de versiones local de Amazon Managed Service for Apache Flink. Para obtener más información, consulte. Utilice actualizaciones de versión locales para Apache Flink

Este tema contiene una versión del Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink tutorial que utiliza Apache Flink 1.6.2.

Componentes de una aplicación de servicio gestionado para Apache Flink

Para procesar los datos, su aplicación de Managed Service para Apache Flink utiliza una aplicación Java/Apache Maven o Scala que procesa las entradas y produce las salidas mediante el tiempo de ejecución de Apache Flink.

Managed Service para Apache Flink tiene los siguientes componentes:

Después de crear, compilar y empaquetar la aplicación, debe cargar el paquete del código a un bucket de Amazon Simple Storage Service (Amazon S3). Luego debe crear la aplicación de Managed Service para Apache Flink. Introduzca la ubicación del paquete del código, un flujo de datos de Kinesis como origen de datos de streaming y, normalmente, una ubicación de streaming o archivo que recibe los datos procesados de la aplicación.

Requisitos previos para completar los ejercicios

Para completar los pasos de esta guía, debe disponer de lo siguiente:

  • Java Development Kit (JDK), versión 8. Establezca la variable de entorno JAVA_HOME para señalar la ubicación de la instalación del JDK.

  • Le recomendamos utilizar un entorno de desarrollo (como Eclipse Java Neon o IntelliJ Idea) para desarrollar y compilar su aplicación.

  • Cliente Git. Si aún no lo ha hecho, instale el cliente Git.

  • Apache Maven Compiler Plugin. Maven debe estar en su ruta de trabajo. Para probar la instalación de Apache Maven, introduzca lo siguiente:

    $ mvn -version

Para empezar, vaya a Paso 1: Configurar una AWS cuenta y crear un usuario administrador.

Paso 1: Configurar una AWS cuenta y crear un usuario administrador

Inscríbase en una Cuenta de AWS

Si no tiene uno Cuenta de AWS, complete los siguientes pasos para crearlo.

Para suscribirse a una Cuenta de AWS
  1. Abra https://portal.aws.amazon.com/billing/signup.

  2. Siga las instrucciones que se le indiquen.

    Parte del procedimiento de registro consiste en recibir una llamada telefónica e indicar un código de verificación en el teclado del teléfono.

    Cuando te registras en una Cuenta de AWS, Usuario raíz de la cuenta de AWSse crea una. El usuario raíz tendrá acceso a todos los Servicios de AWS y recursos de esa cuenta. Como práctica recomendada de seguridad, asigne acceso administrativo a un usuario y utilice únicamente el usuario raíz para realizar tareas que requieren acceso de usuario raíz.

AWS te envía un correo electrónico de confirmación una vez finalizado el proceso de registro. Puede ver la actividad de la cuenta y administrar la cuenta en cualquier momento entrando en https://aws.amazon.com/ y seleccionando Mi cuenta.

Creación de un usuario con acceso administrativo

Después de crear un usuario administrativo Cuenta de AWS, asegúrelo Usuario raíz de la cuenta de AWS AWS IAM Identity Center, habilite y cree un usuario administrativo para no usar el usuario root en las tareas diarias.

Proteja su Usuario raíz de la cuenta de AWS
  1. Inicie sesión AWS Management Consolecomo propietario de la cuenta seleccionando el usuario root e introduciendo su dirección de Cuenta de AWS correo electrónico. En la siguiente página, escriba su contraseña.

    Para obtener ayuda para iniciar sesión con el usuario raíz, consulte Iniciar sesión como usuario raíz en la Guía del usuario de AWS Sign-In .

  2. Active la autenticación multifactor (MFA) para el usuario raíz.

    Para obtener instrucciones, consulte Habilitar un dispositivo MFA virtual para el usuario Cuenta de AWS raíz (consola) en la Guía del usuario de IAM.

Creación de un usuario con acceso administrativo
  1. Activar IAM Identity Center.

    Consulte las instrucciones en Activar AWS IAM Identity Center en la Guía del usuario de AWS IAM Identity Center .

  2. En IAM Identity Center, conceda acceso administrativo a un usuario.

    Para ver un tutorial sobre su uso Directorio de IAM Identity Center como fuente de identidad, consulte Configurar el acceso de los usuarios con la configuración predeterminada Directorio de IAM Identity Center en la Guía del AWS IAM Identity Center usuario.

Iniciar sesión como usuario con acceso de administrador
  • Para iniciar sesión con el usuario de IAM Identity Center, utilice la URL de inicio de sesión que se envió a la dirección de correo electrónico cuando creó el usuario de IAM Identity Center.

    Para obtener ayuda para iniciar sesión con un usuario del Centro de identidades de IAM, consulte Iniciar sesión en el portal de AWS acceso en la Guía del AWS Sign-In usuario.

Concesión de acceso a usuarios adicionales
  1. En IAM Identity Center, cree un conjunto de permisos que siga la práctica recomendada de aplicar permisos de privilegios mínimos.

    Para conocer las instrucciones, consulte Create a permission set en la Guía del usuario de AWS IAM Identity Center .

  2. Asigne usuarios a un grupo y, a continuación, asigne el acceso de inicio de sesión único al grupo.

    Para conocer las instrucciones, consulte Add groups en la Guía del usuario de AWS IAM Identity Center .

Conceder acceso programático

Los usuarios necesitan acceso programático si quieren interactuar con personas AWS ajenas a. AWS Management Console La forma de conceder el acceso programático depende del tipo de usuario que acceda. AWS

Para conceder acceso programático a los usuarios, elija una de las siguientes opciones.

¿Qué usuario necesita acceso programático? Para Mediante

Identidad del personal

(Usuarios administrados en el IAM Identity Center)

Usa credenciales temporales para firmar las solicitudes programáticas a los AWS CLI AWS SDK o las API. AWS

Siga las instrucciones de la interfaz que desea utilizar:

IAM Utilice credenciales temporales para firmar las solicitudes programáticas a los AWS SDK o las AWS CLI API. AWS Siga las instrucciones de Uso de credenciales temporales con AWS recursos de la Guía del usuario de IAM.
IAM

(No recomendado)

Utilice credenciales de larga duración para firmar las solicitudes programáticas a los AWS CLI AWS SDK o las API. AWS

Siga las instrucciones de la interfaz que desea utilizar:

Paso 2: Configura el AWS Command Line Interface ()AWS CLI

En este paso, debe descargar y configurar el AWS CLI para usarlo con un servicio gestionado de Apache Flink.

nota

En los ejercicios introductorios de esta guía se presupone que está utilizando las credenciales de administrador (adminuser) en su cuenta para realizar las operaciones.

nota

Si ya lo tiene AWS CLI instalado, es posible que necesite actualizarlo para obtener la funcionalidad más reciente. Para obtener más información, consulte Installing the AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface . Para comprobar la versión de AWS CLI, ejecute el siguiente comando:

aws --version

Los ejercicios de este tutorial requieren la siguiente AWS CLI versión o una posterior:

aws-cli/1.16.63
Para configurar el AWS CLI
  1. Descargue y configure la AWS CLI. Para obtener instrucciones, consulte los siguientes temas en la Guía del usuario de la AWS Command Line Interface :

  2. Añada un perfil con nombre para el usuario administrador en el AWS CLI config archivo. Puede utilizar este perfil cuando ejecute los comandos de la AWS CLI . Para obtener más información sobre los perfiles con nombre, consulte Perfiles con nombre en la Guía del usuario de la 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

    Para obtener una lista de AWS las regiones disponibles, consulte Regiones y puntos finales en la Referencia general de Amazon Web Services.

    nota

    El código y los comandos de ejemplo de este tutorial utilizan la región Oeste de EE. UU. (Oregón). Para usar una región diferente, cambie la región en el código y los comandos de este tutorial por la región que desea usar.

  3. Verifique la configuración introduciendo el siguiente comando de ayuda en el símbolo del sistema:

    aws help

Después de configurar una AWS cuenta y el AWS CLI, puede probar el siguiente ejercicio, en el que configurará una aplicación de ejemplo y probará la end-to-end configuración.

Siguiente paso

Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink

Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink

En este ejercicio, deberá crear una aplicación de Managed Service para Apache Flink con flujos de datos como origen y receptor.

Cree dos transmisiones de datos de Amazon Kinesis

Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, cree dos flujos de datos de Kinesis (ExampleInputStream y ExampleOutputStream). Su aplicación utiliza estos flujos para los flujos de origen y destino de la aplicación.

Puede crear estos flujos mediante la consola de Amazon Kinesis o el siguiente comando de la AWS CLI . Para obtener instrucciones sobre la consola, consulte Creating and Updating Data Streams en la Guía para desarrolladores de Amazon Kinesis Data Streams.

Cómo crear flujos de datos (AWS CLI)
  1. Para crear la primera transmisión (ExampleInputStream), utilice el siguiente comando de Amazon Kinesis create-stream AWS CLI .

    $ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
  2. Para crear el segundo flujo que la aplicación utilizará para escribir la salida, ejecute el mismo comando, cambiando el nombre a ExampleOutputStream.

    $ aws kinesis create-stream \ --stream-name ExampleOutputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser

Escriba registros de muestra en la transmisión de entrada

En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.

nota

Esta sección requiere AWS SDK for Python (Boto).

  1. Cree un archivo denominado stock.py con el siguiente contenido:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { "EVENT_TIME": datetime.datetime.now().isoformat(), "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]), "PRICE": round(random.random() * 100, 2), } def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey" ) if __name__ == "__main__": generate(STREAM_NAME, boto3.client("kinesis"))
  2. Más adelante en el tutorial, se ejecuta el script stock.py para enviar datos a la aplicación.

    $ python stock.py

Descargue y examine el código Java de streaming de Apache Flink

El código de la aplicación Java para este ejemplo está disponible en. GitHub Para descargar el código de la aplicación, haga lo siguiente:

  1. Clone el repositorio remoto con el siguiente comando:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  2. Vaya al directorio amazon-kinesis-data-analytics-java-examples/GettingStarted_1_6.

Tenga en cuenta lo siguiente en relación con el código de la aplicación:

  • Un archivo Project Object Model (pom.xml) contiene información sobre la configuración y las dependencias de la aplicación, incluidas las bibliotecas de Managed Service para Apache Flink.

  • El archivo BasicStreamingJob.java contiene el método main que define la funcionalidad de la aplicación.

  • La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de Kinesis:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • La aplicación crea conectores de origen y recepción para obtener acceso a recursos externos usando un objeto StreamExecutionEnvironment.

  • La aplicación crea conectores de origen y recepción mediante propiedades estáticas. Para utilizar propiedades dinámicas de la aplicación, utilice los métodos createSourceFromApplicationProperties y createSinkFromApplicationProperties para crear los conectores. Estos métodos leen las propiedades de la aplicación para configurar los conectores.

    Para obtener más información sobre las propiedades de tiempo de ejecución, consulte Utilice las propiedades de tiempo de ejecución en Managed Service for Apache Flink.

Compila el código de la aplicación

En esta sección, se utiliza el compilador Apache Maven para crear el código de Java para la aplicación. Para obtener más información sobre la instalación de Apache Maven y el Java Development Kit (JDK), consulte Requisitos previos para completar los ejercicios.

nota

Para utilizar el conector de Kinesis con versiones de Apache Flink anteriores a la 1.11, es necesario descargar el código fuente del conector y compilarlo tal y como se describe en la documentación de Apache Flink.

Cómo compilar el código de la aplicación
  1. Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Puede compilar y empaquetar el código de una de las dos formas siguientes:

    • Utilice la herramienta de línea de comandos de Maven. Cree su archivo JAR ejecutando el siguiente comando en el directorio que contiene el archivo pom.xml:

      mvn package
      nota

      El parámetro -DFLink.version no es necesario para la versión 1.0.1 de tiempo de ejecución de Managed Service para Apache Flink; solo es necesario para la versión 1.1.0 y versiones posteriores. Para obtener más información, consulte Especifique la versión de Apache Flink de su aplicación.

    • Use el entorno de desarrollo. Consulte la documentación de su entorno de desarrollo para obtener más información.

    Puede cargar el paquete como un archivo JAR o puede comprimir el paquete y cargarlo como un archivo ZIP. Si crea la aplicación con AWS CLI, especifique el tipo de contenido del código (JAR o ZIP).

  2. Si hay errores al compilar, verifique que la variable de entorno JAVA_HOME se ha configurado correctamente.

Si la aplicación se compila correctamente, se crea el siguiente archivo:

target/aws-kinesis-analytics-java-apps-1.0.jar

Cargue el código Java de streaming de Apache Flink

En esta sección, creará un bucket de Amazon Simple Storage Service (Amazon S3) y cargará el código de la aplicación.

Cómo cargar el código de la aplicación
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija Crear bucket.

  3. Escriba ka-app-code-<username> en el campo Nombre del bucket. Añada un sufijo al nombre del bucket, como su nombre de usuario, para que sea único a nivel global. Elija Siguiente.

  4. En el paso Configurar opciones, deje los ajustes tal y como están y elija Siguiente.

  5. En el paso Establecer permisos, deje los ajustes tal y como están y elija Siguiente.

  6. Elija Crear bucket.

  7. En la consola de Amazon S3, elija el <username>bucket ka-app-code- y elija Upload.

  8. En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo aws-kinesis-analytics-java-apps-1.0.jar que creó en el paso anterior. Elija Siguiente.

  9. En el paso Establecer permisos, deje los ajustes tal y como están. Elija Siguiente.

  10. En el paso Establecer propiedades, deje los ajustes tal y como están. Seleccione Cargar.

El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.

Cree y ejecute la aplicación Managed Service for Apache Flink

Puede crear y ejecutar una aplicación de Managed Service para Apache Flink mediante la consola o la AWS CLI.

nota

Cuando crea la aplicación mediante la consola, sus recursos AWS Identity and Access Management (de IAM) y de Amazon CloudWatch Logs se crean automáticamente. Cuando crea la aplicación con AWS CLI, crea estos recursos por separado.

Cree y ejecute la aplicación (consola)

Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.

Creación de la aplicación
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.

  3. En la página Managed Service para Apache Flink: crear aplicación, proporcione los detalles de la aplicación de la siguiente manera:

    • En Nombre de la aplicación, escriba MyApplication.

    • En Descripción, escriba My java test app.

    • En Tiempo de ejecución, escriba Apache Flink.

      nota

      Managed Service para Apache Flink utiliza la versión 1.8.2 o 1.6.2 de Apache Flink.

    • Cambie el menú desplegable de versiones a Apache Flink 1.6.

  4. Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM. kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:

  • Política: kinesis-analytics-service-MyApplication-us-west-2

  • Rol: kinesisanalytics-MyApplication-us-west-2

Edite la política de IAM

Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Elija Políticas. Elija la política kinesis-analytics-service-MyApplication-us-west-2 que la consola creó en su nombre en la sección anterior.

  3. En la página Resumen, elija Editar política. Seleccione la pestaña JSON.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (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/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" } ] }
Configure la aplicación
  1. En la MyApplicationpágina, elija Configurar.

  2. En la página Configurar aplicación, proporcione la Ubicación del código:

    • Para el bucket de Amazon S3, introduzca ka-app-code-<username>.

    • En Ruta al objeto de Amazon S3, introduzca java-getting-started-1.0.jar.

  3. En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM kinesis-analytics-MyApplication-us-west-2.

  4. Escriba las siguientes propiedades y valores de la aplicación:

    ID de grupo Clave Valor
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  5. En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.

  6. Para el CloudWatch registro, active la casilla Activar.

  7. Elija Actualizar.

nota

Cuando eliges habilitar el CloudWatch registro de Amazon, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros para ti. Los nombres de estos recursos son los siguientes:

  • Grupo de registro: /aws/kinesis-analytics/MyApplication

  • Flujo de registro: kinesis-analytics-log-stream

Ejecución de la aplicación
  1. En la MyApplicationpágina, selecciona Ejecutar. Confirme la acción.

  2. Cuando la aplicación se está ejecutando, actualice la página. La consola muestra el Gráfico de la aplicación.

Detenga la aplicación

En la MyApplicationpágina, selecciona Detener. Confirme la acción.

Actualizar la aplicación

Mediante la consola, puede actualizar la configuración de la aplicación, tal como sus propiedades, ajustes de monitorización y la ubicación o el nombre de archivo JAR de la aplicación. También puede volver a cargar el JAR de la aplicación del bucket de Amazon S3 si necesita actualizar el código de la aplicación.

En la MyApplicationpágina, elija Configurar. Actualice la configuración de la aplicación y elija Actualizar.

Cree y ejecute la aplicación (AWS CLI)

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

Creación de una política de permisos

En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción read en el flujo de origen y otra que concede permisos para las acciones write 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. Sustituya el ID de la cuenta en los nombres de recurso de Amazon (ARN) (012345678901) por el ID de su cuenta.

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

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.

nota

Para acceder a otros servicios de Amazon, puede usar AWS SDK for Java. Managed Service para Apache Flink establece automáticamente las credenciales requeridas por el SDK con las del rol de IAM de ejecución del servicio asociada a su aplicación. No hace falta realizar ningún otro paso.

Creación de un rol 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, elija Roles, Crear rol.

  3. En Seleccionar tipo de entidad de confianza, elija Servicio de AWS . En Elegir el servicio que usará este rol, elija Kinesis. En Seleccionar su caso de uso, elija Kinesis Analytics.

    Elija Siguiente: permisos.

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

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

  6. 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. Asocie la política que ha creado en el paso anterior, Creación de 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 ReadSourceStreamWriteSinkStream política AK y elija Adjuntar 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.

Cree la aplicación Managed Service para Apache Flink
  1. 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 (username) por el sufijo que eligió en la sección anterior. Reemplace el ID de la cuenta de ejemplo (012345678901) del rol de ejecución del servicio por el ID de su cuenta.

    { "ApplicationName": "test", "ApplicationDescription": "my java test app", "RuntimeEnvironment": "FLINK-1_6", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "java-getting-started-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
  2. Ejecute la acción CreateApplication con la solicitud anterior 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 acción StartApplication 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": "test", "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 acción StopApplication 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": "test" }
  2. Ejecute la acción StopApplication con la siguiente solicitud para detener la aplicación:

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

La aplicación se habrá detenido.

Añada 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 CloudWatch de Logs con su aplicación, consulteConfigurar el registro de aplicaciones en Managed Service for Apache Flink.

Actualice las propiedades del entorno

En esta sección, utilizará la acción UpdateApplication para cambiar las propiedades del entorno de la aplicación sin tener que 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": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
  2. 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 UpdateApplication AWS CLI acción.

Para usarlo AWS CLI, elimine el paquete de códigos anterior de su bucket de Amazon S3, cargue la nueva versión y llame UpdateApplication especificando el mismo nombre de objeto y bucket de Amazon S3. 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 dos transmisiones de datos de Amazon Kinesis.

{ "ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username", "FileKeyUpdate": "java-getting-started-1.0.jar" } } } } }

Paso 4: Limpiar AWS los recursos

Esta sección incluye procedimientos para limpiar AWS los recursos creados en el tutorial de introducción.

Elimine su aplicación Managed Service for Apache Flink

  1. Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis.

  2. En el panel Servicio gestionado para Apache Flink, elija. MyApplication

  3. Elija Configurar.

  4. En la sección Instantáneas, seleccione Deshabilitar y, a continuación, seleccione Actualizar.

  5. En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.

Elimine sus transmisiones de datos de Kinesis

  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel Kinesis Data Streams, ExampleInputStreamelija.

  3. En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.

  4. En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.

Elimine el objeto y el bucket de Amazon S3

  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija el cubo ka-app-code -. <username>

  3. Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.

Elimine sus recursos de IAM

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En la barra de navegación, seleccione Políticas.

  3. En el control de filtros, introduzca kinesis.

  4. Elija la política kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleccione Acciones de política y, a continuación, Eliminar.

  6. En la barra de navegación, seleccione Roles.

  7. Elija el rol kinesis-analytics- MyApplication -us-west-2.

  8. Elija Eliminar rol y, a continuación, confirme la eliminación.

CloudWatch Elimine sus recursos

  1. Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.

  2. En la barra de navegación, elija Registros.

  3. Elija el grupo de registros MyApplication/aws/kinesis-analytics/.

  4. Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.

Ejemplos de versiones anteriores (antiguas) de Managed Service for Apache Flink

En esta sección se proporcionan ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink. Incluyen ejemplos de código e step-by-step instrucciones que le ayudarán a crear un servicio gestionado para las aplicaciones de Apache Flink y a comprobar sus resultados.

Antes de explorar estos ejemplos, le recomendamos que en primer lugar examine lo siguiente:

nota

En estos ejemplos se asume que utiliza la región Oeste de EE. UU. (Oregón) (us-west-2). Si utiliza una región diferente, actualice el código de la aplicación, los comandos y los roles de IAM en concordancia.

DataStream Ejemplos de API

Los siguientes ejemplos muestran cómo crear aplicaciones mediante la DataStream API Apache Flink.

Ejemplo: ventana giratoria

En este ejercicio, creará una aplicación de Managed Service para Apache Flink que agrega datos mediante una ventana de salto de tamaño constante. La agregación se encuentra habilitada de manera predeterminada en Flink. Para deshabilitarla, utilice lo siguiente:

sink.producer.aggregation-enabled' = 'false'
nota

Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.

Crear recursos dependientes

Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, debe crear los siguientes recursos dependientes:

  • Dos flujos de datos de Kinesis (ExampleInputStream y ExampleOutputStream)

  • Un bucket de Amazon S3 para almacenar el código de la aplicación (ka-app-code-<username>)

Puede crear los flujos de Kinesis y el bucket de Amazon S3 usando la consola. Si desea obtener instrucciones para crear estos recursos, consulte los siguientes temas:

  • Creación y actualización de flujos de datos en la Guía para desarrolladores de Amazon Kinesis Data Streams. Asigne un nombre a los flujos de datos ExampleInputStream y ExampleOutputStream.

  • ¿Cómo se puede crear un bucket de S3? en la guía de usuario de Amazon Simple Storage Service. Asigne al bucket de Amazon S3 un nombre único globalmente añadiendo su nombre de inicio de sesión, por ejemplo, ka-app-code-<username>.

Escriba registros de muestra en el flujo de entrada

En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.

nota

Esta sección requiere AWS SDK for Python (Boto).

  1. Cree un archivo denominado stock.py con el siguiente contenido:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  2. Ejecute el script stock.py:

    $ python stock.py

    Mantenga el script en ejecución mientras completa el resto del tutorial.

Descargue y examine el código de la aplicación

El código de la aplicación Java de este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:

  1. Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git.

  2. Clone el repositorio remoto con el siguiente comando:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Vaya al directorio amazon-kinesis-data-analytics-java-examples/TumblingWindow.

El código de la aplicación se encuentra en el archivo TumblingWindowStreamingJob.java. Tenga en cuenta lo siguiente en relación con el código de la aplicación:

  • La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de Kinesis:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • Añada la siguiente instrucción import:

    import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows; //flink 1.13 onward
  • La aplicación utiliza el operador timeWindow para encontrar el recuento de valores de cada símbolo bursátil en una ventana de salto de tamaño constante de 5 segundos. El siguiente código crea el operador y envía los datos agregados a un nuevo receptor de flujo de datos de Kinesis:

    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());
Compila el código de la aplicación

Para compilar la aplicación, haga lo siguiente:

  1. Si aún no lo ha hecho, instale Java y Maven. Para obtener más información, consulte Complete los requisitos previos requeridos en el tutorial de Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.

  2. Compile la aplicación con el siguiente comando:

    mvn package -Dflink.version=1.15.3
    nota

    El código fuente proporcionado se basa en bibliotecas de Java 11.

Al compilar la aplicación, se crea el archivo JAR de la aplicación (target/aws-kinesis-analytics-java-apps-1.0.jar).

Cargue el código Java de streaming de Apache Flink

En esta sección, cargará su código de aplicación en el bucket de Amazon S3 que creó en la sección Crear recursos dependientes.

  1. En la consola de Amazon S3, elija el <username>bucket ka-app-code- y elija Upload.

  2. En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo aws-kinesis-analytics-java-apps-1.0.jar que creó en el paso anterior.

  3. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.

El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.

Cree y ejecute la aplicación Managed Service for Apache Flink

Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.

Creación de la aplicación
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.

  3. En la página Managed Service para Apache Flink: crear aplicación, proporcione los detalles de la aplicación de la siguiente manera:

    • En Nombre de la aplicación, escriba MyApplication.

    • En Tiempo de ejecución, escriba Apache Flink.

      nota

      Managed Service para Apache Flink utiliza la versión 1.15.2 de Apache Flink.

    • Deje el menú desplegable de versión como Apache Flink versión 1.15.2 (versión recomendada).

  4. Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM. kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:

  • Política: kinesis-analytics-service-MyApplication-us-west-2

  • Rol: kinesisanalytics-MyApplication-us-west-2

Edite la política de IAM

Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Elija Políticas. Elija la política kinesis-analytics-service-MyApplication-us-west-2 que la consola creó en su nombre en la sección anterior.

  3. En la página Resumen, elija Editar política. Seleccione la pestaña JSON.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (012345678901) por el ID de su cuenta.

    { "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" } ] }
Configure la aplicación
  1. En la MyApplicationpágina, elija Configurar.

  2. En la página Configurar aplicación, proporcione la Ubicación del código:

    • Para el bucket de Amazon S3, introduzca ka-app-code-<username>.

    • En Ruta al objeto de Amazon S3, introduzca aws-kinesis-analytics-java-apps-1.0.jar.

  3. En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM kinesis-analytics-MyApplication-us-west-2.

  4. En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.

  5. Para el CloudWatch registro, active la casilla Activar.

  6. Elija Actualizar.

nota

Si decide habilitar el CloudWatch registro, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros automáticamente. Los nombres de estos recursos son los siguientes:

  • Grupo de registro: /aws/kinesis-analytics/MyApplication

  • Flujo de registro: kinesis-analytics-log-stream

Este flujo de registro se utiliza para supervisar la aplicación. No es el mismo flujo de registro que utiliza la aplicación para enviar los resultados.

Ejecución de la aplicación
  1. En la MyApplicationpágina, seleccione Ejecutar. Deje seleccionada la opción Ejecutar sin instantánea y confirme la acción.

  2. Cuando la aplicación se está ejecutando, actualice la página. La consola muestra el Gráfico de la aplicación.

Puede comprobar las métricas del servicio gestionado para Apache Flink en la CloudWatch consola para comprobar que la aplicación funciona.

Limpieza de recursos de AWS

Esta sección incluye procedimientos para limpiar los AWS recursos creados en el tutorial Tumbling Window.

Elimine su aplicación Managed Service for Apache Flink
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. en el panel Servicio gestionado para Apache Flink, elija. MyApplication

  3. En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.

Elimine sus transmisiones de datos de Kinesis
  1. Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis.

  2. En el panel Kinesis Data Streams, ExampleInputStreamelija.

  3. En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.

  4. En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.

Elimine el objeto y el bucket de Amazon S3
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija el cubo ka-app-code -. <username>

  3. Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.

Elimine sus recursos de IAM
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En la barra de navegación, seleccione Políticas.

  3. En el control de filtros, introduzca kinesis.

  4. Elija la política kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleccione Acciones de política y, a continuación, Eliminar.

  6. En la barra de navegación, seleccione Roles.

  7. Elija el rol kinesis-analytics- MyApplication -us-west-2.

  8. Elija Eliminar rol y, a continuación, confirme la eliminación.

CloudWatch Elimine sus recursos
  1. Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.

  2. En la barra de navegación, elija Registros.

  3. Elija el grupo de registros MyApplication/aws/kinesis-analytics/.

  4. Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.

Ejemplo: ventana corredera

nota

Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.

Crear recursos dependientes

Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, debe crear los siguientes recursos dependientes:

  • Dos flujos de datos de Kinesis (ExampleInputStream y ExampleOutputStream).

  • Un bucket de Amazon S3 para almacenar el código de la aplicación (ka-app-code-<username>)

Puede crear los flujos de Kinesis y el bucket de Amazon S3 usando la consola. Si desea obtener instrucciones para crear estos recursos, consulte los siguientes temas:

  • Creación y actualización de flujos de datos en la Guía para desarrolladores de Amazon Kinesis Data Streams. Asigne un nombre a sus flujos de datos ExampleInputStream y ExampleOutputStream.

  • ¿Cómo se puede crear un bucket de S3? en la guía de usuario de Amazon Simple Storage Service. Asigne al bucket de Amazon S3 un nombre único globalmente añadiendo su nombre de inicio de sesión, por ejemplo, ka-app-code-<username>.

Escriba registros de muestra en el flujo de entrada

En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.

nota

Esta sección requiere AWS SDK for Python (Boto).

  1. Cree un archivo denominado stock.py con el siguiente contenido:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { "EVENT_TIME": datetime.datetime.now().isoformat(), "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]), "PRICE": round(random.random() * 100, 2), } def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey" ) if __name__ == "__main__": generate(STREAM_NAME, boto3.client("kinesis"))
  2. Ejecute el script stock.py:

    $ python stock.py

    Mantenga el script en ejecución mientras completa el resto del tutorial.

Descargue y examine el código de la aplicación

El código de la aplicación Java de este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:

  1. Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git.

  2. Clone el repositorio remoto con el siguiente comando:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Vaya al directorio amazon-kinesis-data-analytics-java-examples/SlidingWindow.

El código de la aplicación se encuentra en el archivo SlidingWindowStreamingJobWithParallelism.java. Tenga en cuenta lo siguiente en relación con el código de la aplicación:

  • La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de Kinesis:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • La aplicación utiliza al operador timeWindow para encontrar el valor mínimo para cada símbolo bursátil en una ventana de 10 segundos que se desliza 5 segundos. El siguiente código crea el operador y envía los datos agregados a un nuevo receptor de flujo de datos de Kinesis:

  • Añada la siguiente instrucción import:

    import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows; //flink 1.13 onward
  • La aplicación utiliza el operador timeWindow para encontrar el recuento de valores de cada símbolo bursátil en una ventana de salto de tamaño constante de 5 segundos. El siguiente código crea el operador y envía los datos agregados a un nuevo receptor de flujo de datos de Kinesis:

    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());
Compila el código de la aplicación

Para compilar la aplicación, haga lo siguiente:

  1. Si aún no lo ha hecho, instale Java y Maven. Para obtener más información, consulte Complete los requisitos previos requeridos en el tutorial de Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.

  2. Compile la aplicación con el siguiente comando:

    mvn package -Dflink.version=1.15.3
    nota

    El código fuente proporcionado se basa en bibliotecas de Java 11.

Al compilar la aplicación, se crea el archivo JAR de la aplicación (target/aws-kinesis-analytics-java-apps-1.0.jar).

Cargue el código Java de streaming de Apache Flink

En esta sección, carga el código de aplicación en el bucket de Amazon S3 que creó en la sección Crear recursos dependientes.

  1. En la consola de Amazon S3, elija el <username>bucket ka-app-code- y, a continuación, elija Upload.

  2. En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo aws-kinesis-analytics-java-apps-1.0.jar que creó en el paso anterior.

  3. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.

El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.

Cree y ejecute la aplicación Managed Service for Apache Flink

Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.

Creación de la aplicación
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.

  3. En la página Managed Service para Apache Flink: crear aplicación, proporcione los detalles de la aplicación de la siguiente manera:

    • En Nombre de la aplicación, escriba MyApplication.

    • En Tiempo de ejecución, escriba Apache Flink.

    • Deje el menú desplegable de versión como Apache Flink versión 1.15.2 (versión recomendada).

  4. Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM. kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:

  • Política: kinesis-analytics-service-MyApplication-us-west-2

  • Rol: kinesisanalytics-MyApplication-us-west-2

Edite la política de IAM

Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Elija Políticas. Elija la política kinesis-analytics-service-MyApplication-us-west-2 que la consola creó en su nombre en la sección anterior.

  3. En la página Resumen, elija Editar política. Seleccione la pestaña JSON.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (012345678901) por el ID de su cuenta.

    { "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" } ] }
Configure la aplicación
  1. En la MyApplicationpágina, elija Configurar.

  2. En la página Configurar aplicación, proporcione la Ubicación del código:

    • Para el bucket de Amazon S3, introduzca ka-app-code-<username>.

    • En Ruta al objeto de Amazon S3, introduzca aws-kinesis-analytics-java-apps-1.0.jar.

  3. En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM kinesis-analytics-MyApplication-us-west-2.

  4. En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.

  5. Para el CloudWatch registro, active la casilla Activar.

  6. Elija Actualizar.

nota

Cuando eliges habilitar el CloudWatch registro de Amazon, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros para ti. Los nombres de estos recursos son los siguientes:

  • Grupo de registro: /aws/kinesis-analytics/MyApplication

  • Flujo de registro: kinesis-analytics-log-stream

Este flujo de registro se utiliza para supervisar la aplicación. No es el mismo flujo de registro que utiliza la aplicación para enviar los resultados.

Configure el paralelismo de la aplicación

En este ejemplo de aplicación se utiliza la ejecución paralela de tareas. El siguiente código de aplicación establece el paralelismo del operador min:

.setParallelism(3) // Set parallelism for the min operator

El paralelismo de la aplicación no puede ser mayor que el paralelismo provisto, que tiene un valor predeterminado de 1. Para aumentar el paralelismo de la aplicación, realice la siguiente acción: AWS CLI

aws kinesisanalyticsv2 update-application --application-name MyApplication --current-application-version-id <VersionId> --application-configuration-update "{\"FlinkApplicationConfigurationUpdate\": { \"ParallelismConfigurationUpdate\": {\"ParallelismUpdate\": 5, \"ConfigurationTypeUpdate\": \"CUSTOM\" }}}"

Puede recuperar el ID de la versión actual de la aplicación mediante las DescribeApplicationacciones o. ListApplications

Ejecución de la aplicación

Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.

Puede comprobar las métricas del servicio gestionado para Apache Flink en la CloudWatch consola para comprobar que la aplicación funciona.

Limpie los recursos AWS

Esta sección incluye procedimientos para limpiar los AWS recursos creados en el tutorial sobre ventanas corredizas.

Elimine su aplicación Managed Service for Apache Flink
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel Servicio gestionado para Apache Flink, elija. MyApplication

  3. En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.

Elimine sus transmisiones de datos de Kinesis
  1. Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis.

  2. En el panel Kinesis Data Streams, ExampleInputStreamelija.

  3. En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.

  4. En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.

Elimine el objeto y el bucket de Amazon S3
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija el cubo ka-app-code -. <username>

  3. Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.

Elimine sus recursos de IAM
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En la barra de navegación, seleccione Políticas.

  3. En el control de filtros, introduzca kinesis.

  4. Elija la política kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleccione Acciones de política y, a continuación, Eliminar.

  6. En la barra de navegación, seleccione Roles.

  7. Elija el rol kinesis-analytics- MyApplication -us-west-2.

  8. Elija Eliminar rol y, a continuación, confirme la eliminación.

CloudWatch Elimine sus recursos
  1. Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.

  2. En la barra de navegación, elija Registros.

  3. Elija el grupo de registros MyApplication/aws/kinesis-analytics/.

  4. Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.

Ejemplo: escribir en un bucket de Amazon S3

En este ejercicio, usted deberá crear un Managed Service para Apache Flink con un flujo de datos de Kinesis como origen y un bucket de Amazon S3 como receptor. Con el receptor, puede verificar la salida de la aplicación en la consola de Amazon S3.

nota

Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.

Crear recursos dependientes

Antes de crear un Managed Service para Apache Flink para este ejercicio, debe crear los siguientes recursos dependientes:

  • Un flujo de datos de Kinesis (ExampleInputStream).

  • Un bucket de Amazon S3 para almacenar el código y los resultados de la aplicación (ka-app-code-<username>)

nota

Managed Service para Apache Flink no puede escribir datos en Amazon S3 con el cifrado del lado del servidor activado en Managed Service para Apache Flink.

Puede crear el flujo de Kinesis y el bucket de Amazon S3 usando la consola. Si desea obtener instrucciones para crear estos recursos, consulte los siguientes temas:

  • Creación y actualización de flujos de datos en la Guía para desarrolladores de Amazon Kinesis Data Streams. Asigne el nombre ExampleInputStream a su flujo de datos.

  • ¿Cómo se puede crear un bucket de S3? en la guía de usuario de Amazon Simple Storage Service. Asigne al bucket de Amazon S3 un nombre único globalmente añadiendo su nombre de inicio de sesión, por ejemplo, ka-app-code-<username>. Cree dos carpetas (code y data) en el bucket de Amazon S3.

La aplicación crea los siguientes CloudWatch recursos si aún no existen:

  • Un grupo de registro llamado /AWS/KinesisAnalytics-java/MyApplication.

  • Un flujo de registro llamado kinesis-analytics-log-stream.

Escriba registros de muestra en el flujo de entrada

En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.

nota

Esta sección requiere AWS SDK for Python (Boto).

  1. Cree un archivo denominado stock.py con el siguiente contenido:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  2. Ejecute el script stock.py:

    $ python stock.py

    Mantenga el script en ejecución mientras completa el resto del tutorial.

Descargue y examine el código de la aplicación

El código de la aplicación Java de este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:

  1. Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git.

  2. Clone el repositorio remoto con el siguiente comando:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Vaya al directorio amazon-kinesis-data-analytics-java-examples/S3Sink.

El código de la aplicación se encuentra en el archivo S3StreamingSinkJob.java. Tenga en cuenta lo siguiente en relación con el código de la aplicación:

  • La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de Kinesis:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • Debe añadir la siguiente instrucción import:

    import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows;
  • La aplicación utiliza un receptor Apache Flink S3 para escribir en Amazon S3.

    El receptor lee los mensajes en una ventana de saltos de tamaño constante, los codifica en objetos de bucket de S3 y envía los objetos codificados al receptor de S3. El siguiente código codifica los objetos para enviarlos a 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());
nota

La aplicación utiliza un objeto Flink StreamingFileSink para escribir en Amazon S3. Para obtener más información sobre elStreamingFileSink, consulte StreamingFileSinkla documentación de Apache Flink.

Modifique el código de la aplicación

En esta sección, modificará el código de la aplicación para escribir el resultado en su bucket de Amazon S3.

Actualice la siguiente línea con su nombre de usuario para especificar la ubicación de salida de la aplicación:

private static final String s3SinkPath = "s3a://ka-app-code-<username>/data";
Compila el código de la aplicación

Para compilar la aplicación, haga lo siguiente:

  1. Si aún no lo ha hecho, instale Java y Maven. Para obtener más información, consulte Complete los requisitos previos requeridos en el tutorial de Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.

  2. Compile la aplicación con el siguiente comando:

    mvn package -Dflink.version=1.15.3

Al compilar la aplicación, se crea el archivo JAR de la aplicación (target/aws-kinesis-analytics-java-apps-1.0.jar).

nota

El código fuente proporcionado se basa en bibliotecas de Java 11.

Cargue el código Java de streaming de Apache Flink

En esta sección, cargará su código de aplicación en el bucket de Amazon S3 que creó en la sección Crear recursos dependientes.

  1. En la consola de Amazon S3, elija el <username>bucket ka-app-code-, vaya a la carpeta de códigos y elija Upload.

  2. En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo aws-kinesis-analytics-java-apps-1.0.jar que creó en el paso anterior.

  3. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.

El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.

Cree y ejecute la aplicación Managed Service for Apache Flink

Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.

Creación de la aplicación
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.

  3. En la página Managed Service para Apache Flink: crear aplicación, proporcione los detalles de la aplicación de la siguiente manera:

    • En Nombre de la aplicación, escriba MyApplication.

    • En Tiempo de ejecución, escriba Apache Flink.

    • Deje el menú desplegable de versión como Apache Flink versión 1.15.2 (versión recomendada).

  4. Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM. kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

    nota

    Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:

    • En Nombre de la aplicación, escriba MyApplication.

    • En Tiempo de ejecución, escriba Apache Flink.

    • Deje la versión como Apache Flink, versión 1.15.2 (versión recomendada).

  6. Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM. kinesis-analytics-MyApplication-us-west-2

  7. Elija Crear aplicación.

nota

Al crear un Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:

  • Política: kinesis-analytics-service-MyApplication-us-west-2

  • Rol: kinesisanalytics-MyApplication-us-west-2

Edite la política de IAM

Edite la política de IAM para agregar permisos de acceso al flujo de datos de Kinesis.

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Elija Políticas. Elija la política kinesis-analytics-service-MyApplication-us-west-2 que la consola creó en su nombre en la sección anterior.

  3. En la página Resumen, elija Editar política. Seleccione la pestaña JSON.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (012345678901) por el ID de su cuenta. Sustituya <username> por el nombre de usuario.

    { "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" }, ] }
Configure la aplicación
  1. En la MyApplicationpágina, elija Configurar.

  2. En la página Configurar aplicación, proporcione la Ubicación del código:

    • Para el bucket de Amazon S3, introduzca ka-app-code-<username>.

    • En Ruta al objeto de Amazon S3, introduzca code/aws-kinesis-analytics-java-apps-1.0.jar.

  3. En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM kinesis-analytics-MyApplication-us-west-2.

  4. En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.

  5. Para el CloudWatch registro, active la casilla Activar.

  6. Elija Actualizar.

nota

Si decide habilitar el CloudWatch registro, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros automáticamente. Los nombres de estos recursos son los siguientes:

  • Grupo de registro: /aws/kinesis-analytics/MyApplication

  • Flujo de registro: kinesis-analytics-log-stream

Este flujo de registro se utiliza para supervisar la aplicación. No es el mismo flujo de registro que utiliza la aplicación para enviar los resultados.

Ejecución de la aplicación
  1. En la MyApplicationpágina, seleccione Ejecutar. Deje seleccionada la opción Ejecutar sin instantánea y confirme la acción.

  2. Cuando la aplicación se está ejecutando, actualice la página. La consola muestra el Gráfico de la aplicación.

Compruebe el resultado de la aplicación

En la consola de Amazon S3, abra la carpeta de datos de su bucket de S3.

Transcurridos unos minutos, aparecerán los objetos que contienen datos agregados de la aplicación.

nota

La agregación se encuentra habilitada de manera predeterminada en Flink. Para deshabilitarla, utilice lo siguiente:

sink.producer.aggregation-enabled' = 'false'
Opcional: personalice la fuente y el receptor

En esta sección, personalizará la configuración de los objetos origen y receptor.

nota

Tras cambiar las secciones de código descritas en las secciones siguientes, haga lo siguiente para volver a cargar el código de la aplicación:

  • Repita los pasos de la sección Compila el código de la aplicación para compilar el código de la aplicación actualizado.

  • Repita los pasos de la sección Cargue el código Java de streaming de Apache Flink para cargar el código de la aplicación actualizado.

  • En la página de la aplicación en la consola, seleccione Configurar y, a continuación, seleccione Actualizar para volver a cargar en la aplicación el código de la aplicación actualizado.

Configure el particionamiento de datos

En esta sección, configurará los nombres de las carpetas que el receptor de archivos de streaming crea en el bucket de S3. Para ello, añada un asignador de bucket al receptor de archivos de streaming.

Para personalizar los nombres de carpetas creados en el bucket de S3, haga lo siguiente:

  1. Añada las siguientes instrucciones de importación al principio del archivo S3StreamingSinkJob.java:

    import org.apache.flink.streaming.api.functions.sink.filesystem.rollingpolicies.DefaultRollingPolicy; import org.apache.flink.streaming.api.functions.sink.filesystem.bucketassigners.DateTimeBucketAssigner;
  2. Actualice el método createS3SinkFromStaticConfig() en el código para que tenga el siguiente aspecto:

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

El ejemplo de código anterior utiliza el DateTimeBucketAssigner con un formato de fecha personalizado para crear carpetas en el bucket de S3. El DateTimeBucketAssigner utiliza la hora actual del sistema para crear los nombres de los buckets. Si desea crear un asignador de cubos personalizado para personalizar aún más los nombres de las carpetas creadas, puede crear una clase que implemente. BucketAssigner Para implementar la lógica personalizada, utilice el método getBucketId.

Una implementación personalizada de BucketAssigner puede usar el parámetro Contexto para obtener más información sobre un registro con el fin de determinar su carpeta de destino.

Configura la frecuencia de lectura

En esta sección, se configura la frecuencia de las lecturas en la transmisión de origen.

De forma predeterminada, el consumidor de flujos de Kinesis lee la transmisión de origen cinco veces por segundo. Esta frecuencia provocará problemas si hay más de un cliente leyendo la transmisión o si la aplicación necesita volver a intentar leer un registro. Puede evitar estos problemas configurando la frecuencia de lectura del consumidor.

Para establecer la frecuencia de lectura del consumidor de Kinesis, debe configurar el parámetro SHARD_GETRECORDS_INTERVAL_MILLIS.

El siguiente ejemplo de código establece el parámetro SHARD_GETRECORDS_INTERVAL_MILLIS en un segundo:

kinesisConsumerConfig.setProperty(ConsumerConfigConstants.SHARD_GETRECORDS_INTERVAL_MILLIS, "1000");
Configure el búfer de escritura

En esta sección, configurará la frecuencia de escritura y otros ajustes del receptor.

De forma predeterminada, la aplicación escribe en el bucket de destino cada minuto. Puede cambiar este intervalo y otros ajustes configurando el objeto DefaultRollingPolicy.

nota

El receptor de archivos de streaming de Apache Flink escribe en su bucket de salida cada vez que la aplicación crea un punto de control. De forma predeterminada, la aplicación crea un punto de control cada minuto. Para aumentar el intervalo de escritura del receptor S3, también debe aumentar el intervalo del punto de control.

Para configurar el objeto DefaultRollingPolicy, haga lo siguiente:

  1. Aumente el parámetro CheckpointInterval de la aplicación. La siguiente entrada para la UpdateApplicationacción establece el intervalo del punto de control en 10 minutos:

    { "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "CheckpointConfigurationUpdate": { "ConfigurationTypeUpdate" : "CUSTOM", "CheckpointIntervalUpdate": 600000 } } }, "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 5 }

    Para utilizar el código anterior, especifique la versión actual de la aplicación. Puede recuperar la versión de la aplicación mediante la ListApplicationsacción.

  2. Añada la siguiente instrucción de importación al principio del archivo S3StreamingSinkJob.java:

    import java.util.concurrent.TimeUnit;
  3. Actualice el método createS3SinkFromStaticConfig en el archivo S3StreamingSinkJob.java para que tenga el siguiente aspecto:

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

    El ejemplo de código anterior establece la frecuencia de escrituras en el bucket de Amazon S3 en 8 minutos.

Para obtener más información sobre la configuración del receptor de archivos de streaming de Apache Flink, consulte Row-encoded Formats en la documentación de Apache Flink.

Limpia AWS los recursos

En esta sección se incluyen los procedimientos para limpiar AWS los recursos que creó en el tutorial de Amazon S3.

Elimine su aplicación Managed Service for Apache Flink
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel Servicio gestionado para Apache Flink, elija. MyApplication

  3. En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.

Elimine la transmisión de datos de Kinesis
  1. Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis.

  2. En el panel Kinesis Data Streams, ExampleInputStreamelija.

  3. En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.

Elimine los objetos y el bucket de Amazon S3
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija el cubo ka-app-code -. <username>

  3. Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.

Elimine sus recursos de IAM
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En la barra de navegación, seleccione Políticas.

  3. En el control de filtros, introduzca kinesis.

  4. Elija la política kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleccione Acciones de política y, a continuación, Eliminar.

  6. En la barra de navegación, seleccione Roles.

  7. Elija el rol kinesis-analytics- MyApplication -us-west-2.

  8. Elija Eliminar rol y, a continuación, confirme la eliminación.

CloudWatch Elimine sus recursos
  1. Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.

  2. En la barra de navegación, elija Registros.

  3. Elija el grupo de registros MyApplication/aws/kinesis-analytics/.

  4. Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.

Tutorial: Uso de un servicio gestionado para la aplicación Apache Flink para replicar datos de un tema de un clúster de MSK a otro de una VPC

El siguiente tutorial muestra cómo crear una Amazon VPC con un clúster de Amazon MSK y dos temas, y cómo crear una aplicación Managed Service para Apache Flink que lee desde un tema de Amazon MSK y escribe en otro.

nota

Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.

Creación de un Amazon VPC con un clúster de Amazon MSK

Para crear una muestra de VPC y un clúster de Amazon MSK al que acceder desde la aplicación de Managed Service para Apache Flink, siga el tutorial Introducción al uso de Amazon MSK.

Cuando complete el tutorial, tenga en cuenta lo siguiente:

  • En el Paso 3: crear un tema, repita el comando kafka-topics.sh --create para crear un tema de destino llamado AWSKafkaTutorialTopicDestination:

    bin/kafka-topics.sh --create --zookeeper ZooKeeperConnectionString --replication-factor 3 --partitions 1 --topic AWS KafkaTutorialTopicDestination
  • Registre la lista de servidores de arranque de su clúster. Puede obtener la lista de servidores de arranque con el siguiente comando (sustitúyalo por ClusterArnel ARN de su clúster de MSK):

    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" }
  • Al seguir los pasos de los tutoriales, asegúrate de usar la AWS región seleccionada en el código, los comandos y las entradas de la consola.

Cree el código de la aplicación

En esta sección, descargará y compilará el archivo JAR de la aplicación. Recomendamos utilizar Java 11.

El código de la aplicación Java para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:

  1. Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git.

  2. Clone el repositorio remoto con el siguiente comando:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. El código de la aplicación se encuentra en el archivo amazon-kinesis-data-analytics-java-examples/KafkaConnectors/KafkaGettingStartedJob.java. Puede examinar el código para familiarizarse con la estructura del código de la aplicación Managed Service para Apache Flink.

  4. Utilice la herramienta Maven de línea de comandos o el entorno de desarrollo que prefiera para crear el archivo JAR. Para compilar el archivo JAR utilizando la herramienta Maven de línea de comandos, introduzca lo siguiente:

    mvn package -Dflink.version=1.15.3

    Si la compilación es correcta, se crea el siguiente archivo:

    target/KafkaGettingStartedJob-1.0.jar
    nota

    El código fuente proporcionado se basa en bibliotecas de Java 11. Si está utilizando un entorno de desarrollo,

Cargue el código Java de streaming de Apache Flink

En esta sección, cargará su código de aplicación en el bucket de Amazon S3 que creó en el tutorial Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.

nota

Si ha eliminado el bucket de Amazon S3 del tutorial de Introducción, vuelva a seguir el paso Cargue el JAR archivo de código de la aplicación.

  1. En la consola de Amazon S3, elija el <username>bucket ka-app-code- y elija Upload.

  2. En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo KafkaGettingStartedJob-1.0.jar que creó en el paso anterior.

  3. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.

El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.

Creación de la aplicación
  1. Abra la consola de Managed Service for Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.

  3. En la página Managed Service para Apache Flink: crear aplicación, proporcione los detalles de la aplicación de la siguiente manera:

    • En Nombre de la aplicación, escriba MyApplication.

    • En Tiempo de ejecución, escriba Apache Flink versión 1.15.2.

  4. Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM. kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:

  • Política: kinesis-analytics-service-MyApplication-us-west-2

  • Rol: kinesisanalytics-MyApplication-us-west-2

Configure la aplicación
  1. En la MyApplicationpágina, elija Configurar.

  2. En la página Configurar aplicación, proporcione la Ubicación del código:

    • Para el bucket de Amazon S3, introduzca ka-app-code-<username>.

    • En Ruta al objeto de Amazon S3, introduzca KafkaGettingStartedJob-1.0.jar.

  3. En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM kinesis-analytics-MyApplication-us-west-2.

    nota

    Cuando especificas los recursos de la aplicación mediante la consola (como CloudWatch Logs o una Amazon VPC), la consola modifica la función de ejecución de la aplicación para conceder permiso de acceso a esos recursos.

  4. En Propiedades, elija Añadir grupo. Introduzca las siguientes propiedades:

    ID de grupo Clave Valor
    KafkaSource tema AWS KafkaTutorialTopic
    KafkaSource bootstrap.servers La lista de servidores de arranque que guardó anteriormente
    KafkaSource security.protocol SSL
    KafkaSource ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts
    KafkaSource ssl.truststore.contraseña changeit
    nota

    El ssl.truststore.password del certificado predeterminado es “changeit”; no necesita cambiar este valor si utiliza el certificado predeterminado.

    Vuelva a seleccionar Añadir grupo. Introduzca las siguientes propiedades:

    ID de grupo Clave Valor
    KafkaSink tema AWS KafkaTutorialTopicDestination
    KafkaSink bootstrap.servers La lista de servidores de arranque que guardó anteriormente
    KafkaSink security.protocol SSL
    KafkaSink ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts
    KafkaSink ssl.truststore.contraseña changeit
    KafkaSink transacción.timeout.ms 1 000

    El código de la aplicación lee las propiedades de la aplicación anteriores para configurar el origen y el receptor que se utilizan para interactuar con la VPC y el clúster de Amazon MSK. Para obtener más información acerca de las propiedades, consulte Utilice las propiedades de tiempo de ejecución en Managed Service for Apache Flink.

  5. En Instantáneas, seleccione Desactivar. Esto facilitará la actualización de la aplicación sin cargar datos de estado de la aplicación no válidos.

  6. En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.

  7. Para el CloudWatch registro, seleccione la casilla Activar.

  8. En la sección Nube privada virtual (VPC), elija la VPC que desea asociar a la aplicación. Elija las subredes y el grupo de seguridad asociados a la VPC que desee que utilice la aplicación para acceder a los recursos de la VPC.

  9. Elija Actualizar.

nota

Si decide habilitar el CloudWatch registro, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros automáticamente. Los nombres de estos recursos son los siguientes:

  • Grupo de registro: /aws/kinesis-analytics/MyApplication

  • Flujo de registro: kinesis-analytics-log-stream

Este flujo de registro se utiliza para supervisar la aplicación.

Ejecución de la aplicación

Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.

Pruebe la aplicación

En esta sección, se escriben los registros en el tema de origen. La aplicación lee los registros del tema de origen y los escribe en el tema de destino. Para comprobar que la aplicación funciona, escriba los registros en el tema de origen y lea los registros del tema de destino.

Para escribir y leer registros de los temas, siga los pasos del Paso 6: producir y consumir datos del tutorial Cómo empezar a utilizar Amazon MSK.

Para leer el tema de destino, utilice el nombre del tema de destino en lugar del tema de origen en la segunda conexión al clúster:

bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerString --consumer.config client.properties --topic AWS KafkaTutorialTopicDestination --from-beginning

Si no aparece ningún registro en el tema de destino, consulte la sección No se puede acceder a los recursos de un VPC del tema Solucione los problemas del servicio gestionado para Apache Flink.

Ejemplo: utilizar un consumidor de EFO con una transmisión de datos de Kinesis

En este ejercicio, creará una aplicación de servicio gestionado para Apache Flink que lea de una transmisión de datos de Kinesis mediante un consumidor de fan-out mejorado (EFO). Si un consumidor de Kinesis usa EFO, el servicio Kinesis Data Streams le proporciona su propio ancho de banda dedicado, en lugar de hacer que el consumidor comparta el ancho de banda fijo del flujo con los demás consumidores que leen el flujo.

Para obtener más información sobre el uso de EFO con el consumidor Kinesis, consulte FLIP-128: Enhanced Fan Out for Kinesis Consumers.

La aplicación que cree en este ejemplo utiliza el conector AWS Kinesis (flink-connector-kinesis) 1.15.3.

nota

Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.

Cree recursos dependientes

Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, debe crear los siguientes recursos dependientes:

  • Dos flujos de datos de Kinesis (ExampleInputStream y ExampleOutputStream)

  • Un bucket de Amazon S3 para almacenar el código de la aplicación (ka-app-code-<username>)

Puede crear los flujos de Kinesis y el bucket de Amazon S3 usando la consola. Si desea obtener instrucciones para crear estos recursos, consulte los siguientes temas:

  • Creación y actualización de flujos de datos en la Guía para desarrolladores de Amazon Kinesis Data Streams. Asigne un nombre a los flujos de datos ExampleInputStream y ExampleOutputStream.

  • ¿Cómo se puede crear un bucket de S3? en la guía de usuario de Amazon Simple Storage Service. Asigne al bucket de Amazon S3 un nombre único globalmente añadiendo su nombre de inicio de sesión, por ejemplo, ka-app-code-<username>.

Escriba registros de muestra en el flujo de entrada

En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.

nota

Esta sección requiere AWS SDK for Python (Boto).

  1. Cree un archivo denominado stock.py con el siguiente contenido:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  2. Ejecute el script stock.py:

    $ python stock.py

    Mantenga el script en ejecución mientras completa el resto del tutorial.

Descargue y examine el código de la aplicación

El código de la aplicación Java de este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:

  1. Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git.

  2. Clone el repositorio remoto con el siguiente comando:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Vaya al directorio amazon-kinesis-data-analytics-java-examples/EfoConsumer.

El código de la aplicación se encuentra en el archivo EfoApplication.java. Tenga en cuenta lo siguiente en relación con el código de la aplicación:

  • Para activar el consumidor EFO, configure los siguientes parámetros en el consumidor de Kinesis:

    • RECORD_PUBLISHER_TYPE: defina este parámetro en EFO para que su aplicación utilice un consumidor de EFO para acceder a los datos del flujo de datos de Kinesis.

    • EFO_CONSUMER_NAME: defina este parámetro en un valor de cadena que sea único entre los consumidores de este flujo. La reutilización de un nombre de consumidor en el mismo flujo de datos de Kinesis provocará la cancelación del consumidor anterior que utilizó ese nombre.

  • El siguiente ejemplo de código muestra cómo asignar valores a las propiedades de configuración del consumidor para utilizar un consumidor EFO para leer la transmisión de origen:

    consumerConfig.putIfAbsent(RECORD_PUBLISHER_TYPE, "EFO"); consumerConfig.putIfAbsent(EFO_CONSUMER_NAME, "basic-efo-flink-app");
Compila el código de la aplicación

Para compilar la aplicación, haga lo siguiente:

  1. Si aún no lo ha hecho, instale Java y Maven. Para obtener más información, consulte Complete los requisitos previos requeridos en el tutorial de Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.

  2. Compile la aplicación con el siguiente comando:

    mvn package -Dflink.version=1.15.3
    nota

    El código fuente proporcionado se basa en bibliotecas de Java 11.

Al compilar la aplicación, se crea el archivo JAR de la aplicación (target/aws-kinesis-analytics-java-apps-1.0.jar).

Cargue el código Java de streaming de Apache Flink

En esta sección, cargará su código de aplicación en el bucket de Amazon S3 que creó en la sección Cree recursos dependientes.

  1. En la consola de Amazon S3, elija el <username>bucket ka-app-code- y elija Upload.

  2. En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo aws-kinesis-analytics-java-apps-1.0.jar que creó en el paso anterior.

  3. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.

El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.

Cree y ejecute la aplicación Managed Service for Apache Flink

Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.

Creación de la aplicación
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.

  3. En la página Managed Service para Apache Flink: crear aplicación, proporcione los detalles de la aplicación de la siguiente manera:

    • En Nombre de la aplicación, escriba MyApplication.

    • En Tiempo de ejecución, escriba Apache Flink.

      nota

      Managed Service para Apache Flink utiliza la versión 1.15.2 de Apache Flink.

    • Deje el menú desplegable de versión como Apache Flink versión 1.15.2 (versión recomendada).

  4. Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM. kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:

  • Política: kinesis-analytics-service-MyApplication-us-west-2

  • Rol: kinesisanalytics-MyApplication-us-west-2

Edite la política de IAM

Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Elija Políticas. Elija la política kinesis-analytics-service-MyApplication-us-west-2 que la consola creó en su nombre en la sección anterior.

  3. En la página Resumen, elija Editar política. Seleccione la pestaña JSON.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (012345678901) por el ID de su cuenta.

    nota

    Estos permisos otorgan a la aplicación la posibilidad de acceder al consumidor de EFO.

    { "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:*" ] } ] }
Configure la aplicación
  1. En la MyApplicationpágina, elija Configurar.

  2. En la página Configurar aplicación, proporcione la Ubicación del código:

    • Para el bucket de Amazon S3, introduzca ka-app-code-<username>.

    • En Ruta al objeto de Amazon S3, introduzca aws-kinesis-analytics-java-apps-1.0.jar.

  3. En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM kinesis-analytics-MyApplication-us-west-2.

  4. En Propiedades, elija Crear grupo.

  5. Escriba las siguientes propiedades y valores de la aplicación:

    ID de grupo Clave Valor
    ConsumerConfigProperties flink.stream.recordpublisher EFO
    ConsumerConfigProperties flink.stream.efo.consumername basic-efo-flink-app
    ConsumerConfigProperties INPUT_STREAM ExampleInputStream
    ConsumerConfigProperties flink.inputstream.initpos LATEST
    ConsumerConfigProperties AWS_REGION us-west-2
  6. En Propiedades, elija Crear grupo.

  7. Escriba las siguientes propiedades y valores de la aplicación:

    ID de grupo Clave Valor
    ProducerConfigProperties OUTPUT_STREAM ExampleOutputStream
    ProducerConfigProperties AWS_REGION us-west-2
    ProducerConfigProperties AggregationEnabled false
  8. En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.

  9. Para el CloudWatch registro, active la casilla Activar.

  10. Elija Actualizar.

nota

Si decide habilitar el CloudWatch registro, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros automáticamente. Los nombres de estos recursos son los siguientes:

  • Grupo de registro: /aws/kinesis-analytics/MyApplication

  • Flujo de registro: kinesis-analytics-log-stream

Este flujo de registro se utiliza para supervisar la aplicación. No es el mismo flujo de registro que utiliza la aplicación para enviar los resultados.

Ejecución de la aplicación

Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.

Puede comprobar las métricas del servicio gestionado para Apache Flink en la CloudWatch consola para comprobar que la aplicación funciona.

También puede consultar el nombre de su consumidor basic-efo-flink-app() en la consola de Kinesis Data Streams, en la pestaña desplegable mejorada de la transmisión de datos.

Limpie los recursos AWS

Esta sección incluye procedimientos para limpiar los AWS recursos creados en el tutorial de efo Window.

Elimine su aplicación Managed Service for Apache Flink
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. en el panel Servicio gestionado para Apache Flink, elija. MyApplication

  3. En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.

Elimine sus transmisiones de datos de Kinesis
  1. Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis.

  2. En el panel Kinesis Data Streams, ExampleInputStreamelija.

  3. En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.

  4. En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.

Eliminación del objeto y el bucket de Amazon S3
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija el cubo ka-app-code -. <username>

  3. Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.

Elimine sus recursos de IAM
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En la barra de navegación, seleccione Políticas.

  3. En el control de filtros, introduzca kinesis.

  4. Elija la política kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleccione Acciones de política y, a continuación, Eliminar.

  6. En la barra de navegación, seleccione Roles.

  7. Elija el rol kinesis-analytics- MyApplication -us-west-2.

  8. Elija Eliminar rol y, a continuación, confirme la eliminación.

CloudWatch Elimine sus recursos
  1. Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.

  2. En la barra de navegación, elija Registros.

  3. Elija el grupo de registros MyApplication/aws/kinesis-analytics/.

  4. Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.

Ejemplo: escribir a Firehose

En este ejercicio, creará una aplicación de Managed Service for Apache Flink que tenga una transmisión de datos de Kinesis como fuente y una transmisión Firehose como sumidero. Con el receptor, puede verificar la salida de la aplicación en un bucket de Amazon S3.

nota

Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.

Cree recursos dependientes

Antes de crear un Managed Service para Apache Flink para este ejercicio, debe crear los siguientes recursos dependientes:

  • Un flujo de datos de Kinesis (ExampleInputStream)

  • Una secuencia de Firehose en la que la aplicación escribe la salida ()ExampleDeliveryStream.

  • Un bucket de Amazon S3 para almacenar el código de la aplicación (ka-app-code-<username>)

Puede crear la transmisión de Kinesis, los buckets de Amazon S3 y la transmisión de Firehose mediante la consola. Si desea obtener instrucciones para crear estos recursos, consulte los siguientes temas:

Escribe registros de muestra en el flujo de entrada

En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.

nota

Esta sección requiere AWS SDK for Python (Boto).

  1. Cree un archivo denominado stock.py con el siguiente contenido:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  2. Ejecute el script stock.py:

    $ python stock.py

    Mantenga el script en ejecución mientras completa el resto del tutorial.

Descargue y examine el código Java de streaming de Apache Flink

El código de la aplicación Java para este ejemplo está disponible en. GitHub Para descargar el código de la aplicación, haga lo siguiente:

  1. Clone el repositorio remoto con el siguiente comando:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  2. Vaya al directorio amazon-kinesis-data-analytics-java-examples/FirehoseSink.

El código de la aplicación se encuentra en el archivo FirehoseSinkStreamingJob.java. Tenga en cuenta lo siguiente en relación con el código de la aplicación:

  • La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de Kinesis:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • La aplicación utiliza un sumidero Firehose para escribir datos en una transmisión Firehose. El siguiente fragmento crea el sumidero 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(); }
Compila el código de la aplicación

Para compilar la aplicación, haga lo siguiente:

  1. Si aún no lo ha hecho, instale Java y Maven. Para obtener más información, consulte Complete los requisitos previos requeridos en el tutorial de Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.

  2. Para utilizar el conector de Kinesis para la siguiente aplicación, debe descargar, compilar e instalar Apache Maven. Para obtener más información, consulte Uso del conector Apache Flink Kinesis Streams con versiones anteriores de Apache Flink.

  3. Compile la aplicación con el siguiente comando:

    mvn package -Dflink.version=1.15.3
    nota

    El código fuente proporcionado se basa en bibliotecas de Java 11.

Al compilar la aplicación, se crea el archivo JAR de la aplicación (target/aws-kinesis-analytics-java-apps-1.0.jar).

Cargue el código Java de streaming de Apache Flink

En esta sección, carga el código de aplicación en el bucket de Amazon S3 que creó en la sección Cree recursos dependientes.

Cómo cargar el código de la aplicación
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. En la consola, selecciona el compartimento ka-app-code- <username>y, a continuación, selecciona Cargar.

  3. En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo java-getting-started-1.0.jar que creó en el paso anterior.

  4. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.

El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.

Cree y ejecute la aplicación Managed Service for Apache Flink

Puede crear y ejecutar una aplicación de Managed Service para Apache Flink mediante la consola o la AWS CLI.

nota

Cuando crea la aplicación mediante la consola, sus recursos AWS Identity and Access Management (de IAM) y de Amazon CloudWatch Logs se crean automáticamente. Cuando crea la aplicación con AWS CLI, crea estos recursos por separado.

Cree y ejecute la aplicación (consola)

Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.

Creación de la aplicación
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.

  3. En la página Managed Service para Apache Flink: crear aplicación, proporcione los detalles de la aplicación de la siguiente manera:

    • En Nombre de la aplicación, escriba MyApplication.

    • En Descripción, escriba My java test app.

    • En Tiempo de ejecución, escriba Apache Flink.

      nota

      Managed Service para Apache Flink utiliza la versión 1.15.2 de Apache Flink.

    • Deje el menú desplegable de versión como Apache Flink versión 1.15.2 (versión recomendada).

  4. Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM. kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear la aplicación mediante la consola, tiene la opción de crear un rol de IAM y una política para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:

  • Política: kinesis-analytics-service-MyApplication-us-west-2

  • Rol: kinesisanalytics-MyApplication-us-west-2

Edite la política de IAM

Edite la política de IAM para añadir permisos de acceso a la transmisión de datos de Kinesis y a la transmisión de Firehose.

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Elija Políticas. Elija la política kinesis-analytics-service-MyApplication-us-west-2 que la consola creó en su nombre en la sección anterior.

  3. En la página Resumen, elija Editar política. Seleccione la pestaña JSON.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace todas las instancias del ID de la cuenta de muestra (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/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" } ] }
Configure la aplicación
  1. En la MyApplicationpágina, elija Configurar.

  2. En la página Configurar aplicación, proporcione la Ubicación del código:

    • Para el bucket de Amazon S3, introduzca ka-app-code-<username>.

    • En Ruta al objeto de Amazon S3, introduzca java-getting-started-1.0.jar.

  3. En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM kinesis-analytics-MyApplication-us-west-2.

  4. En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.

  5. Para el CloudWatch registro, active la casilla Activar.

  6. Elija Actualizar.

nota

Si decide habilitar el CloudWatch registro, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros automáticamente. Los nombres de estos recursos son los siguientes:

  • Grupo de registro: /aws/kinesis-analytics/MyApplication

  • Flujo de registro: kinesis-analytics-log-stream

Ejecución de la aplicación

Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.

Detenga la aplicación

En la MyApplicationpágina, selecciona Detener. Confirme la acción.

Actualizar la aplicación

Mediante la consola, puede actualizar la configuración de la aplicación, tal como sus propiedades, ajustes de monitorización y la ubicación o el nombre de archivo JAR de la aplicación.

En la MyApplicationpágina, elija Configurar. Actualice la configuración de la aplicación y elija Actualizar.

nota

Para actualizar el código de la aplicación en la consola, debe cambiar el nombre del objeto del JAR, usar un bucket de S3 diferente o usar el AWS CLI como se describe en la sección Actualización del código de la aplicación. Si el nombre del archivo o el bucket no cambian, el código de la aplicación no se vuelve a cargar al seleccionar Actualizar en la página de Configuración.

Cree y ejecute la aplicación (AWS CLI)

En esta sección, se utiliza AWS CLI para crear y ejecutar la aplicación Managed Service for Apache Flink.

Creación de una política de permisos

En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción read en el flujo de origen y otra que concede permisos para las acciones write 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 el nombre de usuario por el nombre de usuario que utilizará para crear el bucket de Amazon S3 para almacenar el código de la aplicación. Sustituya el ID de la cuenta en los nombres de recurso de Amazon (ARN) (012345678901) por el ID de su cuenta.

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

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.

nota

Para acceder a otros servicios de Amazon, puede usar AWS SDK for Java. Managed Service para Apache Flink establece automáticamente las credenciales requeridas por el SDK con las del rol de IAM de ejecución del servicio asociada a su aplicación. No hace falta realizar ningún otro paso.

Creación de un rol 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 transmisión si no tiene 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 otorga permiso a Managed Service para Apache Flink para asumir el rol. La política de permisos determina qué puede hacer Managed Service para Apache Flink 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, elija Roles, Crear rol.

  3. En Seleccionar tipo de entidad de confianza, elija Servicio de AWS . En Elegir el servicio que usará este rol, elija Kinesis. En Seleccionar su caso de uso, elija Kinesis Analytics.

    Elija Siguiente: permisos.

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

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

  6. 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. Asocie la política que ha creado en el paso anterior, Creación de 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 ReadSourceStreamWriteSinkStream política AK y elija Adjuntar política.

Ahora ha creado el rol de ejecución de servicio que utilizará 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.

Cree la aplicación Managed Service para Apache Flink
  1. 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 por el sufijo que eligió en la sección Cree recursos dependientes (ka-app-code-<username>). Reemplace el ID de la cuenta de muestra (012345678901) en el rol de ejecución del servicio por el ID de su cuenta.

    { "ApplicationName": "test", "ApplicationDescription": "my java test app", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "java-getting-started-1.0.jar" } }, "CodeContentType": "ZIPFILE" } } } }
  2. Ejecute la acción CreateApplication con la solicitud anterior 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 acción StartApplication 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": "test", "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 acción StopApplication 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": "test" }
  2. Ejecute la acción StopApplication con la siguiente solicitud para detener la aplicación:

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

La aplicación se habrá detenido.

Añada 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 CloudWatch de Logs con su aplicación, consulteConfigurar el registro de aplicaciones en Managed Service for Apache Flink.

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 UpdateApplication AWS CLI acción.

Para usarlo AWS CLI, elimine el paquete de códigos anterior de su bucket de Amazon S3, cargue la nueva versión y llame UpdateApplication especificando el mismo nombre de objeto y bucket de Amazon S3.

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": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username", "FileKeyUpdate": "java-getting-started-1.0.jar" } } } } }
Limpieza de recursos de AWS

En esta sección se incluyen los procedimientos para limpiar AWS los recursos creados en el tutorial de introducción.

Elimine su aplicación Managed Service for Apache Flink
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel Servicio gestionado para Apache Flink, elija. MyApplication

  3. Elija Configurar.

  4. En la sección Instantáneas, seleccione Deshabilitar y, a continuación, seleccione Actualizar.

  5. En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.

Elimine la transmisión de datos de Kinesis
  1. Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis.

  2. En el panel Kinesis Data Streams, ExampleInputStreamelija.

  3. En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.

Elimina tu transmisión de Firehose
  1. Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis.

  2. En el panel Firehose, elige. ExampleDeliveryStream

  3. En la ExampleDeliveryStreampágina, selecciona Eliminar la transmisión de Firehose y, a continuación, confirma la eliminación.

Elimine el objeto y el bucket de Amazon S3
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija el cubo ka-app-code -. <username>

  3. Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.

  4. Si has creado un bucket de Amazon S3 para el destino de tu transmisión de Firehose, elimínalo también.

Elimine sus recursos de IAM
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En la barra de navegación, seleccione Políticas.

  3. En el control de filtros, introduzca kinesis.

  4. Elija la política kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleccione Acciones de política y, a continuación, Eliminar.

  6. Si has creado una nueva política para tu transmisión de Firehose, elimínala también.

  7. En la barra de navegación, seleccione Roles.

  8. Elija el rol kinesis-analytics- MyApplication -us-west-2.

  9. Elija Eliminar rol y, a continuación, confirme la eliminación.

  10. Si has creado un nuevo rol para tu transmisión de Firehose, elimínalo también.

Elimina tus recursos CloudWatch
  1. Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.

  2. En la barra de navegación, elija Registros.

  3. Elija el grupo de registros MyApplication/aws/kinesis-analytics/.

  4. Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.

Ejemplo: leer desde una transmisión de Kinesis en una cuenta diferente

En este ejemplo se muestra cómo crear una aplicación Managed Service para Apache Flink que lea los datos de un flujo de Kinesis en una cuenta diferente. En este ejemplo, utilizará una cuenta para el flujo de Kinesis de origen y una segunda cuenta para la aplicación Managed Service para Apache Flink y el flujo de receptor de Kinesis.

Requisitos previos
  • En este tutorial, modificará el ejemplo de introducción para leer los datos de un flujo de Kinesis en una cuenta diferente. Complete el tutorial Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink antes de continuar.

  • Necesita dos AWS cuentas para completar este tutorial: una para la transmisión de origen y otra para la transmisión de aplicación y la transmisión de destino. Utilice la AWS cuenta que utilizó en el tutorial de introducción para la aplicación y para la transmisión secundaria. Use una cuenta AWS diferente para el flujo de origen.

Configuración

Accederá a sus dos AWS cuentas mediante perfiles con nombre. Modifique sus AWS credenciales y los archivos de configuración para incluir dos perfiles que contengan la información de región y conexión de sus dos cuentas.

El siguiente archivo de credenciales de ejemplo contiene dos perfiles con nombre, ka-source-stream-account-profile y ka-sink-stream-account-profile. Utilice la cuenta que utilizó en el tutorial de Introducción para la cuenta del flujo del receptor.

[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

El siguiente archivo de configuración de ejemplo contiene perfiles con el mismo nombre e información sobre la región y el formato de salida.

[profile ka-source-stream-account-profile] region=us-west-2 output=json [profile ka-sink-stream-account-profile] region=us-west-2 output=json
nota

En este tutorial no se utiliza el ka-sink-stream-account-profile. Se incluye como ejemplo de cómo acceder a dos AWS cuentas diferentes mediante perfiles.

Para obtener más información sobre el uso de perfiles con nombre AWS CLI asignado, consulte Perfiles con nombre en la AWS Command Line Interfacedocumentación.

Crear transmisión de Kinesis de origen

En esta sección, creará el flujo de Kinesis en la cuenta de origen.

Ingrese el siguiente comando para crear el flujo de Kinesis que la aplicación utilizará como entrada. Tenga en cuenta que el parámetro --profile especifica qué perfil de cuenta utilizar.

$ aws kinesis create-stream \ --stream-name SourceAccountExampleInputStream \ --shard-count 1 \ --profile ka-source-stream-account-profile
Cree y actualice las funciones y políticas de IAM

Para permitir el acceso a los objetos en todas AWS las cuentas, debe crear una función y una política de IAM en la cuenta de origen. A continuación, modifique la política de IAM en la cuenta del receptor. Para obtener más información sobre cómo crear y administrar roles y políticas de IAM, consulte los siguientes temas en la Guía del usuario de AWS Identity and Access Management :

Funciones y políticas de la cuenta Sink
  1. Edite la política kinesis-analytics-service-MyApplication-us-west-2 desde el tutorial de Introducción. Esta política permite asumir el rol en la cuenta de origen para leer la transmisión de origen.

    nota

    Al usar la consola para crear la aplicación, la consola crea una política llamada kinesis-analytics-service-<application name>-<application region> y un rol denominado kinesisanalytics-<application name>-<application region>.

    Añada a la política la sección resaltada a continuación. Sustituya el identificador de cuenta de ejemplo (SOURCE01234567) por el identificador de la cuenta que utilizará para el flujo de origen.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AssumeRoleInSourceAccount", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::SOURCE01234567:role/KA-Source-Stream-Role" }, { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-username/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:SINK012345678:log-group:*" ] }, { "Sid": "ListCloudwatchLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:SINK012345678:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutCloudwatchLogs", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:SINK012345678:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] } ] }
  2. Abra el rol kinesis-analytics-MyApplication-us-west-2 y anote su nombre de recurso de Amazon (ARN). Lo necesitará en la sección siguiente. El rol de ARN tiene el siguiente aspecto:

    arn:aws:iam::SINK012345678:role/service-role/kinesis-analytics-MyApplication-us-west-2
Funciones y políticas de la cuenta de origen
  1. Cree una política en la cuenta de origen denominada KA-Source-Stream-Policy. Utilice el siguiente JSON para la política. Sustituya el número de cuenta de muestra por el número de cuenta de la cuenta de origen.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadInputStream", "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetRecords", "kinesis:GetShardIterator", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:us-west-2:SOURCE123456784:stream/SourceAccountExampleInputStream" } ] }
  2. Cree un rol en la cuenta de origen denominada MF-Source-Stream-Role. Haga lo siguiente para crear el rol utilizando el caso de uso de Managed Flink:

    1. En la Consola de administración de IAM, seleccione Crear rol.

    2. En la página Crear rol, elija AWS Servicio. En la lista de servicios, elija Kinesis.

    3. En la sección Seleccione su caso de uso, elija Managed Service para Apache Flink.

    4. Elija Siguiente: permisos.

    5. Agregue la política de permisos KA-Source-Stream-Policy que creó en el paso anterior. Elija Siguiente:Etiquetas.

    6. Elija Siguiente:Revisar.

    7. Llame al rol KA-Source-Stream-Role. Su aplicación utilizará este rol para acceder al flujo de origen.

  3. Agregue el ARN kinesis-analytics-MyApplication-us-west-2 de la cuenta receptor a la relación de confianza del rol KA-Source-Stream-Role en la cuenta de origen:

    1. Abra KA-Source-Stream-Role en la consola de IAM.

    2. Seleccione la pestaña Relaciones de confianza.

    3. Elija Editar relación de confianza.

    4. Utilice el siguiente código para la relación de confianza. Reemplace el ID de la cuenta de muestra (SINK012345678) por el ID de su cuenta receptor.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::SINK012345678:role/service-role/kinesis-analytics-MyApplication-us-west-2" }, "Action": "sts:AssumeRole" } ] }
Actualizar el script de Python

En esta sección, actualizará el script de Python que genera datos de muestra para usar el perfil de la cuenta de origen.

Actualice el script stock.py con los siguientes cambios resaltados.

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")
Actualice la aplicación Java

En esta sección, se actualiza el código de la aplicación Java para que asuma el rol de cuenta de origen al leer el flujo de origen.

Realice los siguientes cambios en el archivo BasicStreamingJob.java. Sustituya el número de cuenta de origen del ejemplo (SOURCE01234567) por su número de cuenta de origen.

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"); } }
Cree, cargue y ejecute la aplicación

Puede hacer lo siguiente para actualizar y ejecutar la aplicación:

  1. Compile la aplicación nuevamente ejecutando el siguiente comando en el directorio con el archivo pom.xml.

    mvn package -Dflink.version=1.15.3
  2. Elimine el archivo JAR anterior del bucket de Amazon Simple Storage Service (Amazon S3) y, a continuación, cargue el archivo aws-kinesis-analytics-java-apps-1.0.jar nuevo en el bucket de S3.

  3. En la página de la aplicación, en la consola de Managed Service para Apache Flink, seleccione Configurar y actualizar para volver a cargar el archivo JAR de la aplicación.

  4. Ejecute el script stock.py para enviar los datos a la transmisión de origen.

    python stock.py

La aplicación ahora lee los datos de la transmisión de Kinesis en la otra cuenta.

Puede comprobar que la aplicación funciona verificando la métrica PutRecords.Bytes del flujo ExampleOutputStream. Si hay actividad en la transmisión de salida, la aplicación funciona correctamente.

Tutorial: Uso de una tienda de confianza personalizada con Amazon MSK

API de origen de datos actual

Si utiliza las API de fuentes de datos actuales, su aplicación puede aprovechar la utilidad Amazon MSK Config Providers que se describe aquí. Esto le permite a su KafkaSource función acceder al almacén de claves y al almacén de confianza para el TLS mutuo en Amazon S3.

... // define names of config providers: builder.setProperty("config.providers", "secretsmanager,s3import"); // provide implementation classes for each provider: builder.setProperty("config.providers.secretsmanager.class", "com.amazonaws.kafka.config.providers.SecretsManagerConfigProvider"); builder.setProperty("config.providers.s3import.class", "com.amazonaws.kafka.config.providers.S3ImportConfigProvider"); String region = appProperties.get(Helpers.S3_BUCKET_REGION_KEY).toString(); String keystoreS3Bucket = appProperties.get(Helpers.KEYSTORE_S3_BUCKET_KEY).toString(); String keystoreS3Path = appProperties.get(Helpers.KEYSTORE_S3_PATH_KEY).toString(); String truststoreS3Bucket = appProperties.get(Helpers.TRUSTSTORE_S3_BUCKET_KEY).toString(); String truststoreS3Path = appProperties.get(Helpers.TRUSTSTORE_S3_PATH_KEY).toString(); String keystorePassSecret = appProperties.get(Helpers.KEYSTORE_PASS_SECRET_KEY).toString(); String keystorePassSecretField = appProperties.get(Helpers.KEYSTORE_PASS_SECRET_FIELD_KEY).toString(); // region, etc.. builder.setProperty("config.providers.s3import.param.region", region); // properties builder.setProperty("ssl.truststore.location", "${s3import:" + region + ":" + truststoreS3Bucket + "/" + truststoreS3Path + "}"); builder.setProperty("ssl.keystore.type", "PKCS12"); builder.setProperty("ssl.keystore.location", "${s3import:" + region + ":" + keystoreS3Bucket + "/" + keystoreS3Path + "}"); builder.setProperty("ssl.keystore.password", "${secretsmanager:" + keystorePassSecret + ":" + keystorePassSecretField + "}"); builder.setProperty("ssl.key.password", "${secretsmanager:" + keystorePassSecret + ":" + keystorePassSecretField + "}"); ...

Puede encontrar más detalles y un tutorial aquí.

API heredadas SourceFunction

Si utiliza las SourceFunction API heredadas, su aplicación utilizará esquemas de serialización y deserialización personalizados que anularán el open método para cargar el almacén de confianza personalizado. Esto hace que el almacén de confianza esté disponible para la aplicación después de que la aplicación se reinicie o sustituya los subprocesos.

El almacén de confianza personalizado se recupera y almacena mediante el siguiente código:

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); } }
nota

Apache Flink requiere que el almacén de confianza esté en formato JKS.

nota

Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.

El siguiente tutorial muestra cómo conectarse de forma segura (cifrado en tránsito) a un clúster de Kafka que utiliza certificados de servidor emitidos por una autoridad de certificación (Certificate Authority, CA) personalizada, privada o incluso autohospedada.

Para conectar cualquier cliente de Kafka de forma segura mediante TLS a un clúster de Kafka, el cliente de Kafka (como la aplicación Flink de ejemplo) debe confiar en toda la cadena de confianza que representan los certificados de servidor del clúster de Kafka (desde la CA emisora hasta la CA raíz). Como ejemplo de un almacén de confianza personalizado, utilizaremos un clúster de Amazon MSK con la autenticación TLS mutua (MTLS) habilitada. Esto implica que los nodos del clúster de MSK utilizan certificados de servidor emitidos por una Autoridad de AWS Certificación Privada de Certificate Manager (ACM Private CA) que es privada para su cuenta y región y, por lo tanto, el almacén de confianza predeterminado de la máquina virtual Java (JVM) que ejecuta la aplicación Flink no confía en él.

nota
  • Un almacén de claves se utiliza para almacenar las claves privadas y los certificados de identidad que una aplicación debe presentar tanto al servidor como al cliente para su verificación.

  • Un almacén de confianza se utiliza para almacenar los certificados de las autoridades certificadas (CA) que verifican el certificado presentado por el servidor en una conexión SSL.

También puede usar la técnica de este tutorial para las interacciones entre una aplicación de Managed Service para Apache Flink y otras fuentes de Apache Kafka, como:

Cree una VPC con un clúster de Amazon MSK

Para crear una muestra de VPC y un clúster de Amazon MSK al que acceder desde la aplicación de Managed Service para Apache Flink, siga el tutorial Introducción al uso de Amazon MSK.

Cuando complete el tutorial, también haga lo siguiente:

  • En el Paso 3: crear un tema, repita el comando kafka-topics.sh --create para crear un tema de destino llamado AWS KafkaTutorialTopicDestination:

    bin/kafka-topics.sh --create --bootstrap-server ZooKeeperConnectionString --replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopicDestination
    nota

    Si el kafka-topics.sh comando devuelve unZooKeeperClientTimeoutException, compruebe que el grupo de seguridad del clúster de Kafka tenga una regla de entrada que permita todo el tráfico procedente de la dirección IP privada de la instancia del cliente.

  • Registre la lista de servidores de arranque de su clúster. Puede obtener la lista de servidores de arranque con el siguiente comando (sustitúyalo por ClusterArnel ARN de su clúster de MSK):

    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" }
  • Al seguir los pasos de este tutorial y los tutoriales de requisitos previos, asegúrese de utilizar la AWS región seleccionada en el código, los comandos y las entradas de la consola.

Cree un almacén de confianza personalizado y aplíquelo a su clúster

En esta sección, debe crear una entidad de certificación (Certificate Authority, CA) personalizada, utilizarla para generar un almacén de confianza personalizado y aplicarla a su clúster de MSK.

Para crear y aplicar su almacén de confianza personalizado, siga el tutorial sobre autenticación de clientes de la Guía para desarrolladores de Amazon Managed Streaming para Apache Kafka.

Cree el código de la aplicación

En esta sección, descargará y compilará el archivo JAR de la aplicación.

El código de la aplicación Java para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:

  1. Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git.

  2. Clone el repositorio remoto con el siguiente comando:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. El código de la aplicación se encuentra en los amazon-kinesis-data-analytics-java-examples/CustomKeystore. Puede examinar el código para familiarizarse con la estructura del código de Managed Service para Apache Flink.

  4. Utilice la herramienta Maven de línea de comandos o el entorno de desarrollo que prefiera para crear el archivo JAR. Para compilar el archivo JAR utilizando la herramienta Maven de línea de comandos, introduzca lo siguiente:

    mvn package -Dflink.version=1.15.3

    Si la compilación es correcta, se crea el siguiente archivo:

    target/flink-app-1.0-SNAPSHOT.jar
    nota

    El código fuente proporcionado se basa en bibliotecas de Java 11.

Cargue el código Java de streaming de Apache Flink

En esta sección, cargará su código de aplicación en el bucket de Amazon S3 que creó en el tutorial Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.

nota

Si ha eliminado el bucket de Amazon S3 del tutorial de Introducción, vuelva a seguir el paso Cargue el JAR archivo de código de la aplicación.

  1. En la consola de Amazon S3, elija el <username>bucket ka-app-code- y elija Upload.

  2. En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo flink-app-1.0-SNAPSHOT.jar que creó en el paso anterior.

  3. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.

El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.

Creación de la aplicación
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.

  3. En la página Managed Service para Apache Flink: crear aplicación, proporcione los detalles de la aplicación de la siguiente manera:

    • En Nombre de la aplicación, escriba MyApplication.

    • En Tiempo de ejecución, escriba Apache Flink versión 1.15.2.

  4. Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM. kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear un Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:

  • Política: kinesis-analytics-service-MyApplication-us-west-2

  • Rol: kinesisanalytics-MyApplication-us-west-2

Configure la aplicación
  1. En la MyApplicationpágina, elija Configurar.

  2. En la página Configurar aplicación, proporcione la Ubicación del código:

    • Para el bucket de Amazon S3, introduzca ka-app-code-<username>.

    • En Ruta al objeto de Amazon S3, introduzca flink-app-1.0-SNAPSHOT.jar.

  3. En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM kinesis-analytics-MyApplication-us-west-2.

    nota

    Al especificar los recursos de la aplicación mediante la consola (como registros o una VPC), la consola modifica el rol de ejecución de la aplicación para conceder permiso de acceso a esos recursos.

  4. En Propiedades, elija Añadir grupo. Introduzca las siguientes propiedades:

    ID de grupo Clave Valor
    KafkaSource tema AWS KafkaTutorialTopic
    KafkaSource bootstrap.servers La lista de servidores de arranque que guardó anteriormente
    KafkaSource security.protocol SSL
    KafkaSource ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts
    KafkaSource ssl.truststore.contraseña changeit
    nota

    El ssl.truststore.password del certificado predeterminado es “changeit”; no necesita cambiar este valor si utiliza el certificado predeterminado.

    Vuelva a seleccionar Añadir grupo. Introduzca las siguientes propiedades:

    ID de grupo Clave Valor
    KafkaSink tema AWS KafkaTutorialTopicDestination
    KafkaSink bootstrap.servers La lista de servidores de arranque que guardó anteriormente
    KafkaSink security.protocol SSL
    KafkaSink ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts
    KafkaSink ssl.truststore.contraseña changeit
    KafkaSink transacción.timeout.ms 1 000

    El código de la aplicación lee las propiedades de la aplicación anteriores para configurar el origen y el receptor que se utilizan para interactuar con la VPC y el clúster de Amazon MSK. Para obtener más información acerca de las propiedades, consulte Utilice las propiedades de tiempo de ejecución en Managed Service for Apache Flink.

  5. En Instantáneas, seleccione Desactivar. Esto facilitará la actualización de la aplicación sin cargar datos de estado de la aplicación no válidos.

  6. En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.

  7. Para el CloudWatch registro, active la casilla Activar.

  8. En la sección Nube privada virtual (VPC), elija la VPC que desea asociar a la aplicación. Elija las subredes y el grupo de seguridad asociados a la VPC que desee que utilice la aplicación para acceder a los recursos de la VPC.

  9. Elija Actualizar.

nota

Si decide habilitar el CloudWatch registro, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros automáticamente. Los nombres de estos recursos son los siguientes:

  • Grupo de registro: /aws/kinesis-analytics/MyApplication

  • Flujo de registro: kinesis-analytics-log-stream

Este flujo de registro se utiliza para supervisar la aplicación.

Ejecución de la aplicación

Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.

Pruebe la aplicación

En esta sección, se escriben los registros en el tema de origen. La aplicación lee los registros del tema de origen y los escribe en el tema de destino. Para comprobar que la aplicación funciona, escriba los registros en el tema de origen y lea los registros del tema de destino.

Para escribir y leer registros de los temas, siga los pasos del Paso 6: producir y consumir datos del tutorial Cómo empezar a utilizar Amazon MSK.

Para leer el tema de destino, utilice el nombre del tema de destino en lugar del tema de origen en la segunda conexión al clúster:

bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerString --consumer.config client.properties --topic AWS KafkaTutorialTopicDestination --from-beginning

Si no aparece ningún registro en el tema de destino, consulte la sección No se puede acceder a los recursos de un VPC del tema Solucione los problemas del servicio gestionado para Apache Flink.

Ejemplos de Python

En los siguientes ejemplos se muestra cómo crear aplicaciones usando Python mediante la API de Tabla de Apache Flink.

Ejemplo: Crear una ventana giratoria en Python

En este ejercicio, creará una aplicación de Python Managed Service para Apache Flink que agrega datos mediante una ventana de salto de tamaño constante.

nota

Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Cómo empezar a usar Python en Managed Service for Apache Flink.

Crear recursos dependientes

Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, debe crear los siguientes recursos dependientes:

  • Dos flujos de datos de Kinesis (ExampleInputStream y ExampleOutputStream)

  • Un bucket de Amazon S3 para almacenar el código de la aplicación (ka-app-code-<username>)

Puede crear los flujos de Kinesis y el bucket de Amazon S3 usando la consola. Si desea obtener instrucciones para crear estos recursos, consulte los siguientes temas:

  • Creación y actualización de flujos de datos en la Guía para desarrolladores de Amazon Kinesis Data Streams. Asigne un nombre a sus flujos de datos ExampleInputStream y ExampleOutputStream.

  • ¿Cómo se puede crear un bucket de S3? en la guía de usuario de Amazon Simple Storage Service. Asigne al bucket de Amazon S3 un nombre único globalmente añadiendo su nombre de inicio de sesión, por ejemplo, ka-app-code-<username>.

Escriba registros de muestra en el flujo de entrada

En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.

nota

Esta sección requiere AWS SDK for Python (Boto).

nota

El script de Python en esta sección usa AWS CLI. Debe configurarlas AWS CLI para usar las credenciales de su cuenta y su región predeterminada. Para configurar la suya AWS CLI, introduzca lo siguiente:

aws configure
  1. Cree un archivo denominado stock.py con el siguiente contenido:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  2. Ejecute el script stock.py:

    $ python stock.py

    Mantenga el script en ejecución mientras completa el resto del tutorial.

Descargue y examine el código de la aplicación

El código de la aplicación Python para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:

  1. Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git.

  2. Clone el repositorio remoto con el siguiente comando:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Vaya al directorio amazon-kinesis-data-analytics-java-examples/python/TumblingWindow.

El código de la aplicación se encuentra en el archivo tumbling-windows.py. Tenga en cuenta lo siguiente en relación con el código de la aplicación:

  • La aplicación utiliza un origen de tabla de Kinesis para leer del flujo de origen. El siguiente fragmento llama a la función create_table para crear el origen de la tabla de Kinesis:

    table_env.execute_sql( create_input_table(input_table_name, input_stream, input_region, stream_initpos) )

    La función create_table utiliza un comando SQL para crear una tabla respaldada por el origen de streaming:

    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)
  • La aplicación utiliza el operador Tumble para agregar registros dentro de una ventana de saltos de tamaño constante específica y devolver los registros agregados como un objeto de tabla:

    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")
  • La aplicación utiliza el conector Kinesis Flink, del flink-sql-connector-kinesis-1.15.2.jar.

Comprima y cargue el código Python de streaming de Apache Flink

En esta sección, cargará su código de aplicación en el bucket de Amazon S3 que creó en la sección Crear recursos dependientes.

  1. Utilice la aplicación de compresión que prefiera para comprimir los archivos tumbling-windows.py y flink-sql-connector-kinesis-1.15.2.jar. Dé nombre al archivo myapp.zip.

  2. En la consola de Amazon S3, elija el <username>bucket ka-app-code- y elija Upload.

  3. En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo myapp.zip que creó en el paso anterior.

  4. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.

El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.

Cree y ejecute la aplicación Managed Service for Apache Flink

Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.

Creación de la aplicación
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.

  3. En la página Managed Service para Apache Flink: crear aplicación, proporcione los detalles de la aplicación de la siguiente manera:

    • En Nombre de la aplicación, escriba MyApplication.

    • En Tiempo de ejecución, escriba Apache Flink.

      nota

      Managed Service para Apache Flink utiliza la versión 1.15.2 de Apache Flink.

    • Deje el menú desplegable de versión como Apache Flink versión 1.15.2 (versión recomendada).

  4. Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM. kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:

  • Política: kinesis-analytics-service-MyApplication-us-west-2

  • Rol: kinesisanalytics-MyApplication-us-west-2

Configure la aplicación
  1. En la MyApplicationpágina, elija Configurar.

  2. En la página Configurar aplicación, proporcione la Ubicación del código:

    • Para el bucket de Amazon S3, introduzca ka-app-code-<username>.

    • En Ruta al objeto de Amazon S3, introduzca myapp.zip.

  3. En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM kinesis-analytics-MyApplication-us-west-2.

  4. En Propiedades, elija Añadir grupo.

  5. Introduzca lo siguiente:

    ID de grupo Clave Valor
    consumer.config.0 input.stream.name ExampleInputStream
    consumer.config.0 aws.region us-west-2
    consumer.config.0 scan.stream.initpos LATEST

    Seleccione Guardar.

  6. En Propiedades, elija Añadir grupo nuevamente.

  7. Introduzca lo siguiente:

    ID de grupo Clave Valor
    producer.config.0 output.stream.name ExampleOutputStream
    producer.config.0 aws.region us-west-2
    producer.config.0 shard.count 1
  8. En Propiedades, elija Añadir grupo nuevamente. En Nombre de grupo, introduzca kinesis.analytics.flink.run.options. Este grupo de propiedades especiales le indica a su aplicación dónde encontrar sus recursos de código. Para obtener más información, consulte Especifique sus archivos de código.

  9. Introduzca lo siguiente:

    ID de grupo Clave Valor
    kinesis.analytics.flink.run.options python tumbling-windows.py
    kinesis.analytics.flink.run.options jarfile flink-sql-connector-kinesis-1.15.2.jar
  10. En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.

  11. Para el CloudWatch registro, active la casilla Activar.

  12. Elija Actualizar.

nota

Si decide habilitar el CloudWatch registro, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros automáticamente. Los nombres de estos recursos son los siguientes:

  • Grupo de registro: /aws/kinesis-analytics/MyApplication

  • Flujo de registro: kinesis-analytics-log-stream

Este flujo de registro se utiliza para supervisar la aplicación. No es el mismo flujo de registro que utiliza la aplicación para enviar los resultados.

Edite la política de IAM

Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Elija Políticas. Elija la política kinesis-analytics-service-MyApplication-us-west-2 que la consola creó en su nombre en la sección anterior.

  3. En la página Resumen, elija Editar política. Seleccione la pestaña JSON.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (012345678901) por el ID de su cuenta.

    { "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" } ] }
Ejecución de la aplicación

Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.

Puede comprobar las métricas del servicio gestionado de Apache Flink en la CloudWatch consola para comprobar que la aplicación funciona.

Limpie los recursos AWS

Esta sección incluye procedimientos para limpiar los AWS recursos creados en el tutorial Tumbling Window.

Elimine su aplicación Managed Service for Apache Flink
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. en el panel Servicio gestionado para Apache Flink, elija. MyApplication

  3. En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.

Elimine sus transmisiones de datos de Kinesis
  1. Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis.

  2. En el panel Kinesis Data Streams, ExampleInputStreamelija.

  3. En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.

  4. En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.

Elimine el objeto y el bucket de Amazon S3
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija el cubo ka-app-code -. <username>

  3. Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.

Elimine sus recursos de IAM
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En la barra de navegación, seleccione Políticas.

  3. En el control de filtros, introduzca kinesis.

  4. Elija la política kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleccione Acciones de política y, a continuación, Eliminar.

  6. En la barra de navegación, seleccione Roles.

  7. Elija el rol kinesis-analytics- MyApplication -us-west-2.

  8. Elija Eliminar rol y, a continuación, confirme la eliminación.

CloudWatch Elimine sus recursos
  1. Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.

  2. En la barra de navegación, elija Registros.

  3. Elija el grupo de registros MyApplication/aws/kinesis-analytics/.

  4. Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.

Ejemplo: creación de una ventana deslizante en Python

nota

Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Cómo empezar a usar Python en Managed Service for Apache Flink.

Crear recursos dependientes

Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, debe crear los siguientes recursos dependientes:

  • Dos flujos de datos de Kinesis (ExampleInputStream y ExampleOutputStream)

  • Un bucket de Amazon S3 para almacenar el código de la aplicación (ka-app-code-<username>)

Puede crear los flujos de Kinesis y el bucket de Amazon S3 usando la consola. Si desea obtener instrucciones para crear estos recursos, consulte los siguientes temas:

  • Creación y actualización de flujos de datos en la Guía para desarrolladores de Amazon Kinesis Data Streams. Asigne un nombre a sus flujos de datos ExampleInputStream y ExampleOutputStream.

  • ¿Cómo se puede crear un bucket de S3? en la guía de usuario de Amazon Simple Storage Service. Asigne al bucket de Amazon S3 un nombre único globalmente añadiendo su nombre de inicio de sesión, por ejemplo, ka-app-code-<username>.

Escriba registros de muestra en el flujo de entrada

En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.

nota

Esta sección requiere AWS SDK for Python (Boto).

nota

El script de Python en esta sección usa AWS CLI. Debe configurarlas AWS CLI para usar las credenciales de su cuenta y su región predeterminada. Para configurar la suya AWS CLI, introduzca lo siguiente:

aws configure
  1. Cree un archivo denominado stock.py con el siguiente contenido:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  2. Ejecute el script stock.py:

    $ python stock.py

    Mantenga el script en ejecución mientras completa el resto del tutorial.

Descargue y examine el código de la aplicación

El código de la aplicación Python para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:

  1. Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git.

  2. Clone el repositorio remoto con el siguiente comando:

    git clone https://github.com/aws-samples/>amazon-kinesis-data-analytics-java-examples
  3. Vaya al directorio amazon-kinesis-data-analytics-java-examples/python/SlidingWindow.

El código de la aplicación se encuentra en el archivo sliding-windows.py. Tenga en cuenta lo siguiente en relación con el código de la aplicación:

  • La aplicación utiliza un origen de tabla de Kinesis para leer del flujo de origen. El siguiente fragmento llama a la función create_input_table para crear el origen de la tabla de Kinesis:

    table_env.execute_sql( create_input_table(input_table_name, input_stream, input_region, stream_initpos) )

    La función create_input_table utiliza un comando SQL para crear una tabla respaldada por el origen de streaming:

    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) }
  • La aplicación utiliza el operador Slide para agregar registros dentro de una ventana deslizante específica y devolver los registros agregados como un objeto de tabla:

    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") )
  • La aplicación utiliza el conector Kinesis Flink, del archivo -1.15.2.jar. flink-sql-connector-kinesis

Comprima y cargue el código Python de streaming de Apache Flink

En esta sección, cargará su código de aplicación en el bucket de Amazon S3 que creó en la sección Crear recursos dependientes.

En esta sección, se describe cómo empaquetar la aplicación de Python.

  1. Utilice la aplicación de compresión que prefiera para comprimir los archivos sliding-windows.py y flink-sql-connector-kinesis-1.15.2.jar. Dé nombre al archivo myapp.zip.

  2. En la consola de Amazon S3, elija el <username>bucket ka-app-code- y elija Upload.

  3. En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo myapp.zip que creó en el paso anterior.

  4. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.

El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.

Cree y ejecute la aplicación Managed Service for Apache Flink

Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.

Creación de la aplicación
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.

  3. En la página Managed Service para Apache Flink: crear aplicación, proporcione los detalles de la aplicación de la siguiente manera:

    • En Nombre de la aplicación, escriba MyApplication.

    • En Tiempo de ejecución, escriba Apache Flink.

      nota

      Managed Service para Apache Flink utiliza la versión 1.15.2 de Apache Flink.

    • Deje el menú desplegable de versión como Apache Flink versión 1.15.2 (versión recomendada).

  4. Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM. kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:

  • Política: kinesis-analytics-service-MyApplication-us-west-2

  • Rol: kinesisanalytics-MyApplication-us-west-2

Configure la aplicación
  1. En la MyApplicationpágina, elija Configurar.

  2. En la página Configurar aplicación, proporcione la Ubicación del código:

    • Para el bucket de Amazon S3, introduzca ka-app-code-<username>.

    • En Ruta al objeto de Amazon S3, introduzca myapp.zip.

  3. En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM kinesis-analytics-MyApplication-us-west-2.

  4. En Propiedades, elija Añadir grupo.

  5. Escriba las siguientes propiedades y valores de la aplicación:

    ID de grupo Clave Valor
    consumer.config.0 input.stream.name ExampleInputStream
    consumer.config.0 aws.region us-west-2
    consumer.config.0 scan.stream.initpos LATEST

    Seleccione Guardar.

  6. En Propiedades, elija Añadir grupo nuevamente.

  7. Escriba las siguientes propiedades y valores de la aplicación:

    ID de grupo Clave Valor
    producer.config.0 output.stream.name ExampleOutputStream
    producer.config.0 aws.region us-west-2
    producer.config.0 shard.count 1
  8. En Propiedades, elija Añadir grupo nuevamente. En Nombre de grupo, introduzca kinesis.analytics.flink.run.options. Este grupo de propiedades especiales le indica a su aplicación dónde encontrar sus recursos de código. Para obtener más información, consulte Especifique sus archivos de código.

  9. Escriba las siguientes propiedades y valores de la aplicación:

    ID de grupo Clave Valor
    kinesis.analytics.flink.run.options python sliding-windows.py
    kinesis.analytics.flink.run.options jarfile flink-sql-connector-kinesis_1.15.2.jar
  10. En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.

  11. Para el CloudWatch registro, active la casilla Activar.

  12. Elija Actualizar.

nota

Si decide habilitar el CloudWatch registro, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros automáticamente. Los nombres de estos recursos son los siguientes:

  • Grupo de registro: /aws/kinesis-analytics/MyApplication

  • Flujo de registro: kinesis-analytics-log-stream

Este flujo de registro se utiliza para supervisar la aplicación. No es el mismo flujo de registro que utiliza la aplicación para enviar los resultados.

Edite la política de IAM

Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Elija Políticas. Elija la política kinesis-analytics-service-MyApplication-us-west-2 que la consola creó en su nombre en la sección anterior.

  3. En la página Resumen, elija Editar política. Seleccione la pestaña JSON.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (012345678901) por el ID de su cuenta.

    { "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" } ] }
Ejecución de la aplicación

Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.

Puede comprobar las métricas del servicio gestionado de Apache Flink en la CloudWatch consola para comprobar que la aplicación funciona.

Limpie los recursos AWS

Esta sección incluye procedimientos para limpiar los AWS recursos creados en el tutorial sobre ventanas corredizas.

Elimine su aplicación Managed Service for Apache Flink
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. en el panel Servicio gestionado para Apache Flink, elija. MyApplication

  3. En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.

Elimine sus transmisiones de datos de Kinesis
  1. Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis.

  2. En el panel Kinesis Data Streams, ExampleInputStreamelija.

  3. En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.

  4. En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.

Elimine el objeto y el bucket de Amazon S3
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija el cubo ka-app-code -. <username>

  3. Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.

Elimine sus recursos de IAM
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En la barra de navegación, seleccione Políticas.

  3. En el control de filtros, introduzca kinesis.

  4. Elija la política kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleccione Acciones de política y, a continuación, Eliminar.

  6. En la barra de navegación, seleccione Roles.

  7. Elija el rol kinesis-analytics- MyApplication -us-west-2.

  8. Elija Eliminar rol y, a continuación, confirme la eliminación.

CloudWatch Elimine sus recursos
  1. Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.

  2. En la barra de navegación, elija Registros.

  3. Elija el grupo de registros MyApplication/aws/kinesis-analytics/.

  4. Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.

Ejemplo: enviar datos de streaming a Amazon S3 en Python

En este ejercicio, creará una aplicación de Python Managed Service para Apache Flink que transmita datos a un receptor de Amazon Simple Storage Service.

nota

Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Cómo empezar a usar Python en Managed Service for Apache Flink.

Crear recursos dependientes

Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, debe crear los siguientes recursos dependientes:

  • Un flujo de datos de Kinesis (ExampleInputStream)

  • Un bucket de Amazon S3 para almacenar el código y los resultados de la aplicación (ka-app-code-<username>)

nota

Managed Service para Apache Flink no puede escribir datos en Amazon S3 con el cifrado del lado del servidor activado en Managed Service para Apache Flink.

Puede crear el flujo de Kinesis y el bucket de Amazon S3 usando la consola. Si desea obtener instrucciones para crear estos recursos, consulte los siguientes temas:

Escriba registros de muestra en el flujo de entrada

En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.

nota

Esta sección requiere AWS SDK for Python (Boto).

nota

El script de Python en esta sección usa AWS CLI. Debe configurarlas AWS CLI para usar las credenciales de su cuenta y su región predeterminada. Para configurar la suya AWS CLI, introduzca lo siguiente:

aws configure
  1. Cree un archivo denominado stock.py con el siguiente contenido:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  2. Ejecute el script stock.py:

    $ python stock.py

    Mantenga el script en ejecución mientras completa el resto del tutorial.

Descargue y examine el código de la aplicación

El código de la aplicación Python para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:

  1. Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git.

  2. Clone el repositorio remoto con el siguiente comando:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Vaya al directorio amazon-kinesis-data-analytics-java-examples/python/S3Sink.

El código de la aplicación se encuentra en el archivo streaming-file-sink.py. Tenga en cuenta lo siguiente en relación con el código de la aplicación:

  • La aplicación utiliza un origen de tabla de Kinesis para leer del flujo de origen. El siguiente fragmento llama a la función create_source_table para crear el origen de la tabla de Kinesis:

    table_env.execute_sql( create_source_table(input_table_name, input_stream, input_region, stream_initpos) )

    La función create_source_table utiliza un comando SQL para crear una tabla respaldada por el origen de streaming

    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'))
  • La aplicación utiliza el conector filesystem para enviar registros a un bucket de 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)
  • La aplicación utiliza el conector Kinesis Flink, del archivo -1.15.2.jar. flink-sql-connector-kinesis

Comprima y cargue el código Python de streaming de Apache Flink

En esta sección, cargará su código de aplicación en el bucket de Amazon S3 que creó en la sección Crear recursos dependientes.

  1. Utilice la aplicación de compresión que prefiera para comprimir los archivos -1.15.2.jar streaming-file-sink.py y los archivos flink-sql-connector-kinesis-1.15.2.jar. Dé nombre al archivo myapp.zip.

  2. En la consola de Amazon S3, elija el <username>bucket ka-app-code- y elija Upload.

  3. En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo myapp.zip que creó en el paso anterior.

  4. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.

El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.

Cree y ejecute la aplicación Managed Service for Apache Flink

Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.

Creación de la aplicación
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.

  3. En la página Managed Service para Apache Flink: crear aplicación, proporcione los detalles de la aplicación de la siguiente manera:

    • En Nombre de la aplicación, escriba MyApplication.

    • En Tiempo de ejecución, escriba Apache Flink.

      nota

      Managed Service para Apache Flink utiliza la versión 1.15.2 de Apache Flink.

    • Deje el menú desplegable de versión como Apache Flink versión 1.15.2 (versión recomendada).

  4. Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM. kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:

  • Política: kinesis-analytics-service-MyApplication-us-west-2

  • Rol: kinesisanalytics-MyApplication-us-west-2

Configure la aplicación
  1. En la MyApplicationpágina, elija Configurar.

  2. En la página Configurar aplicación, proporcione la Ubicación del código:

    • Para el bucket de Amazon S3, introduzca ka-app-code-<username>.

    • En Ruta al objeto de Amazon S3, introduzca myapp.zip.

  3. En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM kinesis-analytics-MyApplication-us-west-2.

  4. En Propiedades, elija Añadir grupo.

  5. Escriba las siguientes propiedades y valores de la aplicación:

    ID de grupo Clave Valor
    consumer.config.0 input.stream.name ExampleInputStream
    consumer.config.0 aws.region us-west-2
    consumer.config.0 scan.stream.initpos LATEST

    Seleccione Guardar.

  6. En Propiedades, elija Añadir grupo nuevamente. En Nombre de grupo, introduzca kinesis.analytics.flink.run.options. Este grupo de propiedades especiales le indica a su aplicación dónde encontrar sus recursos de código. Para obtener más información, consulte Especifique sus archivos de código.

  7. Escriba las siguientes propiedades y valores de la aplicación:

    ID de grupo Clave Valor
    kinesis.analytics.flink.run.options python streaming-file-sink.py
    kinesis.analytics.flink.run.options jarfile S3Sink/lib/flink-sql-connector-kinesis-1.15.2.jar
  8. En Propiedades, elija Añadir grupo nuevamente. En Nombre de grupo, introduzca sink.config.0. Este grupo de propiedades especiales le indica a su aplicación dónde encontrar sus recursos de código. Para obtener más información, consulte Especifique sus archivos de código.

  9. Introduzca las siguientes propiedades y valores de la aplicación: (sustituya bucket-name por el nombre real de su bucket de Amazon S3).

    ID de grupo Clave Valor
    sink.config.0 output.bucket.name bucket-name
  10. En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.

  11. Para el CloudWatch registro, active la casilla Activar.

  12. Elija Actualizar.

nota

Si decide habilitar el CloudWatch registro, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros automáticamente. Los nombres de estos recursos son los siguientes:

  • Grupo de registro: /aws/kinesis-analytics/MyApplication

  • Flujo de registro: kinesis-analytics-log-stream

Este flujo de registro se utiliza para supervisar la aplicación. No es el mismo flujo de registro que utiliza la aplicación para enviar los resultados.

Edite la política de IAM

Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Elija Políticas. Elija la política kinesis-analytics-service-MyApplication-us-west-2 que la consola creó en su nombre en la sección anterior.

  3. En la página Resumen, elija Editar política. Seleccione la pestaña JSON.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (012345678901) por el ID de su cuenta.

    { "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>/*" ] } ] }
Ejecución de la aplicación

Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.

Puede comprobar las métricas del servicio gestionado de Apache Flink en la CloudWatch consola para comprobar que la aplicación funciona.

Limpie los recursos AWS

Esta sección incluye procedimientos para limpiar los AWS recursos creados en el tutorial sobre ventanas corredizas.

Elimine su aplicación Managed Service for Apache Flink
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. en el panel Servicio gestionado para Apache Flink, elija. MyApplication

  3. En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.

Elimine la transmisión de datos de Kinesis
  1. Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis.

  2. En el panel Kinesis Data Streams, ExampleInputStreamelija.

  3. En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.

Elimine los objetos y el bucket de Amazon S3
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija el cubo ka-app-code -. <username>

  3. Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.

Elimine sus recursos de IAM
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En la barra de navegación, seleccione Políticas.

  3. En el control de filtros, introduzca kinesis.

  4. Elija la política kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleccione Acciones de política y, a continuación, Eliminar.

  6. En la barra de navegación, seleccione Roles.

  7. Elija el rol kinesis-analytics- MyApplication -us-west-2.

  8. Elija Eliminar rol y, a continuación, confirme la eliminación.

CloudWatch Elimine sus recursos
  1. Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.

  2. En la barra de navegación, elija Registros.

  3. Elija el grupo de registros MyApplication/aws/kinesis-analytics/.

  4. Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.

Ejemplos de Scala

En los siguientes ejemplos se muestra cómo crear aplicaciones usando Scala con Apache Flink.

Ejemplo: Crear una ventana abatible en Scala

nota

A partir de la versión 1.15, Flink es gratuito para Scala. Las aplicaciones ahora pueden usar la API de Java desde cualquier versión de Scala. Flink sigue utilizando Scala internamente en algunos componentes clave, pero no lo expone al cargador de clases del código de usuario. Por eso, los usuarios deben agregar las dependencias de Scala a sus archivos jar.

Para obtener más información sobre los cambios de Scala en Flink 1.15, consulte Scala Free in One Fifteen.

En este ejercicio, creará una aplicación de streaming sencilla que utiliza Scala 3.2.0 y la API Java de Flink. DataStream La aplicación lee los datos de la transmisión de Kinesis, los agrega mediante ventanas deslizantes y escribe los resultados para generar la transmisión de Kinesis.

nota

Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Introducción (Scala).

Descargue y examine el código de la aplicación

El código de la aplicación Python para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:

  1. Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git.

  2. Clone el repositorio remoto con el siguiente comando:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Vaya al directorio amazon-kinesis-data-analytics-java-examples/scala/TumblingWindow.

Tenga en cuenta lo siguiente en relación con el código de la aplicación:

  • Un archivo build.sbt contiene información sobre la configuración y las dependencias de la aplicación, incluidas las bibliotecas de Managed Service para Apache Flink.

  • El archivo BasicStreamingJob.scala contiene el método principal que define la funcionalidad de la aplicación.

  • La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de 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) }

    La aplicación también utiliza un receptor de Kinesis para escribir en el flujo de resultado. El siguiente fragmento crea el receptor de 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 }
  • La aplicación utiliza el operador ventana para encontrar el recuento de valores de cada símbolo de cotización en una ventana de salto de tamaño constante de 5 segundos. El siguiente código crea el operador y envía los datos agregados a un nuevo receptor de flujo de datos de Kinesis:

    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)
  • La aplicación crea conectores de origen y receptor para acceder a recursos externos mediante un StreamExecutionEnvironment objeto.

  • La aplicación crea conectores de origen y recepción mediante las propiedades dinámicas de la aplicación. Las propiedades de tiempo de ejecución de la aplicación se leen para configurar los conectores. Para obtener más información sobre las propiedades de tiempo de ejecución, consulte Runtime Properties.

Compilación y carga del código de la aplicación

En esta sección, compilará y cargará el código de su aplicación a un bucket de Amazon S3.

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

Utilice la herramienta de creación SBT para crear el código Scala para la aplicación. Para instalar SBT, consulte Install sbt with cs setup. También deberá instalar el Kit de desarrollo de Java (JDK). Consulte Prerequisites for Completing the Exercises.

  1. Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Puede compilar y empaquetar su código con SBT:

    sbt assembly
  2. Si la aplicación se compila correctamente, se crea el siguiente archivo:

    target/scala-3.2.0/tumbling-window-scala-1.0.jar
Carga del código de Scala de streaming de Apache Flink

En esta sección, creará un bucket de Amazon S3 y cargará el código de la aplicación.

  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija Crear bucket

  3. Escriba ka-app-code-<username> en el campo Nombre del bucket. Añada un sufijo al nombre del bucket, como su nombre de usuario, para que sea único a nivel global. Elija Siguiente.

  4. En el paso Configurar opciones, deje los ajustes tal y como están y elija Siguiente.

  5. En el paso Establecer permisos, deje los ajustes tal y como están y elija Siguiente.

  6. Elija Crear bucket.

  7. Abra el bucket ka-app-code-<username> y elija Cargar.

  8. En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo tumbling-window-scala-1.0.jar que creó en el paso anterior.

  9. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.

El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.

Cree y ejecute la aplicación (consola)

Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.

Creación de la aplicación
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.

  3. En la página Managed Service para Apache Flink: crear aplicación, proporcione los detalles de la aplicación de la siguiente manera:

    • En Nombre de la aplicación, escriba MyApplication.

    • En Descripción, escriba My Scala test app.

    • En Tiempo de ejecución, escriba Apache Flink.

    • Deje la versión como Apache Flink, versión 1.15.2 (versión recomendada).

  4. Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM. kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:

  • Política: kinesis-analytics-service-MyApplication-us-west-2

  • Rol: kinesisanalytics-MyApplication-us-west-2

Configure la aplicación

Utilice el siguiente procedimiento para configurar la aplicación.

Cómo configurar la aplicación
  1. En la MyApplicationpágina, elija Configurar.

  2. En la página Configurar aplicación, proporcione la Ubicación del código:

    • Para el bucket de Amazon S3, introduzca ka-app-code-<username>.

    • En Ruta al objeto de Amazon S3, introduzca tumbling-window-scala-1.0.jar.

  3. En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM kinesis-analytics-MyApplication-us-west-2.

  4. En Propiedades, elija Añadir grupo.

  5. Introduzca lo siguiente:

    ID de grupo Clave Valor
    ConsumerConfigProperties input.stream.name ExampleInputStream
    ConsumerConfigProperties aws.region us-west-2
    ConsumerConfigProperties flink.stream.initpos LATEST

    Seleccione Guardar.

  6. En Propiedades, elija Añadir grupo nuevamente.

  7. Introduzca lo siguiente:

    ID de grupo Clave Valor
    ProducerConfigProperties output.stream.name ExampleOutputStream
    ProducerConfigProperties aws.region us-west-2
  8. En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.

  9. Para el CloudWatch registro, active la casilla Activar.

  10. Elija Actualizar.

nota

Cuando eliges habilitar el CloudWatch registro de Amazon, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros para ti. Los nombres de estos recursos son los siguientes:

  • Grupo de registro: /aws/kinesis-analytics/MyApplication

  • Flujo de registro: kinesis-analytics-log-stream

Edite la política de IAM

Edite la política de IAM para añadir los permisos para acceder al bucket de Amazon S3.

Cómo editar la política de IAM para añadir los permisos para el bucket de S3
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Elija Políticas. Elija la política kinesis-analytics-service-MyApplication-us-west-2 que la consola creó en su nombre en la sección anterior.

  3. En la página Resumen, elija Editar política. Seleccione la pestaña JSON.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (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/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" } ] }
Ejecución de la aplicación

Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.

Detenga la aplicación

Para detener la aplicación, en la MyApplicationpágina, seleccione Detener. Confirme la acción.

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. El rol de ejecución del servicio MF-stream-rw-role debe adaptarse al rol específico del cliente.

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

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 un rol 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. El ServiceExecutionRole debe incluir el rol de usuario de IAM que creó en la sección anterior.

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

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": "tumbling_window", "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": "tumbling_window" }
  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.

Añada 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": "tumbling_window", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } } }
  2. 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 el paquete de códigos anterior de su bucket de Amazon S3, cargue la nueva versión y llameUpdateApplication, especificando el mismo nombre de bucket y objeto 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": "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" } } } } }
Limpie AWS los recursos

Esta sección incluye procedimientos para limpiar los AWS recursos creados en el tutorial de Tumbling Window.

Elimine su aplicación Managed Service for Apache Flink
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. en el panel Servicio gestionado para Apache Flink, elija. MyApplication

  3. En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.

Elimine sus transmisiones de datos de Kinesis
  1. Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis.

  2. En el panel Kinesis Data Streams, ExampleInputStreamelija.

  3. En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.

  4. En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.

Elimine el objeto y el bucket de Amazon S3
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija el cubo ka-app-code -. <username>

  3. Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.

Elimine sus recursos de IAM
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En la barra de navegación, seleccione Políticas.

  3. En el control de filtros, introduzca kinesis.

  4. Elija la política kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleccione Acciones de política y, a continuación, Eliminar.

  6. En la barra de navegación, seleccione Roles.

  7. Elija el rol kinesis-analytics- MyApplication -us-west-2.

  8. Elija Eliminar rol y, a continuación, confirme la eliminación.

CloudWatch Elimine sus recursos
  1. Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.

  2. En la barra de navegación, elija Registros.

  3. Elija el grupo de registros MyApplication/aws/kinesis-analytics/.

  4. Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.

Ejemplo: crear una ventana corredera en Scala

nota

A partir de la versión 1.15, Flink es gratuito para Scala. Las aplicaciones ahora pueden usar la API de Java desde cualquier versión de Scala. Flink sigue utilizando Scala internamente en algunos componentes clave, pero no lo expone al cargador de clases del código de usuario. Por eso, los usuarios deben agregar las dependencias de Scala a sus archivos jar.

Para obtener más información sobre los cambios de Scala en Flink 1.15, consulte Scala Free in One Fifteen.

En este ejercicio, creará una aplicación de streaming sencilla que utiliza Scala 3.2.0 y la API Java de Flink. DataStream La aplicación lee los datos de la transmisión de Kinesis, los agrega mediante ventanas deslizantes y escribe los resultados para generar la transmisión de Kinesis.

nota

Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Introducción (Scala).

Descargue y examine el código de la aplicación

El código de la aplicación Python para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:

  1. Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git.

  2. Clone el repositorio remoto con el siguiente comando:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Vaya al directorio amazon-kinesis-data-analytics-java-examples/scala/SlidingWindow.

Tenga en cuenta lo siguiente en relación con el código de la aplicación:

  • Un archivo build.sbt contiene información sobre la configuración y las dependencias de la aplicación, incluidas las bibliotecas de Managed Service para Apache Flink.

  • El archivo BasicStreamingJob.scala contiene el método principal que define la funcionalidad de la aplicación.

  • La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de 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) }

    La aplicación también utiliza un receptor de Kinesis para escribir en el flujo de resultado. El siguiente fragmento crea el receptor de 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 }
  • La aplicación utiliza el operador ventana para encontrar el conteo de valores para cada símbolo de cotización en una ventana de 10 segundos que se desliza 5 segundos. El siguiente código crea el operador y envía los datos agregados a un nuevo receptor de flujo de datos de Kinesis:

    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)
  • La aplicación crea conectores de origen y receptor para acceder a recursos externos mediante un StreamExecutionEnvironment objeto.

  • La aplicación crea conectores de origen y recepción mediante las propiedades dinámicas de la aplicación. Las propiedades de tiempo de ejecución de la aplicación se leen para configurar los conectores. Para obtener más información sobre las propiedades de tiempo de ejecución, consulte Runtime Properties.

Compilación y carga del código de la aplicación

En esta sección, compilará y cargará el código de su aplicación a un bucket de Amazon S3.

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

Utilice la herramienta de creación SBT para crear el código Scala para la aplicación. Para instalar SBT, consulte Install sbt with cs setup. También deberá instalar el Kit de desarrollo de Java (JDK). Consulte Prerequisites for Completing the Exercises.

  1. Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Puede compilar y empaquetar su código con SBT:

    sbt assembly
  2. Si la aplicación se compila correctamente, se crea el siguiente archivo:

    target/scala-3.2.0/sliding-window-scala-1.0.jar
Carga del código de Scala de streaming de Apache Flink

En esta sección, creará un bucket de Amazon S3 y cargará el código de la aplicación.

  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija Crear bucket

  3. Escriba ka-app-code-<username> en el campo Nombre del bucket. Añada un sufijo al nombre del bucket, como su nombre de usuario, para que sea único a nivel global. Elija Siguiente.

  4. En el paso Configurar opciones, deje los ajustes tal y como están y elija Siguiente.

  5. En el paso Establecer permisos, deje los ajustes tal y como están y elija Siguiente.

  6. Elija Crear bucket.

  7. Abra el bucket ka-app-code-<username> y elija Cargar.

  8. En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo sliding-window-scala-1.0.jar que creó en el paso anterior.

  9. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.

El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.

Cree y ejecute la aplicación (consola)

Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.

Creación de la aplicación
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.

  3. En la página Managed Service para Apache Flink: crear aplicación, proporcione los detalles de la aplicación de la siguiente manera:

    • En Nombre de la aplicación, escriba MyApplication.

    • En Descripción, escriba My Scala test app.

    • En Tiempo de ejecución, escriba Apache Flink.

    • Deje la versión como Apache Flink, versión 1.15.2 (versión recomendada).

  4. Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM. kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:

  • Política: kinesis-analytics-service-MyApplication-us-west-2

  • Rol: kinesisanalytics-MyApplication-us-west-2

Configure la aplicación

Utilice el siguiente procedimiento para configurar la aplicación.

Cómo configurar la aplicación
  1. En la MyApplicationpágina, elija Configurar.

  2. En la página Configurar aplicación, proporcione la Ubicación del código:

    • Para el bucket de Amazon S3, introduzca ka-app-code-<username>.

    • En Ruta al objeto de Amazon S3, introduzca sliding-window-scala-1.0.jar..

  3. En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM kinesis-analytics-MyApplication-us-west-2.

  4. En Propiedades, elija Añadir grupo.

  5. Introduzca lo siguiente:

    ID de grupo Clave Valor
    ConsumerConfigProperties input.stream.name ExampleInputStream
    ConsumerConfigProperties aws.region us-west-2
    ConsumerConfigProperties flink.stream.initpos LATEST

    Seleccione Guardar.

  6. En Propiedades, elija Añadir grupo nuevamente.

  7. Introduzca lo siguiente:

    ID de grupo Clave Valor
    ProducerConfigProperties output.stream.name ExampleOutputStream
    ProducerConfigProperties aws.region us-west-2
  8. En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.

  9. Para el CloudWatch registro, active la casilla Activar.

  10. Elija Actualizar.

nota

Cuando eliges habilitar el CloudWatch registro de Amazon, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros para ti. Los nombres de estos recursos son los siguientes:

  • Grupo de registro: /aws/kinesis-analytics/MyApplication

  • Flujo de registro: kinesis-analytics-log-stream

Edite la política de IAM

Edite la política de IAM para añadir los permisos para acceder al bucket de Amazon S3.

Cómo editar la política de IAM para añadir los permisos para el bucket de S3
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Elija Políticas. Elija la política kinesis-analytics-service-MyApplication-us-west-2 que la consola creó en su nombre en la sección anterior.

  3. En la página Resumen, elija Editar política. Seleccione la pestaña JSON.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (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/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" } ] }
Ejecución de la aplicación

Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.

Detenga la aplicación

Para detener la aplicación, en la MyApplicationpágina, seleccione Detener. Confirme la acción.

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.

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

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 un rol 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": "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" } ] }

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": "sliding_window", "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": "sliding_window" }
  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.

Añada 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": "sliding_window", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } } }
  2. 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 el paquete de códigos anterior de su bucket de Amazon S3, cargue la nueva versión y llameUpdateApplication, especificando el mismo nombre de bucket y objeto 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": "sliding_window", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username", "FileKeyUpdate": "-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU" } } } } }
Limpie AWS los recursos

Esta sección incluye procedimientos para limpiar AWS los recursos creados en el tutorial sobre ventanas deslizantes.

Elimine su aplicación Managed Service for Apache Flink
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. en el panel Servicio gestionado para Apache Flink, elija. MyApplication

  3. En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.

Elimine sus transmisiones de datos de Kinesis
  1. Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis.

  2. En el panel Kinesis Data Streams, ExampleInputStreamelija.

  3. En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.

  4. En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.

Elimine el objeto y el bucket de Amazon S3
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija el cubo ka-app-code -. <username>

  3. Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.

Elimine sus recursos de IAM
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En la barra de navegación, seleccione Políticas.

  3. En el control de filtros, introduzca kinesis.

  4. Elija la política kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleccione Acciones de política y, a continuación, Eliminar.

  6. En la barra de navegación, seleccione Roles.

  7. Elija el rol kinesis-analytics- MyApplication -us-west-2.

  8. Elija Eliminar rol y, a continuación, confirme la eliminación.

CloudWatch Elimine sus recursos
  1. Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.

  2. En la barra de navegación, elija Registros.

  3. Elija el grupo de registros MyApplication/aws/kinesis-analytics/.

  4. Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.

Ejemplo: enviar datos de streaming a Amazon S3 en Scala

nota

A partir de la versión 1.15, Flink es gratuito para Scala. Las aplicaciones ahora pueden usar la API de Java desde cualquier versión de Scala. Flink sigue utilizando Scala internamente en algunos componentes clave, pero no lo expone al cargador de clases del código de usuario. Por eso, los usuarios deben agregar las dependencias de Scala a sus archivos jar.

Para obtener más información sobre los cambios de Scala en Flink 1.15, consulte Scala Free in One Fifteen.

En este ejercicio, creará una aplicación de streaming sencilla que utiliza Scala 3.2.0 y la API Java de Flink. DataStream La aplicación lee los datos de la transmisión de Kinesis, los agrega mediante ventanas deslizantes y escribe los resultados en S3.

nota

Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Introducción (Scala). Solo necesita crear una carpeta adicional data/ en el bucket de Amazon S3 ka-app-code-<username>.

Descargue y examine el código de la aplicación

El código de la aplicación Python para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:

  1. Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git.

  2. Clone el repositorio remoto con el siguiente comando:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Vaya al directorio amazon-kinesis-data-analytics-java-examples/scala/S3Sink.

Tenga en cuenta lo siguiente en relación con el código de la aplicación:

  • Un archivo build.sbt contiene información sobre la configuración y las dependencias de la aplicación, incluidas las bibliotecas de Managed Service para Apache Flink.

  • El archivo BasicStreamingJob.scala contiene el método principal que define la funcionalidad de la aplicación.

  • La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de 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) }

    La aplicación también utiliza un StreamingFileSink para escribir en un bucket de 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() }
  • La aplicación crea conectores de origen y receptor para acceder a recursos externos mediante un StreamExecutionEnvironment objeto.

  • La aplicación crea conectores de origen y recepción mediante las propiedades dinámicas de la aplicación. Las propiedades de tiempo de ejecución de la aplicación se leen para configurar los conectores. Para obtener más información sobre las propiedades de tiempo de ejecución, consulte Runtime Properties.

Compilación y carga del código de la aplicación

En esta sección, compilará y cargará el código de su aplicación a un bucket de Amazon S3.

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

Utilice la herramienta de creación SBT para crear el código Scala para la aplicación. Para instalar SBT, consulte Install sbt with cs setup. También deberá instalar el Kit de desarrollo de Java (JDK). Consulte Prerequisites for Completing the Exercises.

  1. Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Puede compilar y empaquetar su código con SBT:

    sbt assembly
  2. Si la aplicación se compila correctamente, se crea el siguiente archivo:

    target/scala-3.2.0/s3-sink-scala-1.0.jar
Carga del código de Scala de streaming de Apache Flink

En esta sección, creará un bucket de Amazon S3 y cargará el código de la aplicación.

  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija Crear bucket

  3. Escriba ka-app-code-<username> en el campo Nombre del bucket. Añada un sufijo al nombre del bucket, como su nombre de usuario, para que sea único a nivel global. Elija Siguiente.

  4. En el paso Configurar opciones, deje los ajustes tal y como están y elija Siguiente.

  5. En el paso Establecer permisos, deje los ajustes tal y como están y elija Siguiente.

  6. Elija Crear bucket.

  7. Abra el bucket ka-app-code-<username> y elija Cargar.

  8. En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo s3-sink-scala-1.0.jar que creó en el paso anterior.

  9. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.

El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.

Cree y ejecute la aplicación (consola)

Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.

Creación de la aplicación
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.

  3. En la página Managed Service para Apache Flink: crear aplicación, proporcione los detalles de la aplicación de la siguiente manera:

    • En Nombre de la aplicación, escriba MyApplication.

    • En Descripción, escriba My java test app.

    • En Tiempo de ejecución, escriba Apache Flink.

    • Deje la versión como Apache Flink, versión 1.15.2 (versión recomendada).

  4. Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM. kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:

  • Política: kinesis-analytics-service-MyApplication-us-west-2

  • Rol: kinesisanalytics-MyApplication-us-west-2

Configure la aplicación

Utilice el siguiente procedimiento para configurar la aplicación.

Cómo configurar la aplicación
  1. En la MyApplicationpágina, elija Configurar.

  2. En la página Configurar aplicación, proporcione la Ubicación del código:

    • Para el bucket de Amazon S3, introduzca ka-app-code-<username>.

    • En Ruta al objeto de Amazon S3, introduzca s3-sink-scala-1.0.jar.

  3. En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM kinesis-analytics-MyApplication-us-west-2.

  4. En Propiedades, elija Añadir grupo.

  5. Introduzca lo siguiente:

    ID de grupo Clave Valor
    ConsumerConfigProperties input.stream.name ExampleInputStream
    ConsumerConfigProperties aws.region us-west-2
    ConsumerConfigProperties flink.stream.initpos LATEST

    Seleccione Guardar.

  6. En Propiedades, elija Añadir grupo.

  7. Introduzca lo siguiente:

    ID de grupo Clave Valor
    ProducerConfigProperties s3.sink.path s3a://ka-app-code-<user-name>/data
  8. En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.

  9. Para el CloudWatch registro, active la casilla Activar.

  10. Elija Actualizar.

nota

Cuando eliges habilitar el CloudWatch registro de Amazon, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros para ti. Los nombres de estos recursos son los siguientes:

  • Grupo de registro: /aws/kinesis-analytics/MyApplication

  • Flujo de registro: kinesis-analytics-log-stream

Edite la política de IAM

Edite la política de IAM para añadir los permisos para acceder al bucket de Amazon S3.

Cómo editar la política de IAM para añadir los permisos para el bucket de S3
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Elija Políticas. Elija la política kinesis-analytics-service-MyApplication-us-west-2 que la consola creó en su nombre en la sección anterior.

  3. En la página Resumen, elija Editar política. Seleccione la pestaña JSON.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (012345678901) por el ID de su cuenta.

    { "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" } ] }
Ejecución de la aplicación

Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.

Detenga la aplicación

Para detener la aplicación, en la MyApplicationpágina, seleccione Detener. Confirme la acción.

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 un rol 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": "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" } ] }

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": "s3_sink", "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.

Añada 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": "s3_sink", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "s3.sink.path" : "s3a://ka-app-code-<username>/data" } } ] } } }
  2. 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 el paquete de códigos anterior de su bucket de Amazon S3, cargue la nueva versión y llameUpdateApplication, especificando el mismo nombre de bucket y objeto 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": "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" } } } } }
Limpie AWS los recursos

Esta sección incluye procedimientos para limpiar los AWS recursos creados en el tutorial Tumbling Window.

Elimine su aplicación Managed Service for Apache Flink
  1. Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.

  2. en el panel Servicio gestionado para Apache Flink, elija. MyApplication

  3. En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.

Elimine sus transmisiones de datos de Kinesis
  1. Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis.

  2. En el panel Kinesis Data Streams, ExampleInputStreamelija.

  3. En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.

  4. En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.

Elimine el objeto y el bucket de Amazon S3
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija el cubo ka-app-code -. <username>

  3. Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.

Elimine sus recursos de IAM
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En la barra de navegación, seleccione Políticas.

  3. En el control de filtros, introduzca kinesis.

  4. Elija la política kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleccione Acciones de política y, a continuación, Eliminar.

  6. En la barra de navegación, seleccione Roles.

  7. Elija el rol kinesis-analytics- MyApplication -us-west-2.

  8. Elija Eliminar rol y, a continuación, confirme la eliminación.

CloudWatch Elimine sus recursos
  1. Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.

  2. En la barra de navegación, elija Registros.

  3. Elija el grupo de registros MyApplication/aws/kinesis-analytics/.

  4. Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.