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. Ahora tenemos previsto dejar de dar soporte a estas versiones en Amazon Managed Service para Apache Flink. A partir del 5 de noviembre de 2024, no podrá crear nuevas aplicaciones para estas versiones de Flink. En este momento, puede seguir ejecutando las aplicaciones existentes.

En todas las regiones, excepto en las regiones de China y AWS GovCloud (US) Regions, a partir del 5 de febrero de 2025, ya no podrá crear, iniciar ni ejecutar aplicaciones con estas versiones de Apache Flink en Amazon Managed Service for Apache Flink.

Para las regiones de China y AWS GovCloud (US) Regions, a partir del 19 de marzo de 2025, ya no podrá crear, iniciar ni ejecutar aplicaciones con estas versiones de Apache Flink en Amazon Managed Service for Apache Flink.

Puede actualizar sus aplicaciones de forma automática mediante la función de actualización de versiones integrada en 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 compilar el conector con la KPLversión 0.14.0 o superior.

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 la variable de JAVA_HOME entorno apunte a a JDK en lugar de a. 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 Crear una aplicación.

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 Java SDK 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 Crear una aplicación.

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 AWS CLI, AWS SDK, AWS CloudFormation o. 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 el. 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:

  • Propiedades de tiempo de ejecución: puede usar las propiedades de tiempo de ejecución para configurar su aplicación sin tener que volver a compilar el código de la aplicación.

  • Fuente: la aplicación consume datos mediante una fuente. Un conector de origen lee los datos de un flujo de datos de Kinesis, un bucket de Amazon S3, etc. Para obtener más información, consulte Agregue fuentes de datos de streaming.

  • Operadores: la aplicación procesa los datos mediante uno o más operadores. Un operador puede transformar, enriquecer o agregar datos. Para obtener más información, consulte Operadores.

  • Receptor: la aplicación produce datos para fuentes externas mediante el uso de receptores. Un conector receptor escribe datos en una transmisión de datos de Kinesis, una transmisión de Firehose, un bucket de Amazon S3, etc. Para obtener más información, consulte Escriba datos mediante sumideros.

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 suscribirte a una Cuenta de AWS
  1. Abrir https://portal.aws.amazon.com/billing/registro.

  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 un Cuenta de AWS, Usuario raíz de la cuenta de AWSse crea un. 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. En cualquier momento, puede ver la actividad de su cuenta actual y administrarla accediendo a 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. Activa la autenticación multifactorial (MFA) para tu usuario root.

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

Creación de un usuario con acceso administrativo
  1. Habilite 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 cómo usar el 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 su usuario de IAM Identity Center, utilice el inicio de sesión URL que se envió a su dirección de correo electrónico cuando creó el usuario de IAM Identity Center.

    Para obtener ayuda para iniciar sesión con un usuario de IAM Identity Center, 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 con 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 .

Concesión de 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

(Los usuarios se administran en IAM Identity Center)

Utilice credenciales temporales para firmar las solicitudes programáticas dirigidas al AWS CLI AWS SDKs, o AWS APIs.

Siga las instrucciones de la interfaz que desea utilizar:

IAM Utilice credenciales temporales para firmar las solicitudes programáticas dirigidas al AWS CLI AWS SDKs, o AWS APIs. Siga las instrucciones de Uso de credenciales temporales con AWS recursos de la Guía del IAM usuario.
IAM

(No recomendado)

Utilice credenciales de larga duración para firmar las solicitudes programáticas dirigidas al AWS CLI, AWS SDKs, o AWS APIs.

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 el 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 información sobre la instalación de Apache Maven y el kit de desarrollo de Java (JDK), consulteCumpla con los requisitos previos para completar los ejercicios.

Cómo compilar el código de la aplicación
  1. Para usar el código de la aplicación, debe compilarlo y empaquetarlo en un JAR archivo. 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 el JAR archivo ejecutando el siguiente comando en el directorio que lo pom.xml contiene:

      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 JAR archivo o comprimirlo y subirlo como un ZIP archivo. Si crea su aplicación utilizando el AWS CLI, especifique el tipo de contenido del código (JARoZIP).

  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 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 Next (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 Amazon S3, elija ka-app-code -<username>bucket y selecciona Cargar.

  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 Next (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 (IAM) y 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 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 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, elija Crear/actualizar el rol. IAM kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de servicio gestionado para Apache Flink mediante la consola, tiene la opción de crear un IAM rol y una política para la aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos IAM recursos se nombran con el nombre de la aplicación y la región de la siguiente manera:

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

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

Edite la IAM política

Edite la IAM política para añadir permisos de acceso a las transmisiones de datos de Kinesis.

  1. Abra la IAM consola 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 JSONpestaña.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Sustituya la cuenta de muestra IDs (012345678901) por tu ID de 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" } ] }
Configura 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, elija Crear o actualizar IAM rol 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

Con la consola, puede actualizar la configuración de la aplicación, como las propiedades de la aplicación, la configuración de supervisión y la ubicación o el nombre de archivo de la aplicaciónJAR. También puede volver a cargar la aplicación JAR desde el bucket de Amazon S3 si necesita actualizar el código de la aplicación.

En la MyApplicationpágina, selecciona 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 IAM recursos, la aplicación no podrá acceder a sus flujos de datos y registros.

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 IAM rol (que creará 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 cuenta en Amazon Resource Names (ARNs) (012345678901) por su ID de 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, consulta el tutorial: Cómo crear y adjuntar tu primera política gestionada por el cliente en la Guía del IAM usuario.

nota

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

Cree un rol IAM

En esta sección, se crea un IAM rol que la aplicación Managed Service for Apache Flink puede asumir para leer un flujo fuente y escribir en el flujo receptor.

Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se otorgan a través de un IAM rol. Cada IAM función tiene dos políticas adjuntas. 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.

Para crear un rol de IAM
  1. Abra la IAM consola 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 IAM rol llamadoMF-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 AKReadSourceStreamWriteSinkStreampolítica 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 ARN el nuevo rol.

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

Cree la aplicación Managed Service for Apache Flink
  1. Guarde el siguiente JSON código en un archivo denominadocreate_request.json. Sustituya el rol ARN de ejemplo ARN por el rol que creó anteriormente. Sustituya el ARN sufijo 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 JSON código 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. Guarda el siguiente JSON código en un archivo con el nombrestop_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.

Agregue una opción de CloudWatch registro

Puedes usar el AWS CLI para añadir un flujo de CloudWatch registro de Amazon a tu aplicación. Para obtener información sobre el uso 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 JSON código en un archivo denominadoupdate_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. Actualiza el sufijo del nombre del bucket (<username>) con el sufijo que haya elegido en la Cree dos transmisiones de datos de Amazon Kinesis sección.

{ "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 Managed Service for 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 for Apache Flink en /flink https://console.aws.amazon.com

  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 Amazon S3 en https://console.aws.amazon.com/s3/.

  2. Elija la opción ka-app-code -<username> balde.

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

Elimine sus IAM recursos

  1. Abre la IAM consola 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 aws/kinesis-analytics/MyApplication registros/.

  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 ETL ejemplo 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 IAM funciones y las políticas, 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 streamingETL, 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 el. 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.

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

  • Propiedades de tiempo de ejecución: puede usar las propiedades de tiempo de ejecución para configurar su aplicación sin tener que volver a compilar el código de la aplicación.

  • Fuente: la aplicación consume datos mediante una fuente. Un conector de origen lee los datos de un flujo de datos de Kinesis, un bucket de Amazon S3, etc. Para obtener más información, consulte Agregue fuentes de datos de streaming.

  • Operadores: la aplicación procesa los datos mediante uno o más operadores. Un operador puede transformar, enriquecer o agregar datos. Para obtener más información, consulte Operadores.

  • Receptor: la aplicación produce datos para fuentes externas mediante el uso de receptores. Un conector receptor escribe datos en una transmisión de datos de Kinesis, una transmisión de Firehose, un bucket de Amazon S3, etc. Para obtener más información, consulte Escriba datos mediante sumideros.

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 suscribirte a una Cuenta de AWS
  1. Abrir https://portal.aws.amazon.com/billing/registro.

  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 un Cuenta de AWS, Usuario raíz de la cuenta de AWSse crea un. 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. En cualquier momento, puede ver la actividad de su cuenta actual y administrarla accediendo a 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. Activa la autenticación multifactorial (MFA) para tu usuario root.

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

Creación de un usuario con acceso administrativo
  1. Habilite 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 cómo usar el 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 su usuario de IAM Identity Center, utilice el inicio de sesión URL que se envió a su dirección de correo electrónico cuando creó el usuario de IAM Identity Center.

    Para obtener ayuda para iniciar sesión con un usuario de IAM Identity Center, 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 con 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 .

Concesión de 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

(Los usuarios se administran en IAM Identity Center)

Utilice credenciales temporales para firmar las solicitudes programáticas dirigidas al AWS CLI AWS SDKs, o AWS APIs.

Siga las instrucciones de la interfaz que desea utilizar:

IAM Utilice credenciales temporales para firmar las solicitudes programáticas dirigidas al AWS CLI AWS SDKs, o AWS APIs. Siga las instrucciones de Uso de credenciales temporales con AWS recursos de la Guía del IAM usuario.
IAM

(No recomendado)

Utilice credenciales de larga duración para firmar las solicitudes programáticas dirigidas al AWS CLI, AWS SDKs, o AWS APIs.

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 el 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 información sobre la instalación de Apache Maven y el kit de desarrollo de Java (JDK), consulteCumpla con los requisitos previos para completar los ejercicios.

Cómo compilar el código de la aplicación
  1. Para usar el código de la aplicación, debe compilarlo y empaquetarlo en un JAR archivo. 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 el JAR archivo ejecutando el siguiente comando en el directorio que lo pom.xml contiene:

      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 JAR archivo o comprimirlo y subirlo como un ZIP archivo. Si crea su aplicación utilizando el AWS CLI, especifique el tipo de contenido del código (JARoZIP).

  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 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 Next (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 Amazon S3, elija ka-app-code -<username>bucket y selecciona Cargar.

  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 Next (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 (IAM) y 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 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 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, elija Crear/actualizar el rol. IAM kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de servicio gestionado para Apache Flink mediante la consola, tiene la opción de crear un IAM rol y una política para la aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos IAM recursos se nombran con el nombre de la aplicación y la región de la siguiente manera:

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

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

Edite la IAM política

Edite la IAM política para añadir permisos de acceso a las transmisiones de datos de Kinesis.

  1. Abra la IAM consola 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 JSONpestaña.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Sustituya la cuenta de muestra IDs (012345678901) por tu ID de 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" } ] }
Configura 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, elija Crear o actualizar IAM rol 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

Con la consola, puede actualizar la configuración de la aplicación, como las propiedades de la aplicación, la configuración de supervisión y la ubicación o el nombre de archivo de la aplicaciónJAR. También puede volver a cargar la aplicación JAR desde el bucket de Amazon S3 si necesita actualizar el código de la aplicación.

En la MyApplicationpágina, selecciona 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 servicio gestionado para 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 IAM recursos, la aplicación no podrá acceder a sus flujos de datos y registros.

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 IAM rol (que creará 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 cuenta en Amazon Resource Names (ARNs) (012345678901) por su ID de 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, consulta el tutorial: Cómo crear y adjuntar tu primera política gestionada por el cliente en la Guía del IAM usuario.

nota

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

Cree un rol IAM

En esta sección, se crea un IAM rol que la aplicación Managed Service for Apache Flink puede asumir para leer un flujo fuente y escribir en el flujo receptor.

Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se otorgan a través de un IAM rol. Cada IAM función tiene dos políticas adjuntas. 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.

Para crear un rol de IAM
  1. Abra la IAM consola 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 IAM rol llamadoMF-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 AKReadSourceStreamWriteSinkStreampolítica 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 ARN el nuevo rol.

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

Cree la aplicación Managed Service for Apache Flink
  1. Guarde el siguiente JSON código en un archivo denominadocreate_request.json. Sustituya el rol ARN de ejemplo ARN por el rol que creó anteriormente. Sustituya el ARN sufijo 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 JSON código en un archivo denominadostart_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 JSON código en un archivo denominadostop_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 JSON código en un archivo denominadoupdate_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. Actualiza el sufijo del nombre del bucket (<username>) con el sufijo que haya elegido en la Cree dos transmisiones de datos de Amazon Kinesis sección.

{ "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 Managed Service for 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 for Apache Flink en /flink https://console.aws.amazon.com

  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 Amazon S3 en https://console.aws.amazon.com/s3/.

  2. Elija la opción ka-app-code -<username> balde.

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

Eliminar tus recursos IAM

  1. Abre la IAM consola 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 aws/kinesis-analytics/MyApplication registros/.

  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 ETL ejemplo 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 IAM funciones y las políticas, 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 streamingETL, 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:

  • Propiedades de tiempo de ejecución: puede usar las propiedades de tiempo de ejecución para configurar su aplicación sin tener que volver a compilar el código de la aplicación.

  • Fuente: la aplicación consume datos mediante una fuente. Un conector de origen lee los datos de un flujo de datos de Kinesis, un bucket de Amazon S3, etc. Para obtener más información, consulte Agregue fuentes de datos de streaming.

  • Operadores: la aplicación procesa los datos mediante uno o más operadores. Un operador puede transformar, enriquecer o agregar datos. Para obtener más información, consulte Operadores.

  • Receptor: la aplicación produce datos para fuentes externas mediante el uso de receptores. Un conector receptor escribe datos en una transmisión de datos de Kinesis, una transmisión de Firehose, un bucket de Amazon S3, etc. Para obtener más información, consulte Escriba datos mediante sumideros.

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 suscribirte a una Cuenta de AWS
  1. Abrir https://portal.aws.amazon.com/billing/registro.

  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 un Cuenta de AWS, Usuario raíz de la cuenta de AWSse crea un. 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. En cualquier momento, puede ver la actividad de su cuenta actual y administrarla accediendo a 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. Activa la autenticación multifactorial (MFA) para tu usuario root.

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

Creación de un usuario con acceso administrativo
  1. Habilite 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 cómo usar el 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 su usuario de IAM Identity Center, utilice el inicio de sesión URL que se envió a su dirección de correo electrónico cuando creó el usuario de IAM Identity Center.

    Para obtener ayuda para iniciar sesión con un usuario de IAM Identity Center, 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 con 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 .

Concesión de 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

(Los usuarios se administran en IAM Identity Center)

Utilice credenciales temporales para firmar las solicitudes programáticas dirigidas al AWS CLI AWS SDKs, o AWS APIs.

Siga las instrucciones de la interfaz que desea utilizar:

IAM Utilice credenciales temporales para firmar las solicitudes programáticas dirigidas al AWS CLI AWS SDKs, o AWS APIs. Siga las instrucciones de Uso de credenciales temporales con AWS recursos de la Guía del IAM usuario.
IAM

(No recomendado)

Utilice credenciales de larga duración para firmar las solicitudes programáticas dirigidas al AWS CLI, AWS SDKs, o AWS APIs.

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 información sobre la instalación de Apache Maven y el kit de desarrollo de Java (JDK), consulteRequisitos 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 usar el código de la aplicación, debe compilarlo y empaquetarlo en un JAR archivo. 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 el JAR archivo ejecutando el siguiente comando en el directorio que lo pom.xml contiene:

      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 JAR archivo o comprimirlo y subirlo como un ZIP archivo. Si crea su aplicación utilizando el AWS CLI, especifique el tipo de contenido del código (JARoZIP).

  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 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 Next (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 Amazon S3, elija ka-app-code -<username>bucket y selecciona Cargar.

  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 Next (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 (IAM) y 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 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 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, elija Crear/actualizar el rol. IAM kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de servicio gestionado para Apache Flink mediante la consola, tiene la opción de crear un IAM rol y una política para la aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos IAM recursos se nombran con el nombre de la aplicación y la región de la siguiente manera:

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

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

Edite la IAM política

Edite la IAM política para añadir permisos de acceso a las transmisiones de datos de Kinesis.

  1. Abra la IAM consola 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 JSONpestaña.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Sustituya la cuenta de muestra IDs (012345678901) por tu ID de 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" } ] }
Configura 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, elija Crear o actualizar IAM rol 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

Con la consola, puede actualizar la configuración de la aplicación, como las propiedades de la aplicación, la configuración de supervisión y la ubicación o el nombre de archivo de la aplicaciónJAR. También puede volver a cargar la aplicación JAR desde el bucket de Amazon S3 si necesita actualizar el código de la aplicación.

En la MyApplicationpágina, selecciona 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 IAM recursos, la aplicación no podrá acceder a sus flujos de datos y registros.

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 IAM rol (que creará 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 cuenta en Amazon Resource Names (ARNs) (012345678901) por su ID de 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, consulta el tutorial: Cómo crear y adjuntar tu primera política gestionada por el cliente en la Guía del IAM usuario.

nota

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

Cree un rol IAM

En esta sección, se crea un IAM rol que la aplicación Managed Service for Apache Flink puede asumir para leer un flujo fuente y escribir en el flujo receptor.

Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se otorgan a través de un IAM rol. Cada IAM función tiene dos políticas adjuntas. 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.

Para crear un rol de IAM
  1. Abra la IAM consola 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 IAM rol llamadoMF-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 AKReadSourceStreamWriteSinkStreampolítica 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 ARN el nuevo rol.

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

Cree la aplicación Managed Service for Apache Flink
  1. Guarde el siguiente JSON código en un archivo denominadocreate_request.json. Sustituya el rol ARN de ejemplo ARN por el rol que creó anteriormente. Sustituya el ARN sufijo 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 JSON código en un archivo denominadostart_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 JSON código en un archivo denominadostop_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 JSON código en un archivo denominadoupdate_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. Actualiza el sufijo del nombre del bucket (<username>) con el sufijo que haya elegido en la Cree dos transmisiones de datos de Amazon Kinesis sección.

{ "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 Managed Service for 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 for Apache Flink en /flink https://console.aws.amazon.com

  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 Amazon S3 en https://console.aws.amazon.com/s3/.

  2. Elija la opción ka-app-code -<username> balde.

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

Elimine sus IAM recursos

  1. Abre la IAM consola 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 aws/kinesis-analytics/MyApplication registros/.

  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:

  • Propiedades de tiempo de ejecución: puede usar las propiedades de tiempo de ejecución para configurar su aplicación sin tener que volver a compilar el código de la aplicación.

  • Fuente: la aplicación consume datos mediante una fuente. Un conector de origen lee los datos de un flujo de datos de Kinesis, un bucket de Amazon S3, etc. Para obtener más información, consulte Agregue fuentes de datos de streaming.

  • Operadores: la aplicación procesa los datos mediante uno o más operadores. Un operador puede transformar, enriquecer o agregar datos. Para obtener más información, consulte Operadores.

  • Receptor: la aplicación produce datos para fuentes externas mediante el uso de receptores. Un conector receptor escribe datos en una transmisión de datos de Kinesis, una transmisión de Firehose, un bucket de Amazon S3, etc. Para obtener más información, consulte Escriba datos mediante sumideros.

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:

  • Kit de desarrollo de Java (JDK) versión 8. Configure la variable de JAVA_HOME entorno para que apunte a la ubicación de JDK instalación.

  • 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 suscribirte a una Cuenta de AWS
  1. Abrir https://portal.aws.amazon.com/billing/registro.

  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 un Cuenta de AWS, Usuario raíz de la cuenta de AWSse crea un. 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. En cualquier momento, puede ver la actividad de su cuenta actual y administrarla accediendo a 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. Activa la autenticación multifactorial (MFA) para tu usuario root.

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

Creación de un usuario con acceso administrativo
  1. Habilite 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 cómo usar el 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 su usuario de IAM Identity Center, utilice el inicio de sesión URL que se envió a su dirección de correo electrónico cuando creó el usuario de IAM Identity Center.

    Para obtener ayuda para iniciar sesión con un usuario de IAM Identity Center, 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 con 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 .

Concesión de 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

(Los usuarios se administran en IAM Identity Center)

Utilice credenciales temporales para firmar las solicitudes programáticas dirigidas al AWS CLI AWS SDKs, o AWS APIs.

Siga las instrucciones de la interfaz que desea utilizar:

IAM Utilice credenciales temporales para firmar las solicitudes programáticas dirigidas al AWS CLI AWS SDKs, o AWS APIs. Siga las instrucciones de Uso de credenciales temporales con AWS recursos de la Guía del IAM usuario.
IAM

(No recomendado)

Utilice credenciales de larga duración para firmar las solicitudes programáticas dirigidas al AWS CLI, AWS SDKs, o AWS APIs.

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 el 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 información sobre la instalación de Apache Maven y el kit de desarrollo de Java (JDK), consulteRequisitos 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 usar el código de la aplicación, debe compilarlo y empaquetarlo en un JAR archivo. 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 el JAR archivo ejecutando el siguiente comando en el directorio que lo pom.xml contiene:

      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 JAR archivo o comprimirlo y subirlo como un ZIP archivo. Si crea su aplicación utilizando el AWS CLI, especifique el tipo de contenido del código (JARoZIP).

  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 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 Next (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 Amazon S3, elija ka-app-code -<username>bucket y selecciona Cargar.

  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 Next (Siguiente).

  9. En el paso Establecer permisos, deje los ajustes tal y como están. Elija Next (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 (IAM) y 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 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 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, elija Crear/actualizar el rol. IAM kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de servicio gestionado para Apache Flink mediante la consola, tiene la opción de crear un IAM rol y una política para la aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos IAM recursos se nombran con el nombre de la aplicación y la región de la siguiente manera:

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

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

Edite la IAM política

Edite la IAM política para añadir permisos de acceso a las transmisiones de datos de Kinesis.

  1. Abra la IAM consola 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 JSONpestaña.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Sustituya la cuenta de muestra IDs (012345678901) por tu ID de 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" } ] }
Configura 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, elija Crear o actualizar IAM rol 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

Con la consola, puede actualizar la configuración de la aplicación, como las propiedades de la aplicación, la configuración de supervisión y la ubicación o el nombre de archivo de la aplicaciónJAR. También puede volver a cargar la aplicación JAR desde el bucket de Amazon S3 si necesita actualizar el código de la aplicación.

En la MyApplicationpágina, selecciona 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 IAM rol (que creará 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 cuenta en Amazon Resource Names (ARNs) (012345678901) por su ID de 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, consulta el tutorial: Cómo crear y adjuntar tu primera política gestionada por el cliente en la Guía del IAM usuario.

nota

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

Cree un rol IAM

En esta sección, se crea un IAM rol que la aplicación Managed Service for Apache Flink puede asumir para leer un flujo fuente y escribir en el flujo receptor.

Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se otorgan a través de un IAM rol. Cada IAM función tiene dos políticas adjuntas. 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.

Para crear un rol de IAM
  1. Abra la IAM consola 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 IAM rol llamadoMF-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 AKReadSourceStreamWriteSinkStreampolítica 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 ARN el nuevo rol.

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

Cree la aplicación Managed Service for Apache Flink
  1. Guarde el siguiente JSON código en un archivo denominadocreate_request.json. Sustituya el rol ARN de ejemplo ARN por el rol que creó anteriormente. Sustituya el ARN sufijo 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 JSON código en un archivo denominadostart_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 JSON código en un archivo denominadostop_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 JSON código en un archivo denominadoupdate_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. Actualiza el sufijo del nombre del bucket (<username>) con el sufijo que haya elegido en la Cree dos transmisiones de datos de Amazon Kinesis sección.

{ "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 Managed Service for 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 for Apache Flink en /flink https://console.aws.amazon.com

  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 Amazon S3 en https://console.aws.amazon.com/s3/.

  2. Elija la opción ka-app-code -<username> balde.

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

Elimine sus IAM recursos

  1. Abre la IAM consola 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 aws/kinesis-analytics/MyApplication registros/.

  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, los comandos y las IAM funciones de su aplicación de forma adecuada.

DataStream APIejemplos

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

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 JAR archivo 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 Amazon S3, elija ka-app-code -<username>bucket y selecciona Cargar.

  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 del servicio gestionado para Apache Flink en /flink https://console.aws.amazon.com

  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, elija Crear/actualizar el rol. IAM kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de servicio gestionado para Apache Flink mediante la consola, tiene la opción de crear un IAM rol y una política para la aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos IAM recursos se nombran con el nombre de la aplicación y la región de la siguiente manera:

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

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

Edite la IAM política

Edite la IAM política para añadir permisos de acceso a las transmisiones de datos de Kinesis.

  1. Abra la IAM consola 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 JSONpestaña.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Sustituya la cuenta de muestra IDs (012345678901) por tu ID de 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" } ] }
Configura 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, elija Crear o actualizar IAM rol 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 for Apache Flink en /flink https://console.aws.amazon.com

  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 Amazon S3 en https://console.aws.amazon.com/s3/.

  2. Elija la opción ka-app-code -<username> balde.

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

Elimine sus IAM recursos
  1. Abre la IAM consola 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 aws/kinesis-analytics/MyApplication registros/.

  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 JAR archivo 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 Amazon S3, elija ka-app-code -<username>bucket y, a continuación, selecciona Cargar.

  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 del servicio gestionado para Apache Flink en /flink https://console.aws.amazon.com

  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, elija Crear/actualizar el rol. IAM kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de servicio gestionado para Apache Flink mediante la consola, tiene la opción de crear un IAM rol y una política para la aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos IAM recursos se nombran con el nombre de la aplicación y la región de la siguiente manera:

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

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

Edite la IAM política

Edite la IAM política para añadir permisos de acceso a las transmisiones de datos de Kinesis.

  1. Abra la IAM consola 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 JSONpestaña.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Sustituya la cuenta de muestra IDs (012345678901) por tu ID de 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" } ] }
Configura 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, elija Crear o actualizar IAM rol 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 for Apache Flink en /flink https://console.aws.amazon.com

  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 Amazon S3 en https://console.aws.amazon.com/s3/.

  2. Elija la opción ka-app-code -<username> balde.

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

Elimine sus IAM recursos
  1. Abre la IAM consola 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 aws/kinesis-analytics/MyApplication registros/.

  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 JAR archivo 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 Amazon S3, elija ka-app-code -<username>bucket, navegue hasta la carpeta de códigos y elija Cargar.

  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 del servicio gestionado para Apache Flink en /flink https://console.aws.amazon.com

  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, elija Crear/actualizar el rol. IAM kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

    nota

    Al crear una aplicación de servicio gestionado para Apache Flink mediante la consola, tiene la opción de crear un IAM rol y una política para la aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos IAM recursos se nombran con el nombre de la aplicación y la región de la siguiente manera:

    • 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, elija Crear o actualizar IAM el rol kinesis-analytics-MyApplication-us-west-2.

  7. Elija Crear aplicación.

nota

Al crear un servicio gestionado para Apache Flink mediante la consola, tiene la opción de crear un IAM rol 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 IAM recursos se nombran con el nombre de la aplicación y la región de la siguiente manera:

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

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

Edite la IAM política

Edite la IAM política para añadir permisos de acceso a la transmisión de datos de Kinesis.

  1. Abra la IAM consola 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 JSONpestaña.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Sustituya la cuenta de muestra IDs (012345678901) por tu ID de 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" }, ] }
Configura 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, elija Crear o actualizar IAM rol 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 for Apache Flink en /flink https://console.aws.amazon.com

  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 Amazon S3 en https://console.aws.amazon.com/s3/.

  2. Elija la opción ka-app-code -<username> balde.

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

Elimine sus IAM recursos
  1. Abre la IAM consola 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 aws/kinesis-analytics/MyApplication registros/.

  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 MSK clúster a otro de un VPC

El siguiente tutorial muestra cómo crear un Amazon VPC con un MSK clúster de Amazon y dos temas, y cómo crear una aplicación de Managed Service for Apache Flink que lee un MSK tema de Amazon 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.

Crea un Amazon VPC con un MSK clúster de Amazon

Para crear un ejemplo VPC y un MSK clúster de Amazon al que acceder desde una aplicación de Managed Service for Apache Flink, sigue el MSK tutorial Cómo empezar a usar Amazon.

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 bootstrap con el siguiente comando (replace) ClusterArn con el ARN de su MSK clúster):

    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 JAR archivo 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 JAR archivo mediante 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 Amazon S3, elija ka-app-code -<username>bucket y selecciona Cargar.

  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, elija Crear/actualizar el rol. IAM kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de servicio gestionado para Apache Flink mediante la consola, tiene la opción de crear un IAM rol y una política para la aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos IAM recursos se nombran con el nombre de la aplicación y la región de la siguiente manera:

  • 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, elija Crear o actualizar IAM rol kinesis-analytics-MyApplication-us-west-2.

    nota

    Cuando especificas los recursos de la aplicación mediante la consola (como CloudWatch Logs o AmazonVPC), 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 The bootstrap server list you saved previously
    KafkaSource security.protocol SSL
    KafkaSource ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts
    KafkaSource ssl.truststore.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 The bootstrap server list you saved previously
    KafkaSink security.protocol SSL
    KafkaSink ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts
    KafkaSink ssl.truststore.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 la fuente y el receptor que se utilizan para interactuar con su MSK clúster VPC y el de Amazon. 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, selecciona la casilla Activar.

  8. En la sección Nube privada virtual (VPC), seleccione la VPC que desee asociar a su aplicación. Elija las subredes y el grupo de seguridad asociados a los suyos VPC que desee que utilice la aplicación para acceder a VPC los recursos.

  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, sigue los pasos del paso 6: Producir y consumir datos del MSK tutorial Cómo empezar a usar Amazon.

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 EFO consumidor con una transmisión de datos de Kinesis

En este ejercicio, creará una aplicación de servicio gestionado para Apache Flink que lea desde una transmisión de datos de Kinesis mediante un consumidor Fan-Out EFO () mejorado. Si un consumidor usa KinesisEFO, el servicio Kinesis Data Streams le proporciona su propio ancho de banda dedicado, en lugar de que el consumidor comparta el ancho de banda fijo de la transmisión con los demás consumidores que leen la transmisión.

Para obtener más información sobre su uso EFO con el Kinesis Consumer, consulte FLIP-128: Salida de ventilador mejorada para consumidores de Kinesis.

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 habilitar al EFO consumidor, configure los siguientes parámetros en el consumidor de Kinesis:

    • RECORD_ PUBLISHER _TYPE: Defina este parámetro EFOpara que su aplicación utilice un EFO consumidor para acceder a los datos de Kinesis Data Stream.

    • EFO_ CONSUMER _NAME: Establezca este parámetro en un valor de cadena que sea único entre los consumidores de esta transmisión. 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 que un EFO consumidor lea el flujo 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 JAR archivo 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 Amazon S3, elija ka-app-code -<username>bucket y selecciona Cargar.

  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 del servicio gestionado para Apache Flink en /flink https://console.aws.amazon.com

  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, elija Crear/actualizar el rol. IAM kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de servicio gestionado para Apache Flink mediante la consola, tiene la opción de crear un IAM rol y una política para la aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos IAM recursos se nombran con el nombre de la aplicación y la región de la siguiente manera:

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

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

Edite la IAM política

Edite la IAM política para añadir permisos de acceso a las transmisiones de datos de Kinesis.

  1. Abra la IAM consola 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 JSONpestaña.

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

    nota

    Estos permisos otorgan a la aplicación la posibilidad de acceder al EFO consumidor.

    { "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, elija Crear o actualizar IAM rol 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 for Apache Flink en /flink https://console.aws.amazon.com

  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 Amazon S3 en https://console.aws.amazon.com/s3/.

  2. Elija la opción ka-app-code -<username> balde.

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

Elimine sus IAM recursos
  1. Abre la IAM consola 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 aws/kinesis-analytics/MyApplication registros/.

  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 JAR archivo 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 Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En la consola, elija ka-app-code -<username>bucket 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 (IAM) y 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 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 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, elija Crear/actualizar el rol. 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 IAM rol y una política para la aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos IAM recursos se nombran con el nombre de la aplicación y la región de la siguiente manera:

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

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

Edite la IAM política

Edite la IAM política para añadir permisos de acceso a la transmisión de datos de Kinesis y a la transmisión de Firehose.

  1. Abra la IAM consola 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 JSONpestaña.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace todas las instancias de la cuenta de muestra IDs (012345678901) por tu ID de 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" } ] }
Configura 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, elija Crear o actualizar IAM rol 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

Con la consola, puede actualizar la configuración de la aplicación, como las propiedades de la aplicación, la configuración de supervisión y la ubicación o el nombre de archivo de la aplicaciónJAR.

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 objetoJAR, utilizar un bucket de S3 diferente o utilizar el que se AWS CLI describe en la Actualización del código de la aplicación secció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 IAM rol (que creará 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. Reemplazar username con 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 cuenta en Amazon Resource Names (ARNs) (012345678901) por su ID de 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, consulta el tutorial: Cómo crear y adjuntar tu primera política gestionada por el cliente en la Guía del IAM usuario.

nota

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

Cree un rol IAM

En esta sección, se crea un IAM rol que la aplicación Managed Service for Apache Flink puede asumir para leer un flujo fuente y escribir en el flujo receptor.

Managed Service para Apache Flink no puede acceder a su transmisión si no tiene permisos. Estos permisos se otorgan a través de un IAM rol. Cada IAM función tiene dos políticas adjuntas. 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.

Para crear un rol de IAM
  1. Abra la IAM consola 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 IAM rol llamadoMF-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 AKReadSourceStreamWriteSinkStreampolítica 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 ARN el nuevo rol.

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

Cree la aplicación Managed Service for Apache Flink
  1. Guarde el siguiente JSON código en un archivo denominadocreate_request.json. Sustituya el rol ARN de ejemplo ARN por el rol que creó anteriormente. Sustituya el ARN sufijo del bucket por el sufijo que eligió en la Cree recursos dependientes sección (ka-app-code-<username>.) Sustituya el ejemplo de ID de cuenta (012345678901) en la función de ejecución del servicio por tu ID de 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 JSON código en un archivo denominadostart_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 JSON código en un archivo denominadostop_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. Actualiza el sufijo del nombre del bucket (<usernameActualiza el sufijo del nombre del depósito () con el Cree recursos dependientes sufijo que hayas elegido en la sección.

{ "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 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 for Apache Flink en /flink https://console.aws.amazon.com

  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 Amazon S3 en https://console.aws.amazon.com/s3/.

  2. Elija la opción ka-app-code -<username> balde.

  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 IAM
  1. Abre la IAM consola 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 aws/kinesis-analytics/MyApplication registros/.

  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 IAM funciones y políticas

Para permitir el acceso a los objetos en todas AWS las cuentas, debe crear un IAM rol y una política en la cuenta de origen. A continuación, modificas la IAM política en la cuenta colectora. Para obtener información sobre la creación de IAM funciones y políticas, consulte los siguientes temas de la Guía del AWS Identity and Access Management usuario:

Funciones y políticas de Sink Account
  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 ejemplo de ID de cuenta (SOURCE01234567) por el ID de la cuenta que utilizarás para la transmisión 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 kinesis-analytics-MyApplication-us-west-2 rol y anote su nombre de recurso de Amazon (ARN). Lo necesitará en la sección siguiente. El rol 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 lo 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 IAM de administración, elija 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. kinesis-analytics-MyApplication-us-west-2ARNAñada la cuenta colectora a la relación de confianza del KA-Source-Stream-Role rol en la cuenta de origen:

    1. Abre el KA-Source-Stream-Role en la IAM consola.

    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. Sustituya el ejemplo de ID de cuenta (SINK012345678) por el identificador de tu cuenta hundida.

      { "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 el 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 JAR archivo anterior de su bucket de Amazon Simple Storage Service (Amazon S3) y, a continuación, cargue el aws-kinesis-analytics-java-apps-1.0.jar nuevo archivo en el bucket de S3.

  3. En la página de la aplicación, en la consola de Managed Service for Apache Flink, seleccione Configurar y actualizar para volver a cargar el archivo de la aplicaciónJAR.

  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: Cómo usar una tienda de confianza personalizada con Amazon MSK

Fuente de datos actual APIs

Si utiliza la fuente de datos actualAPIs, su aplicación puede utilizar 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 de forma mutua TLS 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í.

Legado SourceFunction APIs

Si utiliza la versión antigua SourceFunction APIs, 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

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 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 MSK clúster de Amazon con la autenticación mutua TLS (MTLS) habilitada. Esto implica que los nodos del MSK clúster utilizan certificados de servidor emitidos por una autoridad de AWS certificación privada (CA privada) de ACM Certificate Manager que es privada para su cuenta y región y, por lo tanto, no confía en el almacén de confianza predeterminado de la máquina virtual Java (JVM) que ejecuta la aplicación Flink.

nota
  • Un almacén de claves se utiliza para almacenar la clave privada 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 SSL conexión.

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:

Crear un MSK clúster VPC con Amazon

Para crear un ejemplo VPC y un MSK clúster de Amazon al que acceder desde una aplicación de Managed Service for Apache Flink, sigue el MSK tutorial Cómo empezar a usar Amazon.

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 bootstrap con el siguiente comando (replace) ClusterArn con el ARN de su MSK clúster):

    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 (CA) personalizada, utilizarla para generar un almacén de confianza personalizado y aplicarlo a su MSK clúster.

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 JAR archivo 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 JAR archivo. Para compilar el JAR archivo mediante 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 Amazon S3, elija ka-app-code -<username>bucket y selecciona Cargar.

  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 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, elija Crear/actualizar rol. IAM kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear un servicio gestionado para Apache Flink mediante la consola, tiene la opción de crear un IAM rol 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 IAM recursos se nombran con el nombre de la aplicación y la región de la siguiente manera:

  • 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, elija Crear o actualizar IAM rol kinesis-analytics-MyApplication-us-west-2.

    nota

    Al especificar los recursos de la aplicación mediante la consola (como los registros o unVPC), 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 The bootstrap server list you saved previously
    KafkaSource security.protocol SSL
    KafkaSource ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts
    KafkaSource ssl.truststore.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 The bootstrap server list you saved previously
    KafkaSink security.protocol SSL
    KafkaSink ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts
    KafkaSink ssl.truststore.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 la fuente y el receptor que se utilizan para interactuar con su MSK clúster VPC y el de Amazon. 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, selecciona la casilla Activar.

  8. En la sección Nube privada virtual (VPC), seleccione la VPC que desee asociar a su aplicación. Elija las subredes y el grupo de seguridad asociados a los suyos VPC que desee que utilice la aplicación para acceder a VPC los recursos.

  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, sigue los pasos del paso 6: Producir y consumir datos del MSK tutorial Cómo empezar a usar Amazon.

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

Los siguientes ejemplos muestran cómo crear aplicaciones utilizando Python con la tabla API Flink de Apache.

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 create_table función usa un SQL comando para crear una tabla respaldada por la fuente de transmisión:

    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 Amazon S3, elija ka-app-code -<username>bucket y selecciona Cargar.

  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 del servicio gestionado para Apache Flink en /flink https://console.aws.amazon.com

  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, elija Crear/actualizar rol. IAM kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de servicio gestionado para Apache Flink mediante la consola, tiene la opción de crear un IAM rol y una política para la aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos IAM recursos se nombran con el nombre de la aplicación y la región de la siguiente manera:

  • 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, elija Crear o actualizar IAM rol 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 Especifica tus 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 IAM

Edite la IAM política para añadir permisos de acceso a las transmisiones de datos de Kinesis.

  1. Abra la IAM consola 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 JSONpestaña.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Sustituya la cuenta de muestra IDs (012345678901) por tu ID de 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.

Puedes consultar 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 Tumbling Window.

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

  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 Amazon S3 en https://console.aws.amazon.com/s3/.

  2. Elija la opción ka-app-code -<username> balde.

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

Elimine sus IAM recursos
  1. Abre la IAM consola 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 aws/kinesis-analytics/MyApplication registros/.

  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 create_input_table función usa un SQL comando para crear una tabla respaldada por la fuente de transmisión:

    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 Amazon S3, elija ka-app-code -<username>bucket y selecciona Cargar.

  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 del servicio gestionado para Apache Flink en /flink https://console.aws.amazon.com

  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, elija Crear/actualizar rol. IAM kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de servicio gestionado para Apache Flink mediante la consola, tiene la opción de crear un IAM rol y una política para la aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos IAM recursos se nombran con el nombre de la aplicación y la región de la siguiente manera:

  • 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, elija Crear o actualizar IAM rol 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 Especifica tus 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 IAM

Edite la IAM política para añadir permisos de acceso a las transmisiones de datos de Kinesis.

  1. Abra la IAM consola 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 JSONpestaña.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Sustituya la cuenta de muestra IDs (012345678901) por tu ID de 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.

Puedes consultar 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 for Apache Flink en /flink https://console.aws.amazon.com

  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 Amazon S3 en https://console.aws.amazon.com/s3/.

  2. Elija la opción ka-app-code -<username> balde.

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

Elimine sus IAM recursos
  1. Abre la IAM consola 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 aws/kinesis-analytics/MyApplication registros/.

  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 create_source_table función usa un SQL comando para crear una tabla respaldada por la fuente de transmisión

    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 Amazon S3, elija ka-app-code -<username>bucket y selecciona Cargar.

  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 del servicio gestionado para Apache Flink en /flink https://console.aws.amazon.com

  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, elija Crear/actualizar rol. IAM kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de servicio gestionado para Apache Flink mediante la consola, tiene la opción de crear un IAM rol y una política para la aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos IAM recursos se nombran con el nombre de la aplicación y la región de la siguiente manera:

  • 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, elija Crear o actualizar IAM rol 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 Especifica tus 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 Especifica tus archivos de código.

  9. Introduzca las siguientes propiedades y valores de la aplicación: (reemplazar bucket-name con 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 CloudWatch iniciar sesión, selecciona 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 IAM

Edite la IAM política para añadir permisos de acceso a las transmisiones de datos de Kinesis.

  1. Abra la IAM consola 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 JSONpestaña.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Sustituya la cuenta de muestra IDs (012345678901) por tu ID de 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.

Puedes consultar 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 for Apache Flink en /flink https://console.aws.amazon.com

  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 Amazon S3 en https://console.aws.amazon.com/s3/.

  2. Elija la opción ka-app-code -<username> balde.

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

Elimine sus IAM recursos
  1. Abre la IAM consola 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 aws/kinesis-analytics/MyApplication registros/.

  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 Java API 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 utilice Scala 3.2.0 y Java de Flink. DataStream API 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 SBTcompilación para crear el código de Scala para la aplicación. Para instalarloSBT, consulte Instalar sbt con cs setup. También necesita instalar el kit de desarrollo de Java (JDK). Consulte Prerequisites for Completing the Exercises.

  1. Para usar el código de la aplicación, debe compilarlo y empaquetarlo en un JAR archivo. Puede compilar y empaquetar el código conSBT:

    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 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 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 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, elija Crear/actualizar rol. IAM kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de servicio gestionado para Apache Flink mediante la consola, tiene la opción de crear un IAM rol y una política para la aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos IAM recursos se nombran con el nombre de la aplicación y la región de la siguiente manera:

  • 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, elija Crear o actualizar IAM rol 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 IAM

Edite la IAM política para añadir permisos de acceso al bucket de Amazon S3.

Para editar la IAM política de añadir permisos al bucket de S3
  1. Abra la IAM consola 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 JSONpestaña.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Sustituya la cuenta de muestra IDs (012345678901) por tu ID de 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.

Cree y ejecute 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 IAM recursos, la aplicación no podrá acceder a sus flujos de datos y registros.

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 IAM rol (que creará 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 cuenta en Amazon Resource Names (ARNs) (012345678901) por su ID de 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, consulta el tutorial: Cómo crear y adjuntar tu primera política gestionada por el cliente en la Guía del IAM usuario.

Cree un IAM rol

En esta sección, se crea un IAM rol que la aplicación Managed Service for Apache Flink puede asumir para leer un flujo fuente y escribir en el flujo receptor.

Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se otorgan a través de un IAM rol. Cada IAM función tiene dos políticas adjuntas. 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.

Para crear un rol de IAM
  1. Abra la IAM consola 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 IAM rol llamadoMF-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. Tome nota ARN del nuevo rol.

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

Creación de la aplicación

Guarde el siguiente JSON código en un archivo denominadocreate_request.json. Sustituya el rol ARN de ejemplo ARN por el rol que creó anteriormente. Sustituya el ARN sufijo del segmento (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. ServiceExecutionRoleDebe incluir el rol de IAM usuario 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 JSON código en un archivo denominadostart_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 JSON código en un archivo denominadostop_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 JSON código en un archivo denominadoupdate_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 UpdateApplicationCLIacció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 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 for Apache Flink en /flink https://console.aws.amazon.com

  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 Amazon S3 en https://console.aws.amazon.com/s3/.

  2. Elija la opción ka-app-code -<username> balde.

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

Elimine sus IAM recursos
  1. Abre la IAM consola 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 aws/kinesis-analytics/MyApplication registros/.

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

Ejemplo: crear una ventana deslizante en Scala

nota

A partir de la versión 1.15, Flink es gratuito para Scala. Las aplicaciones ahora pueden usar Java API 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 utilice Scala 3.2.0 y Java de Flink. DataStream API 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 SBTcompilación para crear el código de Scala para la aplicación. Para instalarloSBT, consulte Instalar sbt con cs setup. También necesita instalar el kit de desarrollo de Java (JDK). Consulte Prerequisites for Completing the Exercises.

  1. Para usar el código de la aplicación, debe compilarlo y empaquetarlo en un JAR archivo. Puede compilar y empaquetar el código conSBT:

    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 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 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 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, elija Crear/actualizar rol. IAM kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de servicio gestionado para Apache Flink mediante la consola, tiene la opción de crear un IAM rol y una política para la aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos IAM recursos se nombran con el nombre de la aplicación y la región de la siguiente manera:

  • 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, elija Crear o actualizar IAM rol 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 IAM

Edite la IAM política para añadir permisos de acceso al bucket de Amazon S3.

Para editar la IAM política de añadir permisos al bucket de S3
  1. Abra la IAM consola 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 JSONpestaña.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Sustituya la cuenta de muestra IDs (012345678901) por tu ID de 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.

Cree y ejecute 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 IAM recursos, la aplicación no podrá acceder a sus flujos de datos y registros.

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 IAM rol (que creará 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 cuenta en Amazon Resource Names (ARNs) (012345678901) por su ID de 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, consulta el tutorial: Cómo crear y adjuntar tu primera política gestionada por el cliente en la Guía del IAM usuario.

Cree un IAM rol

En esta sección, se crea un IAM rol que la aplicación Managed Service for Apache Flink puede asumir para leer un flujo fuente y escribir en el flujo receptor.

Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se otorgan a través de un IAM rol. Cada IAM función tiene dos políticas adjuntas. 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.

Para crear un rol de IAM
  1. Abra la IAM consola 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 IAM rol llamadoMF-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. Tome nota ARN del nuevo rol.

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

Creación de la aplicación

Guarde el siguiente JSON código en un archivo denominadocreate_request.json. Sustituya el rol ARN de ejemplo ARN por el rol que creó anteriormente. Sustituya el ARN sufijo del segmento (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 JSON código en un archivo denominadostart_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 JSON código en un archivo denominadostop_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 JSON código en un archivo denominadoupdate_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 UpdateApplicationCLIacció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 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 for Apache Flink en /flink https://console.aws.amazon.com

  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 Amazon S3 en https://console.aws.amazon.com/s3/.

  2. Elija la opción ka-app-code -<username> balde.

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

Elimine sus IAM recursos
  1. Abre la IAM consola 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 aws/kinesis-analytics/MyApplication registros/.

  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 Java API 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 utilice Scala 3.2.0 y Java de Flink. DataStream API 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 SBTcompilación para crear el código de Scala para la aplicación. Para instalarloSBT, consulte Instalar sbt con cs setup. También necesita instalar el kit de desarrollo de Java (JDK). Consulte Prerequisites for Completing the Exercises.

  1. Para usar el código de la aplicación, debe compilarlo y empaquetarlo en un JAR archivo. Puede compilar y empaquetar el código conSBT:

    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 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 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 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, elija Crear/actualizar rol. IAM kinesis-analytics-MyApplication-us-west-2

  5. Elija Crear aplicación.

nota

Al crear una aplicación de servicio gestionado para Apache Flink mediante la consola, tiene la opción de crear un IAM rol y una política para la aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos IAM recursos se nombran con el nombre de la aplicación y la región de la siguiente manera:

  • 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, elija Crear o actualizar IAM rol 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 IAM

Edite la IAM política para añadir permisos de acceso al bucket de Amazon S3.

Para editar la IAM política de añadir permisos al bucket de S3
  1. Abra la IAM consola 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 JSONpestaña.

  4. Añada la sección subrayada de la siguiente política de ejemplo a la política. Sustituya la cuenta de muestra IDs (012345678901) por tu ID de 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.

Cree y ejecute 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 IAM recursos, la aplicación no podrá acceder a sus flujos de datos y registros.

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 IAM rol (que creará 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 cuenta en Amazon Resource Names (ARNs) (012345678901) por su ID de 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, consulta el tutorial: Cómo crear y adjuntar tu primera política gestionada por el cliente en la Guía del IAM usuario.

Cree un IAM rol

En esta sección, se crea un IAM rol que la aplicación Managed Service for Apache Flink puede asumir para leer un flujo fuente y escribir en el flujo receptor.

Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se otorgan a través de un IAM rol. Cada IAM función tiene dos políticas adjuntas. 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.

Para crear un rol de IAM
  1. Abra la IAM consola 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 IAM rol llamadoMF-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. Tome nota ARN del nuevo rol.

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

Creación de la aplicación

Guarde el siguiente JSON código en un archivo denominadocreate_request.json. Sustituya el rol ARN de ejemplo ARN por el rol que creó anteriormente. Sustituya el ARN sufijo del segmento (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 JSON código en un archivo denominadostart_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 JSON código en un archivo denominadostop_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 JSON código en un archivo denominadoupdate_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 UpdateApplicationCLIacció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 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 for Apache Flink en /flink https://console.aws.amazon.com

  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 Amazon S3 en https://console.aws.amazon.com/s3/.

  2. Elija la opción ka-app-code -<username> balde.

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

Elimine sus IAM recursos
  1. Abre la IAM consola 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 aws/kinesis-analytics/MyApplication registros/.

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