Amazon Managed Service para Apache Flink Amazon (Amazon MSF) se denominaba anteriormente Amazon Kinesis Data Analytics para Apache Flink.
Información de versiones anteriores de Managed Service para Apache Flink
nota
La comunidad de Apache Flink no admite las versiones 1.6, 1.8 y 1.11 de Apache Flink desde hace ya más de tres años. Notificamos este cambio en junio y octubre de 2024 y ahora dejaremos de ofrecer compatibilidad para estas versiones en Amazon Managed Service para Apache Flink.
-
El 14 de julio de 2025, suspenderemos sus aplicaciones y las pondremos en el estado LISTO. Podrá reiniciar sus aplicaciones en ese momento y seguir usándolas de forma normal con sujeción a los límites de servicio.
-
A partir del 28 de julio de 2025, inhabilitaremos la posibilidad de INICIAR sus aplicaciones. A partir de este momento, no podrá iniciar ni utilizar sus aplicaciones de Flink versión 1.6.
Se recomienda que actualice inmediatamente cualquier aplicación existente que utilice la versión 1.6, 1.8 o 1.11 de Apache Flink a la versión 1.20 de Apache Flink. Esta es la versión de Flink compatible más reciente. Se pueden actualizar sus aplicaciones mediante la función de actualización de versiones local de Amazon Managed Service para Apache Flink. Para obtener más información, consulte Uso de actualizaciones de versión locales para Apache Flink.
Si tiene preguntad o dudad, contáctese con AWS Support
nota
La comunidad de Apache Flink no admite la versión 1.13 de Apache Flink desde hace ya más de tres años. Ahora tenemos previsto finalizar el soporte para esta versión en Amazon Managed Service para Apache Flink el 16 de octubre de 2025. Después de esta fecha, ya no podrá crear, iniciar ni ejecutar aplicaciones con Apache Flink versión 1.13 en Amazon Managed Service para Apache Flink.
Se pueden actualizar sus aplicaciones de forma automática mediante la función de actualización de versiones local de Managed Service para Apache Flink. Para obtener más información, consulte Uso de actualizaciones de versión locales para Apache Flink.
La versión 1.15.2 es compatible con Managed Service para Apache Flink, pero la comunidad de Apache Flink ya no la admite.
Este tema contiene las siguientes secciones:
Uso del conector Apache Flink Kinesis Streams con versiones anteriores de Apache Flink
El conector Apache Flink Kinesis Streams no estaba incluido en Apache Flink antes de la versión 1.11. Para que su aplicación utilice el conector Apache Flink Kinesis con versiones anteriores de Apache Flink, debe descargar, compilar e instalar la versión de Apache Flink que utilice su aplicación. Este conector se utiliza para consumir datos de un flujo de Kinesis utilizado como fuente de aplicación o para escribir datos en un flujo de Kinesis utilizado para la salida de la aplicación.
nota
Asegúrese de que está compilando el conector con la versión 0.14.0 o superior de KPL
Para descargar e instalar el código fuente de la versión 1.8.2 de Apache Flink, haga lo siguiente:
Asegúrese de tener instalado Apache Maven
y de que su variable de entorno JAVA_HOMEapunte a un JDK en lugar de un JRE. Se puede probar la instalación de Apache Maven con el siguiente comando:mvn -versionDescargue 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.tgzDescomprima el código fuente de Apache Flink:
tar -xvf flink-1.8.2-src.tgzCambie al directorio del código fuente de Apache Flink:
cd flink-1.8.2Compile e instale Apache Flink:
mvn clean install -Pinclude-kinesis -DskipTestsnota
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 |
| Managed Service para Apache Flink para el tiempo de ejecución de Flink (aws-kinesisanalytics-runtime) | 1.0.1 |
| Conectores de Flink de Managed Service para Apache Flink (aws-kinesisanalytics-runtime) | 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 para 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 |
| Managed Service para Apache Flink para el tiempo de ejecución de Flink (aws-kinesisanalytics-runtime) | 1.0.1 |
| Conectores de Flink de Managed Service para Apache Flink (aws-kinesisanalytics-runtime) | 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 para 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 para Apache Flink, utilice la característica de actualización de versión local de Apache Flink mediante la AWS CLI, AWS SDK, CloudFormation o la Consola de administración de AWS. Para obtener más información, consulte Uso de actualizaciones de versión locales para Apache Flink.
Se puede utilizar esta función con cualquier aplicación existente que utilice con Amazon Managed Service para Apache Flink en el estado READY o RUNNING.
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.
Para obtener información sobre los conectores disponibles en el marco Apache Flink 1.6.2, consulte Connectors (1.6.2)
en la documentación de Apache Flink (1.6.2) . Para obtener información sobre los conectores disponibles en el marco Apache Flink 1.8.2, consulte Connectors (1.8.2)
en la documentación de Apache Flink (1.8.2) .
Introducción: Flink 1.13.2
Esta sección presenta una introducción a los conceptos fundamentales de Managed Service para Apache Flink y la API de DataStream. Describe las opciones disponibles para crear y probar sus aplicaciones. También proporciona instrucciones para instalar las herramientas necesarias para completar los tutoriales de esta guía y crear su primera aplicación.
Temas
Componentes de una aplicación de Managed Service 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 Agregación de orígenes 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 de receptor escribe datos en un flujo de datos de Kinesis, un flujo de Firehose, un bucket de Amazon S3, etc. Para obtener más información, consulte Escritura de datos mediante receptores.
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 realizar los ejercicios
Para completar los pasos de esta guía, debe disponer de lo siguiente:
-
Java Development Kit (JDK), versión 11
. Establezca la variable de entorno JAVA_HOMEpara señalar la ubicación de la instalación del JDK. -
Se recomienda 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 Configurar una cuenta de AWS y crear un usuario administrador.
Paso 1: configuración de una cuenta de AWS y creación de un usuario administrador
Cómo crear una Cuenta de AWS
Si no dispone de una Cuenta de AWS, siga estos pasos para crear una.
Procedimiento para registrarse en Cuenta de AWS
Siga las instrucciones que se le indiquen.
Parte del procedimiento de registro consiste en recibir una llamada telefónica o mensaje de texto e indicar un código de verificación en el teclado del teléfono.
Al registrarse en una Cuenta de AWS, se crea un Usuario raíz de la cuenta de AWS. 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 le enviará un correo electrónico de confirmación cuando complete el proceso de registro. Se puede ver la actividad de la cuenta y administrarla en cualquier momento entrando en https://aws.amazon.com/
Creación de un usuario con acceso administrativo
Después de registrarse para obtener una Cuenta de AWS, proteja su Usuario raíz de la cuenta de AWS, habilite AWS IAM Identity Center y cree un usuario administrativo para no usar el usuario raíz en las tareas cotidianas.
Protección de Usuario raíz de la cuenta de AWS
-
Inicie sesión en Consola de administración de AWS
como propietario de la cuenta; para ello, elija Usuario raíz e introduzca el correo electrónico de su Cuenta de AWS. 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.
-
Active la autenticación multifactor (MFA) para el usuario raíz.
Para obtener instrucciones, consulte Habilitación de un dispositivo MFA virtual para su usuario raíz de la Cuenta de AWS (consola) en la Guía del usuario de IAM.
Creación de un usuario con acceso administrativo
-
Activar IAM Identity Center.
Consulte las instrucciones en Activar AWS IAM Identity Center en la Guía del usuario de AWS IAM Identity Center.
-
En IAM Identity Center, conceda acceso administrativo a un usuario.
Para ver un tutorial sobre cómo usar Directorio de IAM Identity Center como origen de identidad, consulte Configuración del acceso de los usuarios con el Directorio de IAM Identity Center predeterminado en la Guía del usuario de AWS IAM Identity Center.
Inicio de sesión como usuario con acceso de administrador
-
Para iniciar sesión con el usuario de IAM Identity Center, use la URL de inicio de sesión que se envió a la dirección de correo electrónico cuando creó el usuario de IAM Identity Center.
Para obtener ayuda para iniciar sesión con un usuario de IAM Identity Center, consulte Inicio de sesión en el portal de acceso de AWS en la Guía del usuario de AWS Sign-In.
Concesión de acceso a usuarios adicionales
-
En IAM Identity Center, cree un conjunto de permisos que siga la práctica recomendada de aplicar permisos de privilegios mínimos.
Para conocer las instrucciones, consulte Create a permission set en la Guía del usuario de AWS IAM Identity Center.
-
Asigne usuarios a un grupo y, a continuación, asigne el acceso de inicio de sesión único al grupo.
Para conocer las instrucciones, consulte Add groups en la Guía del usuario de AWS IAM Identity Center.
Conceder acceso programático
Los usuarios necesitan acceso programático si desean interactuar con AWS fuera de la Consola de administración de AWS. La forma de conceder el acceso programático depende del tipo de usuario que acceda a AWS.
Para conceder acceso programático a los usuarios, seleccione una de las siguientes opciones.
| ¿Qué usuario necesita acceso programático? | Para | Mediante |
|---|---|---|
|
Identidad del personal (Usuarios administrados en el IAM Identity Center) |
Utiliza credenciales temporales para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK y las API de AWS. |
Siga las instrucciones de la interfaz que desea utilizar:
|
| IAM | Utiliza credenciales temporales para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK y las API de AWS. | Siguiendo las instrucciones de Uso de credenciales temporales con recursos de AWS de la Guía del usuario de IAM. |
| IAM | (No recomendado) Utilizar credenciales a largo plazo para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK o las API de AWS. |
Siga las instrucciones de la interfaz que desea utilizar:
|
Siguiente paso
Cómo configurar la AWS Command Line Interface (AWS CLI)
Siguiente paso
Paso 2: Configuración de la 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 la AWS CLI para usarla con Managed Service para 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 tiene la AWS CLI instalada, es posible que tenga que actualizarla para obtener las últimas funcionalidades. Para obtener más información, consulte Installing the AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface. Ejecute el siguiente comando para comprobar la versión de la AWS CLI:
aws --version
Los ejercicios de este tutorial requieren la siguiente versión de la AWS CLI o posterior:
aws-cli/1.16.63
Para configurar la AWS CLI
-
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:
-
Añada un perfil con nombre para el usuario administrador en el archivo
configde la AWS CLI. Se 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 IDaws_secret_access_key =adminuser secret access keyregion =aws-regionPara ver una lista de las regiones de AWS disponibles, consulte Regions and Endpoints en la Referencia general de Amazon Web Services.
nota
El código y los comandos de ejemplo de este tutorial utilizan la región Oeste de EE. UU. (Oregón). Para usar una región diferente, cambie la región en el código y los comandos de este tutorial por la región que desea usar.
-
Verifique la configuración introduciendo el siguiente comando de ayuda en el símbolo del sistema:
aws help
Después de configurar una cuenta de AWS y la AWS CLI, puede probar a realizar el siguiente ejercicio, en el que se configura una aplicación de ejemplo y se prueba la configuración integral.
Siguiente paso
Paso 3: crear y ejecutar una aplicación de Managed Service para Apache Flink
Paso 3: crear y ejecutar una aplicación de Managed Service para Apache Flink
En este ejercicio, deberá crear una aplicación de Managed Service para Apache Flink con flujos de datos como origen y receptor.
Esta sección contiene los siguientes pasos:
Crear dos Amazon Kinesis Data Streams
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.
Se 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)
-
Para crear el primer flujo (
ExampleInputStream), utilice el siguiente comando de la AWS CLIcreate-streamde Amazon Kinesis.$ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser -
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
Escritura de 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 para Python (Boto)
-
Cree un archivo denominado
stock.pycon 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')) -
Más adelante en el tutorial, se ejecuta el script
stock.pypara enviar datos a la aplicación.$ python stock.py
Descargar y consultar el código de Java de streaming de Apache Flink
El código de la aplicación de Java para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
-
Clone el repositorio remoto con el siguiente comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git -
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.javacontiene el métodomainque 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
createSourceFromApplicationPropertiesycreateSinkFromApplicationPropertiespara 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 Uso de propiedades de tiempo de ejecución.
Compilar el código de la aplicación
En esta sección, se utiliza el compilador Apache Maven para crear el código de Java para la aplicación. Para obtener más información sobre la instalación de Apache Maven y el Java Development Kit (JDK), consulte Cumplimiento de los requisitos previos para realizar los ejercicios.
Cómo compilar el código de la aplicación
-
Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Se puede compilar y empaquetar el código de una de las dos formas siguientes:
-
Utilice la herramienta de línea de comandos de Maven. Cree su archivo JAR ejecutando el siguiente comando en el directorio que contiene el archivo
pom.xml:mvn package -Dflink.version=1.13.2 -
Use el entorno de desarrollo. Consulte la documentación de su entorno de desarrollo para obtener más información.
nota
El código fuente proporcionado se basa en bibliotecas de Java 11.
Se puede cargar el paquete como un archivo JAR o puede comprimir el paquete y cargarlo como un archivo ZIP. Si crea su aplicación mediante la AWS CLI, debe especificar el tipo de contenido del código (JAR o ZIP).
-
-
Si hay errores al compilar, verifique que la variable de entorno
JAVA_HOMEse ha configurado correctamente.
Si la aplicación se compila correctamente, se crea el siguiente archivo:
target/aws-kinesis-analytics-java-apps-1.0.jar
Cargar el código de 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
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. -
Elija Crear bucket.
-
Escriba
ka-app-code-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.<username> -
En el paso Configurar opciones, deje los ajustes tal y como están y elija Siguiente.
-
En el paso Establecer permisos, deje los ajustes tal y como están y elija Siguiente.
-
Elija Crear bucket.
-
En la consola de Amazon S3, elija el bucket ka-app-code-
<username>y seleccione Subir. -
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
aws-kinesis-analytics-java-apps-1.0.jarque creó en el paso anterior. Elija Siguiente. -
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.
Crear y ejecutar la aplicación de Managed Service para Apache Flink
Se puede crear y ejecutar una aplicación de Managed Service para Apache Flink mediante la consola o la AWS CLI.
nota
Al crear la aplicación mediante la consola, se crean sus recursos de AWS Identity and Access Management (IAM) y Registros de Amazon CloudWatch en su nombre. Si crea la aplicación mediante la AWS CLI, debe crear estos recursos por separado.
Creación y ejecución de 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
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.
-
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.
-
-
Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM.
kinesis-analytics-MyApplication-us-west-2 -
Elija Crear aplicación.
nota
Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:
-
Política:
kinesis-analytics-service-MyApplication-us-west-2 -
Rol: :
kinesisanalytics-MyApplication-us-west-2
Modificar la política de IAM
Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Elija Políticas. Elija la política
kinesis-analytics-service-MyApplication-us-west-2que la consola creó en su nombre en la sección anterior. -
En la página Resumen, elija Editar política. Seleccione la pestaña JSON.
-
Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (
012345678901) por el ID de su cuenta.
Configurar la aplicación
-
En la página MyApplication, elija Configurar.
-
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.
-
-
En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM
kinesis-analytics-MyApplication-us-west-2. -
Introduzca lo siguiente:
ID de grupo Clave Valor ProducerConfigPropertiesflink.inputstream.initposLATESTProducerConfigPropertiesaws.regionus-west-2ProducerConfigPropertiesAggregationEnabledfalse -
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
En Registro de CloudWatch, seleccione la casilla de verificación Habilitar.
-
Elija Actualizar.
nota
Al activar el registro de Amazon CloudWatch, Managed Service para Apache Flink crea un grupo de registro y un flujo de registro. 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.
Detener la aplicación
En la página Mi aplicación, elija Detener. Confirme la acción.
Actualizar la aplicación
Mediante la consola, puede actualizar la configuración de la aplicación, tal como sus propiedades, ajustes de monitorización y la ubicación o el nombre de archivo JAR de la aplicación. También puede volver a cargar el JAR de la aplicación del bucket de Amazon S3 si necesita actualizar el código de la aplicación.
En la página MyApplication, elija Configurar. Actualice la configuración de la aplicación y elija Actualizar.
Crear y ejecutar la aplicación (AWS CLI)
En esta sección, se utiliza AWS CLI para crear y ejecutar la aplicación Managed Service para Apache Flink. Managed Service para Apache Flink utiliza el comando de la AWS CLI de kinesisanalyticsv2 para crear e interactuar con las aplicaciones de Managed Service para Apache Flink.
Creación de una política de permisos
nota
Debe crear una política de permisos y un rol para su aplicación. Si no crea estos recursos de IAM, la aplicación no podrá acceder a sus flujos de datos y de registro.
En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción read en el flujo de origen y otra que concede permisos para las acciones write en el flujo de recepción. A continuación, asocie la política a un rol de IAM (que se crea en la siguiente sección). Por lo tanto, cuando Managed Service para Apache Flink asume el rol, el servicio tiene los permisos necesarios para leer desde el flujo de origen y escribir en el flujo de recepción.
Utilice el siguiente código para crear la política de permisos AKReadSourceStreamWriteSinkStream. Reemplace por el nombre de usuario que se utilizó para crear el bucket de Amazon S3 para almacenar el código de la aplicación. Sustituya el ID de la cuenta en los nombres de recurso de Amazon (ARN) (username) por el ID de su cuenta.012345678901
Para obtener instrucciones paso a paso para crear una política de permisos, consulte Tutorial: crear y asociar su primera política administrada por el cliente en la Guía del usuario de IAM.
nota
Para acceder a otros servicios de Amazon, puede usar AWS SDK para Java. Managed Service para Apache Flink establece automáticamente las credenciales requeridas por el SDK con las del rol de IAM de ejecución del servicio asociada a su aplicación. No hace falta realizar ningún otro paso.
Creación de un rol de IAM
En esta sección, creará un rol de IAM que la aplicación de Managed Service para Apache Flink pueda asumir para leer un flujo de origen y escribir en el flujo de recepción.
Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se conceden a través del rol de IAM. Cada rol de IAM tiene dos políticas asociadas. La política de confianza concede a Managed Service para Apache Flink permiso para asumir el rol, y la política de permisos determina lo que Managed Service para Apache Flink puede hacer después de asumir el rol.
Usted deberá asociar la política de permisos que ha creado en la sección anterior a este rol.
Cómo crear un rol de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
En el panel de navegación, elija Roles, Crear rol.
-
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.
-
En la página Asociar políticas de permisos, elija Siguiente: Revisión. Asociará políticas de permisos después de crear el rol.
-
En la página Crear rol, escriba
MF-stream-rw-rolecomo Nombre de rol. Elija Crear rol.Ahora ha creado un nuevo rol de IAM llamado
MF-stream-rw-role. A continuación, actualice las políticas de confianza y permisos del rol. -
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.
-
En la página Resumen, elija la pestaña Permisos.
-
Seleccione Asociar políticas.
-
En el campo de búsqueda, escriba
AKReadSourceStreamWriteSinkStream(la política que ha creado en la sección anterior). -
Elija la política AKReadSourceStreamWriteSinkStream y luego elija Asociar política.
-
Ahora ha creado el rol de ejecución de servicio que utiliza la aplicación para obtener acceso a los recursos. Anote el ARN del nuevo rol.
Para obtener instrucciones paso a paso para crear un rol, consulte Creating an IAM Role (Console) en la Guía del usuario de IAM.
Creación de la aplicación de Managed Service para Apache Flink
-
Guarde el siguiente código JSON en un archivo denominado
create_request.json. Cambie el ARN del rol de ejemplo por el ARN del rol que ha creado antes. Reemplace el sufijo del ARN del bucket () por el sufijo que eligió en la sección anterior. Reemplace el ID de la cuenta de ejemplo (username) del rol de ejecución del servicio por el ID de su cuenta.012345678901{ "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" } } ] } } } -
Ejecute la acción
CreateApplicationcon 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. Se 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
-
Guarde el siguiente código JSON en un archivo denominado
start_request.json.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } } -
Ejecute la acción
StartApplicationcon 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. Se puede comprobar las métricas de Managed Service para Apache Flink en la consola de Amazon CloudWatch 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
-
Guarde el siguiente código JSON en un archivo denominado
stop_request.json.{ "ApplicationName": "test" } -
Ejecute la acción
StopApplicationcon 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.
Incorporación de una opción de registro de CloudWatch
Se puede utilizar la AWS CLI para añadir un flujo de registro de Amazon CloudWatch a su aplicación. Para obtener más información sobre el uso de registros de CloudWatch con su aplicación, consulte Configuración de registro de aplicación en Managed Service para 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
-
Guarde el siguiente código JSON en un archivo denominado
update_properties_request.json.{"ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } } -
Ejecute la acción
UpdateApplicationcon 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ódigo, utilice la acción UpdateApplication de la AWS CLI.
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 usar la AWS CLI, elimine el paquete de código anterior de su bucket de Amazon S3, cargue la nueva versión y llame a UpdateApplication, 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. Se 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 Crear dos Amazon Kinesis Data Streams.
{ "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 recursos de AWS
Paso 4: Limpiar recursos de AWS
En esta sección se incluyen los procedimientos para eliminar los recursos de AWS creados en el tutorial de Introducción.
Este tema contiene las siguientes secciones:
Eliminación de su aplicación de Managed Service para Apache Flink
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. -
En el panel de Managed Service para Apache Flink, elija MyApplication.
-
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Eliminación de sus flujos de datos de Kinesis
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Kinesis Data Streams, elija ExampleInputStream.
-
En la página ExampleInputStream, elija Eliminar flujo de Kinesis y, a continuación, confirme la eliminación.
-
En la página Flujos de Kinesis, elija ExampleOutputStream, elija Acciones, elija Eliminar y, a continuación, confirme la eliminación.
Eliminación del objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. -
Elija el bucket ka-app-code-
<username>. -
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Eliminación de sus recursos de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
En la barra de navegación, seleccione Políticas.
-
En el control de filtros, introduzca kinesis.
-
Elija la política kinesis-analytics-service-MyApplication-us-west-2.
-
Seleccione Acciones de política y, a continuación, Eliminar.
-
En la barra de navegación, seleccione Roles.
-
Elija el rol kinesis-analytics-MyApplication-us-west-2.
-
Elija Eliminar rol y, a continuación, confirme la eliminación.
Eliminación de sus recursos de CloudWatch
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. -
En la barra de navegación, elija Registros.
-
Elija el grupo de registro /aws/kinesis-analytics/MyApplication.
-
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Siguiente paso
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.
Solución de datos de streaming de AWS para Amazon Kinesis
: La solución de datos de streaming de AWS para Amazon Kinesis configura automáticamente los servicios de AWS necesarios para capturar, almacenar, procesar y entregar fácilmente datos de streaming. La solución ofrece varias opciones para resolver casos de uso de datos de streaming. La opción Managed Service para Apache Flink proporciona un ejemplo de ETL de streaming integral que muestra una aplicación real que ejecuta operaciones analíticas a partir de datos simulados de taxis de Nueva York. La solución configura todos los recursos de AWS necesarios, como los roles y políticas de IAM, un panel de CloudWatch y las alarmas de CloudWatch. Solución de datos de streaming de AWS para Amazon MSK
: La solución de datos de streaming de AWS para Amazon MSK proporciona plantillas de AWS CloudFormation 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á una arquitectura de flujo integral para capturar, analizar y visualizar datos de flujo prácticamente en tiempo real. Usted se propuso mejorar las operaciones de una empresa de taxis de la ciudad de Nueva York. Usted analiza los datos de telemetría de una flota de taxis de la ciudad de Nueva York prácticamente en tiempo real para optimizar las operaciones de su flota. Aprenda Flink: formación práctica
: formación oficial introductoria sobre Apache Flink que le permitirá empezar a crear aplicaciones escalables de ETL de streaming, análisis y basadas en eventos. nota
Tenga en cuenta que Managed Service para Apache Flink no es compatible con la versión de Apache Flink (1.12) utilizada en esta formación. Se puede usar Flink 1.15.2 en Flink Managed Service para Apache Flink.
Introducción: Flink 1.11.1 - Obsolencia
nota
La comunidad de Apache Flink no admite las versiones 1.6, 1.8 y 1.11 de Apache Flink desde hace ya 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 esa fecha, no se podrán crear nuevas aplicaciones para estas versiones de Flink. En este momento, puede seguir ejecutando las aplicaciones existentes. Se pueden actualizar sus aplicaciones de forma automática mediante la característica de actualizaciones de versiones local de Amazon Managed Service para Apache Flink. Para obtener más información, consulte Uso de actualizaciones de versión locales para Apache Flink.
Este tema contiene una versión del tutorial Tutorial: introducción al uso de la API de DataStream en Managed Service para Apache Flink que usa Apache Flink 1.11.1.
Esta sección presenta una introducción a los conceptos fundamentales de Managed Service para Apache Flink y la API de DataStream. Describe las opciones disponibles para crear y probar sus aplicaciones. También proporciona instrucciones para instalar las herramientas necesarias para completar los tutoriales de esta guía y crear su primera aplicación.
Temas
Componentes de una aplicación de Managed Service 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 Agregación de orígenes 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 de receptor escribe datos en un flujo de datos de Kinesis, un flujo de Firehose, un bucket de Amazon S3, etc. Para obtener más información, consulte Escritura de datos mediante receptores.
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 realizar los ejercicios
Para completar los pasos de esta guía, debe disponer de lo siguiente:
-
Java Development Kit (JDK), versión 11
. Establezca la variable de entorno JAVA_HOMEpara señalar la ubicación de la instalación del JDK. -
Se recomienda 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 Configurar una cuenta de AWS y crear un usuario administrador.
Paso 1: configuración de una cuenta de AWS y creación de un usuario administrador
Cómo crear una Cuenta de AWS
Si no dispone de una Cuenta de AWS, siga estos pasos para crear una.
Procedimiento para registrarse en Cuenta de AWS
Siga las instrucciones que se le indiquen.
Parte del procedimiento de registro consiste en recibir una llamada telefónica o mensaje de texto e indicar un código de verificación en el teclado del teléfono.
Al registrarse en una Cuenta de AWS, se crea un Usuario raíz de la cuenta de AWS. 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 le enviará un correo electrónico de confirmación cuando complete el proceso de registro. Se puede ver la actividad de la cuenta y administrarla en cualquier momento entrando en https://aws.amazon.com/
Creación de un usuario con acceso administrativo
Después de registrarse para obtener una Cuenta de AWS, proteja su Usuario raíz de la cuenta de AWS, habilite AWS IAM Identity Center y cree un usuario administrativo para no usar el usuario raíz en las tareas cotidianas.
Protección de Usuario raíz de la cuenta de AWS
-
Inicie sesión en Consola de administración de AWS
como propietario de la cuenta; para ello, elija Usuario raíz e introduzca el correo electrónico de su Cuenta de AWS. 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.
-
Active la autenticación multifactor (MFA) para el usuario raíz.
Para obtener instrucciones, consulte Habilitación de un dispositivo MFA virtual para su usuario raíz de la Cuenta de AWS (consola) en la Guía del usuario de IAM.
Creación de un usuario con acceso administrativo
-
Activar IAM Identity Center.
Consulte las instrucciones en Activar AWS IAM Identity Center en la Guía del usuario de AWS IAM Identity Center.
-
En IAM Identity Center, conceda acceso administrativo a un usuario.
Para ver un tutorial sobre cómo usar Directorio de IAM Identity Center como origen de identidad, consulte Configuración del acceso de los usuarios con el Directorio de IAM Identity Center predeterminado en la Guía del usuario de AWS IAM Identity Center.
Inicio de sesión como usuario con acceso de administrador
-
Para iniciar sesión con el usuario de IAM Identity Center, use la URL de inicio de sesión que se envió a la dirección de correo electrónico cuando creó el usuario de IAM Identity Center.
Para obtener ayuda para iniciar sesión con un usuario de IAM Identity Center, consulte Inicio de sesión en el portal de acceso de AWS en la Guía del usuario de AWS Sign-In.
Concesión de acceso a usuarios adicionales
-
En IAM Identity Center, cree un conjunto de permisos que siga la práctica recomendada de aplicar permisos de privilegios mínimos.
Para conocer las instrucciones, consulte Create a permission set en la Guía del usuario de AWS IAM Identity Center.
-
Asigne usuarios a un grupo y, a continuación, asigne el acceso de inicio de sesión único al grupo.
Para conocer las instrucciones, consulte Add groups en la Guía del usuario de AWS IAM Identity Center.
Conceder acceso programático
Los usuarios necesitan acceso programático si desean interactuar con AWS fuera de la Consola de administración de AWS. La forma de conceder el acceso programático depende del tipo de usuario que acceda a AWS.
Para conceder acceso programático a los usuarios, seleccione una de las siguientes opciones.
| ¿Qué usuario necesita acceso programático? | Para | Mediante |
|---|---|---|
|
Identidad del personal (Usuarios administrados en el IAM Identity Center) |
Utiliza credenciales temporales para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK y las API de AWS. |
Siga las instrucciones de la interfaz que desea utilizar:
|
| IAM | Utiliza credenciales temporales para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK y las API de AWS. | Siguiendo las instrucciones de Uso de credenciales temporales con recursos de AWS de la Guía del usuario de IAM. |
| IAM | (No recomendado) Utilizar credenciales a largo plazo para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK o las API de AWS. |
Siga las instrucciones de la interfaz que desea utilizar:
|
Siguiente paso
Cómo configurar la 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 la AWS CLI para usarla con Managed Service para 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 tiene la AWS CLI instalada, es posible que tenga que actualizarla para obtener las últimas funcionalidades. Para obtener más información, consulte Installing the AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface. Ejecute el siguiente comando para comprobar la versión de la AWS CLI:
aws --version
Los ejercicios de este tutorial requieren la siguiente versión de la AWS CLI o posterior:
aws-cli/1.16.63
Para configurar la AWS CLI
-
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:
-
Añada un perfil con nombre para el usuario administrador en el archivo
configde la AWS CLI. Se 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 IDaws_secret_access_key =adminuser secret access keyregion =aws-regionPara ver una lista de las regiones de AWS disponibles, consulte Regions and Endpoints en la Referencia general de Amazon Web Services.
nota
El código y los comandos de ejemplo de este tutorial utilizan la región Oeste de EE. UU. (Oregón). Para usar una región diferente, cambie la región en el código y los comandos de este tutorial por la región que desea usar.
-
Verifique la configuración introduciendo el siguiente comando de ayuda en el símbolo del sistema:
aws help
Después de configurar una cuenta de AWS y la AWS CLI, puede probar a realizar el siguiente ejercicio, en el que se configura una aplicación de ejemplo y se prueba la configuración integral.
Siguiente paso
Paso 3: creación y ejecución de una aplicación de Managed Service para Apache Flink
Paso 3: creación y ejecución de una aplicación de Managed Service para Apache Flink
En este ejercicio, deberá crear una aplicación de Managed Service para Apache Flink con flujos de datos como origen y receptor.
Esta sección contiene los siguientes pasos:
Crear dos Amazon Kinesis Data Streams
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.
Se 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)
-
Para crear el primer flujo (
ExampleInputStream), utilice el siguiente comando de la AWS CLIcreate-streamde Amazon Kinesis.$ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser -
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
Escritura de 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 para Python (Boto)
-
Cree un archivo denominado
stock.pycon 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")) -
Más adelante en el tutorial, se ejecuta el script
stock.pypara enviar datos a la aplicación.$ python stock.py
Descargar y consultar el código de Java de streaming de Apache Flink
El código de la aplicación de Java para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
-
Clone el repositorio remoto con el siguiente comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git -
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.javacontiene el métodomainque 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
createSourceFromApplicationPropertiesycreateSinkFromApplicationPropertiespara 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 Uso de propiedades de tiempo de ejecución.
Compilar el código de la aplicación
En esta sección, se utiliza el compilador Apache Maven para crear el código de Java para la aplicación. Para obtener más información sobre la instalación de Apache Maven y el Java Development Kit (JDK), consulte Cumplimiento de los requisitos previos para realizar los ejercicios.
Cómo compilar el código de la aplicación
-
Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Se puede compilar y empaquetar el código de una de las dos formas siguientes:
-
Utilice la herramienta de línea de comandos de Maven. Cree su archivo JAR ejecutando el siguiente comando en el directorio que contiene el archivo
pom.xml:mvn package -Dflink.version=1.11.3 -
Use el entorno de desarrollo. Consulte la documentación de su entorno de desarrollo para obtener más información.
nota
El código fuente proporcionado se basa en bibliotecas de Java 11. Asegúrese de que la versión Java de su proyecto sea 11.
Se puede cargar el paquete como un archivo JAR o puede comprimir el paquete y cargarlo como un archivo ZIP. Si crea su aplicación mediante la AWS CLI, debe especificar el tipo de contenido del código (JAR o ZIP).
-
-
Si hay errores al compilar, verifique que la variable de entorno
JAVA_HOMEse ha configurado correctamente.
Si la aplicación se compila correctamente, se crea el siguiente archivo:
target/aws-kinesis-analytics-java-apps-1.0.jar
Cargar el código de 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
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. -
Elija Crear bucket.
-
Escriba
ka-app-code-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.<username> -
En el paso Configurar opciones, deje los ajustes tal y como están y elija Siguiente.
-
En el paso Establecer permisos, deje los ajustes tal y como están y elija Siguiente.
-
Elija Crear bucket.
-
En la consola de Amazon S3, elija el bucket ka-app-code-
<username>y seleccione Subir. -
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
aws-kinesis-analytics-java-apps-1.0.jarque creó en el paso anterior. Elija Siguiente. -
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.
Crear y ejecutar la aplicación de Managed Service para Apache Flink
Se puede crear y ejecutar una aplicación de Managed Service para Apache Flink mediante la consola o la AWS CLI.
nota
Al crear la aplicación mediante la consola, se crean sus recursos de AWS Identity and Access Management (IAM) y Registros de Amazon CloudWatch en su nombre. Si crea la aplicación mediante la AWS CLI, debe crear estos recursos por separado.
Creación y ejecución de 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
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.
-
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).
-
-
Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM.
kinesis-analytics-MyApplication-us-west-2 -
Elija Crear aplicación.
nota
Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:
-
Política:
kinesis-analytics-service-MyApplication-us-west-2 -
Rol: :
kinesisanalytics-MyApplication-us-west-2
Modificar la política de IAM
Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Elija Políticas. Elija la política
kinesis-analytics-service-MyApplication-us-west-2que la consola creó en su nombre en la sección anterior. -
En la página Resumen, elija Editar política. Seleccione la pestaña JSON.
-
Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (
012345678901) por el ID de su cuenta.
Configurar la aplicación
-
En la página MyApplication, elija Configurar.
-
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.
-
-
En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar rol de IAM
kinesis-analytics-MyApplication-us-west-2. -
En Propiedades, en ID de grupo, escriba
ProducerConfigProperties. -
Escriba las siguientes propiedades y valores de la aplicación:
ID de grupo Clave Valor ProducerConfigPropertiesflink.inputstream.initposLATESTProducerConfigPropertiesaws.regionus-west-2ProducerConfigPropertiesAggregationEnabledfalse -
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
En Registro de CloudWatch, seleccione la casilla de verificación Habilitar.
-
Elija Actualizar.
nota
Al activar el registro de Amazon CloudWatch, Managed Service para Apache Flink crea un grupo de registro y un flujo de registro. 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.
Detener la aplicación
En la página Mi aplicación, elija Detener. Confirme la acción.
Actualizar la aplicación
Mediante la consola, puede actualizar la configuración de la aplicación, tal como sus propiedades, ajustes de monitorización y la ubicación o el nombre de archivo JAR de la aplicación. También puede volver a cargar el JAR de la aplicación del bucket de Amazon S3 si necesita actualizar el código de la aplicación.
En la página MyApplication, elija Configurar. Actualice la configuración de la aplicación y elija Actualizar.
Crear y ejecutar la aplicación (AWS CLI)
En esta sección, se utiliza AWS CLI para crear y ejecutar la aplicación Managed Service para Apache Flink. Managed Service para Apache Flink utiliza el comando kinesisanalyticsv2 de la AWS CLI para crear aplicaciones Managed Service para Apache Flink e interactuar con ellas.
Crear una política de permisos
nota
Debe crear una política de permisos y un rol para su aplicación. Si no crea estos recursos de IAM, la aplicación no podrá acceder a sus flujos de datos y de registro.
En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción read en el flujo de origen y otra que concede permisos para las acciones write en el flujo de recepción. A continuación, asocie la política a un rol de IAM (que se crea en la siguiente sección). Por lo tanto, cuando Managed Service para Apache Flink asume el rol, el servicio tiene los permisos necesarios para leer desde el flujo de origen y escribir en el flujo de recepción.
Utilice el siguiente código para crear la política de permisos AKReadSourceStreamWriteSinkStream. Reemplace por el nombre de usuario que se utilizó para crear el bucket de Amazon S3 para almacenar el código de la aplicación. Sustituya el ID de la cuenta en los nombres de recurso de Amazon (ARN) (username) por el ID de su cuenta.012345678901
Para obtener instrucciones paso a paso para crear una política de permisos, consulte Tutorial: crear y asociar su primera política administrada por el cliente en la Guía del usuario de IAM.
nota
Para acceder a otros servicios de Amazon, puede usar AWS SDK para Java. Managed Service para Apache Flink establece automáticamente las credenciales requeridas por el SDK con las del rol de IAM de ejecución del servicio asociada a su aplicación. No hace falta realizar ningún otro paso.
Creación de un rol de IAM
En esta sección, creará un rol de IAM que la aplicación de Managed Service para Apache Flink pueda asumir para leer un flujo de origen y escribir en el flujo de recepción.
Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se conceden a través del rol de IAM. Cada rol de IAM tiene dos políticas asociadas. La política de confianza concede a Managed Service para Apache Flink permiso para asumir el rol, y la política de permisos determina lo que Managed Service para Apache Flink puede hacer después de asumir el rol.
Usted deberá asociar la política de permisos que ha creado en la sección anterior a este rol.
Cómo crear un rol de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
En el panel de navegación, elija Roles, Crear rol.
-
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.
-
En la página Asociar políticas de permisos, elija Siguiente: Revisión. Asociará políticas de permisos después de crear el rol.
-
En la página Crear rol, escriba
MF-stream-rw-rolecomo Nombre de rol. Elija Crear rol.Ahora ha creado un nuevo rol de IAM llamado
MF-stream-rw-role. A continuación, actualice las políticas de confianza y permisos del rol. -
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.
-
En la página Resumen, elija la pestaña Permisos.
-
Seleccione Asociar políticas.
-
En el campo de búsqueda, escriba
AKReadSourceStreamWriteSinkStream(la política que ha creado en la sección anterior). -
Elija la política AKReadSourceStreamWriteSinkStream y luego elija Asociar política.
-
Ahora ha creado el rol de ejecución de servicio que utiliza la aplicación para obtener acceso a los recursos. Anote el ARN del nuevo rol.
Para obtener instrucciones paso a paso para crear un rol, consulte Creating an IAM Role (Console) en la Guía del usuario de IAM.
Creación de la aplicación de Managed Service para Apache Flink
-
Guarde el siguiente código JSON en un archivo denominado
create_request.json. Cambie el ARN del rol de ejemplo por el ARN del rol que ha creado antes. Reemplace el sufijo del ARN del bucket () por el sufijo que eligió en la sección anterior. Reemplace el ID de la cuenta de ejemplo (username) del rol de ejecución del servicio por el ID de su cuenta.012345678901{ "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" } } ] } } } -
Ejecute la acción
CreateApplicationcon 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. Se 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
-
Guarde el siguiente código JSON en un archivo denominado
start_request.json.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } } -
Ejecute la acción
StartApplicationcon 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. Se puede comprobar las métricas de Managed Service para Apache Flink en la consola de Amazon CloudWatch para comprobar que la aplicación funciona.
Detener la aplicación
En esta sección, se utiliza la acción StopApplication para detener la aplicación.
Cómo detener la aplicación
-
Guarde el siguiente código JSON en un archivo denominado
stop_request.json.{ "ApplicationName": "test" } -
Ejecute la acción
StopApplicationcon 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.
Incorporación de una opción de registro de CloudWatch
Se puede utilizar la AWS CLI para añadir un flujo de registro de Amazon CloudWatch a su aplicación. Para obtener más información sobre el uso de registros de CloudWatch con su aplicación, consulte Configuración de registro de aplicación en Managed Service para 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
-
Guarde el siguiente código JSON en un archivo denominado
update_properties_request.json.{"ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } } -
Ejecute la acción
UpdateApplicationcon 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ódigo, utilice la acción UpdateApplication de la AWS CLI.
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 usar la AWS CLI, elimine el paquete de código anterior de su bucket de Amazon S3, cargue la nueva versión y llame a UpdateApplication, 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. Se 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 Crear dos Amazon Kinesis Data Streams.
{ "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 recursos de AWS
Paso 4: Limpiar recursos de AWS
En esta sección se incluyen los procedimientos para eliminar los recursos de AWS creados en el tutorial de Introducción.
Este tema contiene las siguientes secciones:
Eliminación de su aplicación de Managed Service para Apache Flink
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. -
En el panel de Managed Service para Apache Flink, elija MyApplication.
-
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Eliminación de sus flujos de datos de Kinesis
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Kinesis Data Streams, elija ExampleInputStream.
-
En la página ExampleInputStream, elija Eliminar flujo de Kinesis y, a continuación, confirme la eliminación.
-
En la página Flujos de Kinesis, elija ExampleOutputStream, elija Acciones, elija Eliminar y, a continuación, confirme la eliminación.
Eliminación del objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. -
Elija el bucket ka-app-code-
<username>. -
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Eliminación de sus recursos de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
En la barra de navegación, seleccione Políticas.
-
En el control de filtros, introduzca kinesis.
-
Elija la política kinesis-analytics-service-MyApplication-us-west-2.
-
Seleccione Acciones de política y, a continuación, Eliminar.
-
En la barra de navegación, seleccione Roles.
-
Elija el rol kinesis-analytics-MyApplication-us-west-2.
-
Elija Eliminar rol y, a continuación, confirme la eliminación.
Eliminación de sus recursos de CloudWatch
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. -
En la barra de navegación, elija Registros.
-
Elija el grupo de registro /aws/kinesis-analytics/MyApplication.
-
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Siguiente paso
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.
Solución de datos de streaming de AWS para Amazon Kinesis
: La solución de datos de streaming de AWS para Amazon Kinesis configura automáticamente los servicios de AWS necesarios para capturar, almacenar, procesar y entregar fácilmente datos de streaming. La solución ofrece varias opciones para resolver casos de uso de datos de streaming. La opción Managed Service para Apache Flink proporciona un ejemplo de ETL de streaming integral que muestra una aplicación real que ejecuta operaciones analíticas a partir de datos simulados de taxis de Nueva York. La solución configura todos los recursos de AWS necesarios, como los roles y políticas de IAM, un panel de CloudWatch y las alarmas de CloudWatch. Solución de datos de streaming de AWS para Amazon MSK
: La solución de datos de streaming de AWS para Amazon MSK proporciona plantillas de AWS CloudFormation 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á una arquitectura de flujo integral para capturar, analizar y visualizar datos de flujo prácticamente en tiempo real. Usted se propuso mejorar las operaciones de una empresa de taxis de la ciudad de Nueva York. Usted analiza los datos de telemetría de una flota de taxis de la ciudad de Nueva York prácticamente en tiempo real para optimizar las operaciones de su flota. Aprenda Flink: formación práctica
: formación oficial introductoria sobre Apache Flink que le permitirá empezar a crear aplicaciones escalables de ETL de streaming, análisis y basadas en eventos. nota
Tenga en cuenta que Managed Service para Apache Flink no es compatible con la versión de Apache Flink (1.12) utilizada en esta formación. Se puede usar Flink 1.15.2 en Flink Managed Service para Apache Flink.
Ejemplos de código de Apache Flink
: un repositorio en GitHub de una amplia variedad de ejemplos de aplicaciones de Apache Flink.
Introducción: Flink 1.8.2 - Obsolencia
nota
La comunidad de Apache Flink no admite las versiones 1.6, 1.8 y 1.11 de Apache Flink desde hace ya 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 esa fecha, no se podrán crear nuevas aplicaciones para estas versiones de Flink. En este momento, puede seguir ejecutando las aplicaciones existentes. Se puede actualizar sus aplicaciones de forma automática mediante la función de actualizaciones de versiones local de Amazon Managed Service para Apache Flink. Para obtener más información, consulte. Uso de actualizaciones de versión locales para Apache Flink
Este tema contiene una versión del Tutorial Tutorial: introducción al uso de la API de DataStream en Managed Service para Apache Flink que usa Apache Flink 1.8.2.
Temas
Componentes de la aplicación de Managed Service 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 Agregación de orígenes 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 de receptor escribe datos en un flujo de datos de Kinesis, un flujo de Firehose, un bucket de Amazon S3, etc. Para obtener más información, consulte Escritura de datos mediante receptores.
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 realizar los ejercicios
Para completar los pasos de esta guía, debe disponer de lo siguiente:
-
Java Development Kit (JDK), versión 8
. Establezca la variable de entorno JAVA_HOMEpara señalar la ubicación de la instalación del JDK. -
Para usar el conector Apache Flink Kinesis en este tutorial, debe descargar e instalar Apache Flink. Para obtener más información, consulte Uso del conector Apache Flink Kinesis Streams con versiones anteriores de Apache Flink.
-
Se recomienda 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: configuración de una cuenta de AWS y creación de un usuario administrador.
Paso 1: configuración de una cuenta de AWS y creación de un usuario administrador
Cómo crear una Cuenta de AWS
Si no dispone de una Cuenta de AWS, siga estos pasos para crear una.
Procedimiento para registrarse en Cuenta de AWS
Siga las instrucciones que se le indiquen.
Parte del procedimiento de registro consiste en recibir una llamada telefónica o mensaje de texto e indicar un código de verificación en el teclado del teléfono.
Al registrarse en una Cuenta de AWS, se crea un Usuario raíz de la cuenta de AWS. 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 le enviará un correo electrónico de confirmación cuando complete el proceso de registro. Se puede ver la actividad de la cuenta y administrarla en cualquier momento entrando en https://aws.amazon.com/
Creación de un usuario con acceso administrativo
Después de registrarse para obtener una Cuenta de AWS, proteja su Usuario raíz de la cuenta de AWS, habilite AWS IAM Identity Center y cree un usuario administrativo para no usar el usuario raíz en las tareas cotidianas.
Protección de Usuario raíz de la cuenta de AWS
-
Inicie sesión en Consola de administración de AWS
como propietario de la cuenta; para ello, elija Usuario raíz e introduzca el correo electrónico de su Cuenta de AWS. 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.
-
Active la autenticación multifactor (MFA) para el usuario raíz.
Para obtener instrucciones, consulte Habilitación de un dispositivo MFA virtual para su usuario raíz de la Cuenta de AWS (consola) en la Guía del usuario de IAM.
Creación de un usuario con acceso administrativo
-
Activar IAM Identity Center.
Consulte las instrucciones en Activar AWS IAM Identity Center en la Guía del usuario de AWS IAM Identity Center.
-
En IAM Identity Center, conceda acceso administrativo a un usuario.
Para ver un tutorial sobre cómo usar Directorio de IAM Identity Center como origen de identidad, consulte Configuración del acceso de los usuarios con el Directorio de IAM Identity Center predeterminado en la Guía del usuario de AWS IAM Identity Center.
Inicio de sesión como usuario con acceso de administrador
-
Para iniciar sesión con el usuario de IAM Identity Center, use la URL de inicio de sesión que se envió a la dirección de correo electrónico cuando creó el usuario de IAM Identity Center.
Para obtener ayuda para iniciar sesión con un usuario de IAM Identity Center, consulte Inicio de sesión en el portal de acceso de AWS en la Guía del usuario de AWS Sign-In.
Concesión de acceso a usuarios adicionales
-
En IAM Identity Center, cree un conjunto de permisos que siga la práctica recomendada de aplicar permisos de privilegios mínimos.
Para conocer las instrucciones, consulte Create a permission set en la Guía del usuario de AWS IAM Identity Center.
-
Asigne usuarios a un grupo y, a continuación, asigne el acceso de inicio de sesión único al grupo.
Para conocer las instrucciones, consulte Add groups en la Guía del usuario de AWS IAM Identity Center.
Conceder acceso programático
Los usuarios necesitan acceso programático si desean interactuar con AWS fuera de la Consola de administración de AWS. La forma de conceder el acceso programático depende del tipo de usuario que acceda a AWS.
Para conceder acceso programático a los usuarios, seleccione una de las siguientes opciones.
| ¿Qué usuario necesita acceso programático? | Para | Mediante |
|---|---|---|
|
Identidad del personal (Usuarios administrados en el IAM Identity Center) |
Utiliza credenciales temporales para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK y las API de AWS. |
Siga las instrucciones de la interfaz que desea utilizar:
|
| IAM | Utiliza credenciales temporales para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK y las API de AWS. | Siguiendo las instrucciones de Uso de credenciales temporales con recursos de AWS de la Guía del usuario de IAM. |
| IAM | (No recomendado) Utilizar credenciales a largo plazo para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK o las API de AWS. |
Siga las instrucciones de la interfaz que desea utilizar:
|
Paso 2: Configuración de la AWS Command Line Interface (AWS CLI)
En este paso, debe descargar y configurar la AWS CLI para usarla con Managed Service para 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 tiene la AWS CLI instalada, es posible que tenga que actualizarla para obtener las últimas funcionalidades. Para obtener más información, consulte Installing the AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface. Ejecute el siguiente comando para comprobar la versión de la AWS CLI:
aws --version
Los ejercicios de este tutorial requieren la siguiente versión de la AWS CLI o posterior:
aws-cli/1.16.63
Para configurar la AWS CLI
-
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:
-
Añada un perfil con nombre para el usuario administrador en el archivo
configde la AWS CLI. Se 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 IDaws_secret_access_key =adminuser secret access keyregion =aws-regionPara ver una lista de las regiones disponibles, consulte Regiones y puntos de enlace en la Referencia general de Amazon Web Services.
nota
El código y los comandos de ejemplo de este tutorial utilizan la región Oeste de EE. UU. (Oregón). Para usar una región de AWS diferente, cambie la región en el código y los comandos de este tutorial por la región que desea usar.
-
Verifique la configuración introduciendo el siguiente comando de ayuda en el símbolo del sistema:
aws help
Después de configurar una cuenta de AWS y la AWS CLI, puede probar a realizar el siguiente ejercicio, en el que se configura una aplicación de ejemplo y se prueba la configuración integral.
Siguiente paso
Paso 3: creación y ejecución de una aplicación de Managed Service para Apache Flink
Paso 3: creación y ejecución de una aplicación de Managed Service para Apache Flink
En este ejercicio, deberá crear una aplicación de Managed Service para Apache Flink con flujos de datos como origen y receptor.
Esta sección contiene los siguientes pasos:
Crear dos Amazon Kinesis Data Streams
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.
Se 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)
-
Para crear el primer flujo (
ExampleInputStream), utilice el siguiente comando de la AWS CLIcreate-streamde Amazon Kinesis.$ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser -
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
Escritura de 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 para Python (Boto)
-
Cree un archivo denominado
stock.pycon 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")) -
Más adelante en el tutorial, se ejecuta el script
stock.pypara enviar datos a la aplicación.$ python stock.py
Descargar y consultar el código de Java de streaming de Apache Flink
El código de la aplicación de Java para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
-
Clone el repositorio remoto con el siguiente comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git -
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.javacontiene el métodomainque 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
createSourceFromApplicationPropertiesycreateSinkFromApplicationPropertiespara 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 Uso de propiedades de tiempo de ejecución.
Compilar el código de la aplicación
En esta sección, se utiliza el compilador Apache Maven para crear el código de Java para la aplicación. Para obtener más información sobre la instalación de Apache Maven y el Java Development Kit (JDK), consulte Requisitos previos para realizar 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
-
Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Se puede compilar y empaquetar el código de una de las dos formas siguientes:
-
Utilice la herramienta de línea de comandos de Maven. Cree su archivo JAR ejecutando el siguiente comando en el directorio que contiene el archivo
pom.xml:mvn package -Dflink.version=1.8.2 -
Use el entorno de desarrollo. Consulte la documentación de su entorno de desarrollo para obtener más información.
nota
El código fuente proporcionado se basa en bibliotecas de Java 1.8. Asegúrese de que la versión Java de su proyecto sea 1.8.
Se puede cargar el paquete como un archivo JAR o puede comprimir el paquete y cargarlo como un archivo ZIP. Si crea su aplicación mediante la AWS CLI, debe especificar el tipo de contenido del código (JAR o ZIP).
-
-
Si hay errores al compilar, verifique que la variable de entorno
JAVA_HOMEse ha configurado correctamente.
Si la aplicación se compila correctamente, se crea el siguiente archivo:
target/aws-kinesis-analytics-java-apps-1.0.jar
Cargar el código de 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
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. -
Elija Crear bucket.
-
Escriba
ka-app-code-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.<username> -
En el paso Configurar opciones, deje los ajustes tal y como están y elija Siguiente.
-
En el paso Establecer permisos, deje los ajustes tal y como están y elija Siguiente.
-
Elija Crear bucket.
-
En la consola de Amazon S3, elija el bucket ka-app-code-
<username>y seleccione Subir. -
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
aws-kinesis-analytics-java-apps-1.0.jarque creó en el paso anterior. Elija Siguiente. -
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.
Crear y ejecutar la aplicación de Managed Service para Apache Flink
Se puede crear y ejecutar una aplicación de Managed Service para Apache Flink mediante la consola o la AWS CLI.
nota
Al crear la aplicación mediante la consola, se crean sus recursos de AWS Identity and Access Management (IAM) y Registros de Amazon CloudWatch en su nombre. Si crea la aplicación mediante la AWS CLI, debe crear estos recursos por separado.
Creación y ejecución de 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
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.
-
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).
-
-
Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM.
kinesis-analytics-MyApplication-us-west-2 -
Elija Crear aplicación.
nota
Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:
-
Política:
kinesis-analytics-service-MyApplication-us-west-2 -
Rol: :
kinesisanalytics-MyApplication-us-west-2
Modificar la política de IAM
Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Elija Políticas. Elija la política
kinesis-analytics-service-MyApplication-us-west-2que la consola creó en su nombre en la sección anterior. -
En la página Resumen, elija Editar política. Seleccione la pestaña JSON.
-
Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (
012345678901) por el ID de su cuenta.
Configurar la aplicación
-
En la página MyApplication, elija Configurar.
-
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.
-
-
En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM
kinesis-analytics-MyApplication-us-west-2. -
Escriba las siguientes propiedades y valores de la aplicación:
ID de grupo Clave Valor ProducerConfigPropertiesflink.inputstream.initposLATESTProducerConfigPropertiesaws.regionus-west-2ProducerConfigPropertiesAggregationEnabledfalse -
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
En Registro de CloudWatch, seleccione la casilla de verificación Habilitar.
-
Elija Actualizar.
nota
Al activar el registro de Amazon CloudWatch, Managed Service para Apache Flink crea un grupo de registro y un flujo de registro. 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
-
En la página Mi aplicación, elija Ejecutar. Confirme la acción.
-
Cuando la aplicación se está ejecutando, actualice la página. La consola muestra el Gráfico de la aplicación.
Detener la aplicación
En la página Mi aplicación, elija Detener. Confirme la acción.
Actualizar la aplicación
Mediante la consola, puede actualizar la configuración de la aplicación, tal como sus propiedades, ajustes de monitorización y la ubicación o el nombre de archivo JAR de la aplicación. También puede volver a cargar el JAR de la aplicación del bucket de Amazon S3 si necesita actualizar el código de la aplicación.
En la página MyApplication, elija Configurar. Actualice la configuración de la aplicación y elija Actualizar.
Crear y ejecutar la aplicación (AWS CLI)
En esta sección, se utiliza AWS CLI para crear y ejecutar la aplicación Managed Service para Apache Flink. Managed Service para Apache Flink utiliza el comando de la AWS CLI de kinesisanalyticsv2 para crear e interactuar con las aplicaciones de Managed Service para Apache Flink.
Crear una política de permisos
nota
Debe crear una política de permisos y un rol para su aplicación. Si no crea estos recursos de IAM, la aplicación no podrá acceder a sus flujos de datos y de registro.
En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción read en el flujo de origen y otra que concede permisos para las acciones write en el flujo de recepción. A continuación, asocie la política a un rol de IAM (que se crea en la siguiente sección). Por lo tanto, cuando Managed Service para Apache Flink asume el rol, el servicio tiene los permisos necesarios para leer desde el flujo de origen y escribir en el flujo de recepción.
Utilice el siguiente código para crear la política de permisos AKReadSourceStreamWriteSinkStream. Reemplace por el nombre de usuario que se utilizó para crear el bucket de Amazon S3 para almacenar el código de la aplicación. Sustituya el ID de la cuenta en los nombres de recurso de Amazon (ARN) (username) por el ID de su cuenta.012345678901
Para obtener instrucciones paso a paso para crear una política de permisos, consulte Tutorial: crear y asociar su primera política administrada por el cliente en la Guía del usuario de IAM.
nota
Para acceder a otros servicios de Amazon, puede usar AWS SDK para Java. Managed Service para Apache Flink establece automáticamente las credenciales requeridas por el SDK con las del rol de IAM de ejecución del servicio asociada a su aplicación. No hace falta realizar ningún otro paso.
Creación de un rol de IAM
En esta sección, creará un rol de IAM que la aplicación de Managed Service para Apache Flink pueda asumir para leer un flujo de origen y escribir en el flujo de recepción.
Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se conceden a través del rol de IAM. Cada rol de IAM tiene dos políticas asociadas. La política de confianza concede a Managed Service para Apache Flink permiso para asumir el rol, y la política de permisos determina lo que Managed Service para Apache Flink puede hacer después de asumir el rol.
Usted deberá asociar la política de permisos que ha creado en la sección anterior a este rol.
Cómo crear un rol de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
En el panel de navegación, elija Roles, Crear rol.
-
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.
-
En la página Asociar políticas de permisos, elija Siguiente: Revisión. Asociará políticas de permisos después de crear el rol.
-
En la página Crear rol, escriba
MF-stream-rw-rolecomo Nombre de rol. Elija Crear rol.Ahora ha creado un nuevo rol de IAM llamado
MF-stream-rw-role. A continuación, actualice las políticas de confianza y permisos del rol. -
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.
-
En la página Resumen, elija la pestaña Permisos.
-
Seleccione Asociar políticas.
-
En el campo de búsqueda, escriba
AKReadSourceStreamWriteSinkStream(la política que ha creado en la sección anterior). -
Elija la política AKReadSourceStreamWriteSinkStream y luego elija Asociar política.
-
Ahora ha creado el rol de ejecución de servicio que utiliza la aplicación para obtener acceso a los recursos. Anote el ARN del nuevo rol.
Para obtener instrucciones paso a paso para crear un rol, consulte Creating an IAM Role (Console) en la Guía del usuario de IAM.
Creación de la aplicación de Managed Service para Apache Flink
-
Guarde el siguiente código JSON en un archivo denominado
create_request.json. Cambie el ARN del rol de ejemplo por el ARN del rol que ha creado antes. Reemplace el sufijo del ARN del bucket () por el sufijo que eligió en la sección anterior. Reemplace el ID de la cuenta de ejemplo (username) del rol de ejecución del servicio por el ID de su cuenta.012345678901{ "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" } } ] } } } -
Ejecute la acción
CreateApplicationcon 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. Se 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
-
Guarde el siguiente código JSON en un archivo denominado
start_request.json.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } } -
Ejecute la acción
StartApplicationcon 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. Se puede comprobar las métricas de Managed Service para Apache Flink en la consola de Amazon CloudWatch para comprobar que la aplicación funciona.
Detener la aplicación
En esta sección, se utiliza la acción StopApplication para detener la aplicación.
Cómo detener la aplicación
-
Guarde el siguiente código JSON en un archivo denominado
stop_request.json.{ "ApplicationName": "test" } -
Ejecute la acción
StopApplicationcon 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.
Incorporación de una opción de registro de CloudWatch
Se puede utilizar la AWS CLI para añadir un flujo de registro de Amazon CloudWatch a su aplicación. Para obtener más información sobre el uso de registros de CloudWatch con su aplicación, consulte Configuración de registro de aplicación en Managed Service para 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
-
Guarde el siguiente código JSON en un archivo denominado
update_properties_request.json.{"ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } } -
Ejecute la acción
UpdateApplicationcon 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ódigo, utilice la acción UpdateApplication de la AWS CLI.
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 usar la AWS CLI, elimine el paquete de código anterior de su bucket de Amazon S3, cargue la nueva versión y llame a UpdateApplication, 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. Se 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 Crear dos Amazon Kinesis Data Streams.
{ "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 recursos de AWS
Paso 4: Limpiar recursos de AWS
En esta sección se incluyen los procedimientos para eliminar los recursos de AWS creados en el tutorial de Introducción.
Este tema contiene las siguientes secciones:
Eliminación de su aplicación de Managed Service para Apache Flink
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. -
En el panel de Managed Service para Apache Flink, elija MyApplication.
-
Elija Configurar.
-
En la sección Instantáneas, seleccione Deshabilitar y, a continuación, seleccione Actualizar.
-
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Eliminación de sus flujos de datos de Kinesis
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Kinesis Data Streams, elija ExampleInputStream.
-
En la página ExampleInputStream, elija Eliminar flujo de Kinesis y, a continuación, confirme la eliminación.
-
En la página Flujos de Kinesis, elija ExampleOutputStream, elija Acciones, elija Eliminar y, a continuación, confirme la eliminación.
Eliminación del objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. -
Elija el bucket ka-app-code-
<username>. -
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Eliminación de sus recursos de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
En la barra de navegación, seleccione Políticas.
-
En el control de filtros, introduzca kinesis.
-
Elija la política kinesis-analytics-service-MyApplication-us-west-2.
-
Seleccione Acciones de política y, a continuación, Eliminar.
-
En la barra de navegación, seleccione Roles.
-
Elija el rol kinesis-analytics-MyApplication-us-west-2.
-
Elija Eliminar rol y, a continuación, confirme la eliminación.
Eliminación de sus recursos de CloudWatch
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. -
En la barra de navegación, elija Registros.
-
Elija el grupo de registro /aws/kinesis-analytics/MyApplication.
-
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Introducción: Flink 1.6.2 - Obsolencia
nota
La comunidad de Apache Flink no admite las versiones 1.6, 1.8 y 1.11 de Apache Flink desde hace ya 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 esa fecha, no se podrán crear nuevas aplicaciones para estas versiones de Flink. En este momento, puede seguir ejecutando las aplicaciones existentes. Se puede actualizar sus aplicaciones de forma automática mediante la función de actualizaciones de versiones local de Amazon Managed Service para Apache Flink. Para obtener más información, consulte Uso de actualizaciones de versión locales para Apache Flink.
Este tema contiene una versión del tutorial Tutorial: introducción al uso de la API de DataStream en Managed Service para Apache Flink que usa Apache Flink 1.6.2.
Temas
Componentes de una aplicación de Managed Service 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 Agregación de orígenes 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 de receptor escribe datos en un flujo de datos de Kinesis, un flujo de Firehose, un bucket de Amazon S3, etc. Para obtener más información, consulte Escritura de datos mediante receptores.
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 realizar los ejercicios
Para completar los pasos de esta guía, debe disponer de lo siguiente:
-
Java Development Kit
(JDK), versión 8. Establezca la variable de entorno JAVA_HOMEpara señalar la ubicación de la instalación del JDK. -
Se recomienda 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: configuración de una cuenta de AWS y creación de un usuario administrador.
Paso 1: configuración de una cuenta de AWS y creación de un usuario administrador
Cómo crear una Cuenta de AWS
Si no dispone de una Cuenta de AWS, siga estos pasos para crear una.
Procedimiento para registrarse en Cuenta de AWS
Siga las instrucciones que se le indiquen.
Parte del procedimiento de registro consiste en recibir una llamada telefónica o mensaje de texto e indicar un código de verificación en el teclado del teléfono.
Al registrarse en una Cuenta de AWS, se crea un Usuario raíz de la cuenta de AWS. 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 le enviará un correo electrónico de confirmación cuando complete el proceso de registro. Se puede ver la actividad de la cuenta y administrarla en cualquier momento entrando en https://aws.amazon.com/
Creación de un usuario con acceso administrativo
Después de registrarse para obtener una Cuenta de AWS, proteja su Usuario raíz de la cuenta de AWS, habilite AWS IAM Identity Center y cree un usuario administrativo para no usar el usuario raíz en las tareas cotidianas.
Protección de Usuario raíz de la cuenta de AWS
-
Inicie sesión en Consola de administración de AWS
como propietario de la cuenta; para ello, elija Usuario raíz e introduzca el correo electrónico de su Cuenta de AWS. 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.
-
Active la autenticación multifactor (MFA) para el usuario raíz.
Para obtener instrucciones, consulte Habilitación de un dispositivo MFA virtual para su usuario raíz de la Cuenta de AWS (consola) en la Guía del usuario de IAM.
Creación de un usuario con acceso administrativo
-
Activar IAM Identity Center.
Consulte las instrucciones en Activar AWS IAM Identity Center en la Guía del usuario de AWS IAM Identity Center.
-
En IAM Identity Center, conceda acceso administrativo a un usuario.
Para ver un tutorial sobre cómo usar Directorio de IAM Identity Center como origen de identidad, consulte Configuración del acceso de los usuarios con el Directorio de IAM Identity Center predeterminado en la Guía del usuario de AWS IAM Identity Center.
Inicio de sesión como usuario con acceso de administrador
-
Para iniciar sesión con el usuario de IAM Identity Center, use la URL de inicio de sesión que se envió a la dirección de correo electrónico cuando creó el usuario de IAM Identity Center.
Para obtener ayuda para iniciar sesión con un usuario de IAM Identity Center, consulte Inicio de sesión en el portal de acceso de AWS en la Guía del usuario de AWS Sign-In.
Concesión de acceso a usuarios adicionales
-
En IAM Identity Center, cree un conjunto de permisos que siga la práctica recomendada de aplicar permisos de privilegios mínimos.
Para conocer las instrucciones, consulte Create a permission set en la Guía del usuario de AWS IAM Identity Center.
-
Asigne usuarios a un grupo y, a continuación, asigne el acceso de inicio de sesión único al grupo.
Para conocer las instrucciones, consulte Add groups en la Guía del usuario de AWS IAM Identity Center.
Conceder acceso programático
Los usuarios necesitan acceso programático si desean interactuar con AWS fuera de la Consola de administración de AWS. La forma de conceder el acceso programático depende del tipo de usuario que acceda a AWS.
Para conceder acceso programático a los usuarios, seleccione una de las siguientes opciones.
| ¿Qué usuario necesita acceso programático? | Para | Mediante |
|---|---|---|
|
Identidad del personal (Usuarios administrados en el IAM Identity Center) |
Utiliza credenciales temporales para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK y las API de AWS. |
Siga las instrucciones de la interfaz que desea utilizar:
|
| IAM | Utiliza credenciales temporales para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK y las API de AWS. | Siguiendo las instrucciones de Uso de credenciales temporales con recursos de AWS de la Guía del usuario de IAM. |
| IAM | (No recomendado) Utilizar credenciales a largo plazo para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK o las API de AWS. |
Siga las instrucciones de la interfaz que desea utilizar:
|
Paso 2: Configuración de la AWS Command Line Interface (AWS CLI)
En este paso, debe descargar y configurar la AWS CLI para usarla con Managed Service para 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 tiene la AWS CLI instalada, es posible que tenga que actualizarla para obtener las últimas funcionalidades. Para obtener más información, consulte Installing the AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface. Ejecute el siguiente comando para comprobar la versión de la AWS CLI:
aws --version
Los ejercicios de este tutorial requieren la siguiente versión de la AWS CLI o posterior:
aws-cli/1.16.63
Para configurar la AWS CLI
-
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:
-
Añada un perfil con nombre para el usuario administrador en el archivo
configde la AWS CLI. 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 IDaws_secret_access_key =adminuser secret access keyregion =aws-regionPara ver una lista de las regiones de AWS disponibles, consulte Regions and Endpoints en la Referencia general de Amazon Web Services.
nota
El código y los comandos de ejemplo de este tutorial utilizan la región Oeste de EE. UU. (Oregón). Para usar una región diferente, cambie la región en el código y los comandos de este tutorial por la región que desea usar.
-
Verifique la configuración introduciendo el siguiente comando de ayuda en el símbolo del sistema:
aws help
Después de configurar una cuenta de AWS y la AWS CLI, puede probar a realizar el siguiente ejercicio, en el que se configura una aplicación de ejemplo y se prueba la configuración integral.
Siguiente paso
Paso 3: creación y ejecución de una aplicación de Managed Service para Apache Flink
Paso 3: creación y ejecución de una aplicación de Managed Service para Apache Flink
En este ejercicio, deberá crear una aplicación de Managed Service para Apache Flink con flujos de datos como origen y receptor.
Esta sección contiene los siguientes pasos:
Crear dos Amazon Kinesis Data Streams
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)
-
Para crear el primer flujo (
ExampleInputStream), utilice el siguiente comando de la AWS CLIcreate-streamde Amazon Kinesis.$ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser -
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
Escritura de 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 para Python (Boto)
-
Cree un archivo denominado
stock.pycon 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")) -
Más adelante en el tutorial, se ejecuta el script
stock.pypara enviar datos a la aplicación.$ python stock.py
Descargar y consultar el código de Java de streaming de Apache Flink
El código de la aplicación de Java para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
Clone el repositorio remoto con el siguiente comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.gitVaya 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.javacontiene el métodomainque 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
createSourceFromApplicationPropertiesycreateSinkFromApplicationPropertiespara 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 Uso de propiedades de tiempo de ejecución.
Compilar el código de la aplicación
En esta sección, se utiliza el compilador Apache Maven para crear el código de Java para la aplicación. Para obtener más información sobre la instalación de Apache Maven y el Java Development Kit (JDK), consulte Requisitos previos para realizar 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
-
Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Puede compilar y empaquetar el código de una de las dos formas siguientes:
Utilice la herramienta de línea de comandos de Maven. Cree su archivo JAR ejecutando el siguiente comando en el directorio que contiene el archivo
pom.xml:mvn packagenota
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 Especificación de la versión de Apache Flink de su aplicación.
Use el entorno de desarrollo. Consulte la documentación de su entorno de desarrollo para obtener más información.
Puede cargar el paquete como un archivo JAR o puede comprimir el paquete y cargarlo como un archivo ZIP. Si crea su aplicación mediante la AWS CLI, debe especificar el tipo de contenido del código (JAR o ZIP).
-
Si hay errores al compilar, verifique que la variable de entorno
JAVA_HOMEse ha configurado correctamente.
Si la aplicación se compila correctamente, se crea el siguiente archivo:
target/aws-kinesis-analytics-java-apps-1.0.jar
Cargar el código de 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
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. -
Elija Crear bucket.
-
Escriba
ka-app-code-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.<username> -
En el paso Configurar opciones, deje los ajustes tal y como están y elija Siguiente.
-
En el paso Establecer permisos, deje los ajustes tal y como están y elija Siguiente.
-
Elija Crear bucket.
-
En la consola de Amazon S3, elija el bucket ka-app-code-
<username>y seleccione Subir. -
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
aws-kinesis-analytics-java-apps-1.0.jarque creó en el paso anterior. Elija Siguiente. -
En el paso Establecer permisos, deje los ajustes tal y como están. Elija Siguiente.
-
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.
Crear y ejecutar la aplicación de Managed Service para Apache Flink
Puede crear y ejecutar una aplicación de Managed Service para Apache Flink mediante la consola o la AWS CLI.
nota
Al crear la aplicación mediante la consola, se crean sus recursos de AWS Identity and Access Management (IAM) y Registros de Amazon CloudWatch en su nombre. Si crea la aplicación mediante la AWS CLI, debe crear estos recursos por separado.
Creación y ejecución de 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
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.
-
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.
-
-
Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM.
kinesis-analytics-MyApplication-us-west-2 -
Elija Crear aplicación.
nota
Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:
-
Política:
kinesis-analytics-service-MyApplication-us-west-2 -
Rol: :
kinesisanalytics-MyApplication-us-west-2
Modificar la política de IAM
Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Elija Políticas. Elija la política
kinesis-analytics-service-MyApplication-us-west-2que la consola creó en su nombre en la sección anterior. -
En la página Resumen, elija Editar política. Seleccione la pestaña JSON.
-
Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (
012345678901) por el ID de su cuenta.
Configurar la aplicación
-
En la página MyApplication, elija Configurar.
-
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.
-
-
En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM
kinesis-analytics-MyApplication-us-west-2. -
Escriba las siguientes propiedades y valores de la aplicación:
ID de grupo Clave Valor ProducerConfigPropertiesflink.inputstream.initposLATESTProducerConfigPropertiesaws.regionus-west-2ProducerConfigPropertiesAggregationEnabledfalse -
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
En Registro de CloudWatch, seleccione la casilla de verificación Habilitar.
-
Elija Actualizar.
nota
Al activar el registro de Amazon CloudWatch, Managed Service para Apache Flink crea un grupo de registro y un flujo de registro. 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
-
En la página Mi aplicación, elija Ejecutar. Confirme la acción.
-
Cuando la aplicación se está ejecutando, actualice la página. La consola muestra el Gráfico de la aplicación.
Detener la aplicación
En la página Mi aplicación, elija Detener. Confirme la acción.
Actualizar la aplicación
Mediante la consola, puede actualizar la configuración de la aplicación, tal como sus propiedades, ajustes de monitorización y la ubicación o el nombre de archivo JAR de la aplicación. También puede volver a cargar el JAR de la aplicación del bucket de Amazon S3 si necesita actualizar el código de la aplicación.
En la página MyApplication, elija Configurar. Actualice la configuración de la aplicación y elija Actualizar.
Crear y ejecutar la aplicación (AWS CLI)
En esta sección, se utiliza AWS CLI para crear y ejecutar la aplicación Managed Service para Apache Flink. Managed Service para Apache Flink utiliza el comando de la AWS CLI de kinesisanalyticsv2 para crear e interactuar con las aplicaciones de Managed Service para Apache Flink.
Creación de una política de permisos
En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción read en el flujo de origen y otra que concede permisos para las acciones write en el flujo de recepción. A continuación, asocie la política a un rol de IAM (que se crea en la siguiente sección). Por lo tanto, cuando Managed Service para Apache Flink asume el rol, el servicio tiene los permisos necesarios para leer desde el flujo de origen y escribir en el flujo de recepción.
Utilice el siguiente código para crear la política de permisos AKReadSourceStreamWriteSinkStream. Reemplace por el nombre de usuario que se utilizó para crear el bucket de Amazon S3 para almacenar el código de la aplicación. Sustituya el ID de la cuenta en los nombres de recurso de Amazon (ARN) (username) por el ID de su cuenta.012345678901
Para obtener instrucciones paso a paso para crear una política de permisos, consulte Tutorial: crear y asociar su primera política administrada por el cliente en la Guía del usuario de IAM.
nota
Para acceder a otros servicios de Amazon, puede usar AWS SDK para Java. Managed Service para Apache Flink establece automáticamente las credenciales requeridas por el SDK con las del rol de IAM de ejecución del servicio asociada a su aplicación. No hace falta realizar ningún otro paso.
Creación de un rol de IAM
En esta sección, creará un rol de IAM que la aplicación de Managed Service para Apache Flink pueda asumir para leer un flujo de origen y escribir en el flujo de recepción.
Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se conceden a través del rol de IAM. Cada rol de IAM tiene dos políticas asociadas. La política de confianza concede a Managed Service para Apache Flink permiso para asumir el rol, y la política de permisos determina lo que Managed Service para Apache Flink puede hacer después de asumir el rol.
Usted deberá asociar la política de permisos que ha creado en la sección anterior a este rol.
Cómo crear un rol de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
En el panel de navegación, elija Roles, Crear rol.
-
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.
-
En la página Asociar políticas de permisos, elija Siguiente: Revisión. Asociará políticas de permisos después de crear el rol.
-
En la página Crear rol, escriba
MF-stream-rw-rolecomo Nombre de rol. Elija Crear rol.Ahora ha creado un nuevo rol de IAM llamado
MF-stream-rw-role. A continuación, actualice las políticas de confianza y permisos del rol. -
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.
-
En la página Resumen, elija la pestaña Permisos.
-
Seleccione Asociar políticas.
-
En el campo de búsqueda, escriba
AKReadSourceStreamWriteSinkStream(la política que ha creado en la sección anterior). -
Elija la política AKReadSourceStreamWriteSinkStream y luego elija Asociar política.
-
Ahora ha creado el rol de ejecución de servicio que utiliza la aplicación para obtener acceso a los recursos. Anote el ARN del nuevo rol.
Para obtener instrucciones paso a paso para crear un rol, consulte Creating an IAM Role (Console) en la Guía del usuario de IAM.
Creación de la aplicación de Managed Service para Apache Flink
-
Guarde el siguiente código JSON en un archivo denominado
create_request.json. Cambie el ARN del rol de ejemplo por el ARN del rol que ha creado antes. Reemplace el sufijo del ARN del bucket () por el sufijo que eligió en la sección anterior. Reemplace el ID de la cuenta de ejemplo (username) del rol de ejecución del servicio por el ID de su cuenta.012345678901{ "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" } } ] } } } -
Ejecute la acción
CreateApplicationcon 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. Se 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
-
Guarde el siguiente código JSON en un archivo denominado
start_request.json.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } } -
Ejecute la acción
StartApplicationcon 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. Se puede comprobar las métricas de Managed Service para Apache Flink en la consola de Amazon CloudWatch para comprobar que la aplicación funciona.
Detener la aplicación
En esta sección, se utiliza la acción StopApplication para detener la aplicación.
Cómo detener la aplicación
-
Guarde el siguiente código JSON en un archivo denominado
stop_request.json.{ "ApplicationName": "test" } -
Ejecute la acción
StopApplicationcon 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.
Incorporación de una opción de registro de CloudWatch
Se puede utilizar la AWS CLI para añadir un flujo de registro de Amazon CloudWatch a su aplicación. Para obtener más información sobre el uso de registros de CloudWatch con su aplicación, consulte Configuración de registro de aplicación en Managed Service para 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
-
Guarde el siguiente código JSON en un archivo denominado
update_properties_request.json.{"ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } } -
Ejecute la acción
UpdateApplicationcon 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ódigo, utilice la acción UpdateApplication de la AWS CLI.
Para usar la AWS CLI, elimine el paquete de código anterior de su bucket de Amazon S3, cargue la nueva versión y llame a UpdateApplication, especificando el mismo nombre de bucket y objeto 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. Se 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 Crear dos Amazon Kinesis Data Streams.
{ "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 recursos de AWS
En esta sección se incluyen los procedimientos para eliminar los recursos de AWS creados en el tutorial de Introducción.
Este tema contiene las siguientes secciones:
Eliminación de su aplicación de Managed Service para Apache Flink
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel de Managed Service para Apache Flink, elija MyApplication.
Elija Configurar.
En la sección Instantáneas, seleccione Deshabilitar y, a continuación, seleccione Actualizar.
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Eliminación de sus flujos de datos de Kinesis
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
En el panel de Kinesis Data Streams, elija ExampleInputStream.
En la página ExampleInputStream, elija Eliminar flujo de Kinesis y, a continuación, confirme la eliminación.
En la página Flujos de Kinesis, elija ExampleOutputStream, elija Acciones, elija Eliminar y, a continuación, confirme la eliminación.
Eliminación del objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el bucket ka-app-code-
<username>.Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Eliminación de sus recursos de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. En la barra de navegación, seleccione Políticas.
En el control de filtros, introduzca kinesis.
Elija la política kinesis-analytics-service-MyApplication-us-west-2.
Seleccione Acciones de política y, a continuación, Eliminar.
En la barra de navegación, seleccione Roles.
Elija el rol kinesis-analytics-MyApplication-us-west-2.
Elija Eliminar rol y, a continuación, confirme la eliminación.
Eliminación de sus recursos de CloudWatch
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registro /aws/kinesis-analytics/MyApplication.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Ejemplos de versiones anteriores (heredadas) de Managed Service para Apache Flink
nota
Para ver ejemplos actuales, consulte Ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink.
En esta sección se proporcionan ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink. Incluyen código de ejemplo e instrucciones paso a paso para ayudarle a crear aplicaciones de Managed Service para Apache Flink y probar los resultados.
Antes de explorar estos ejemplos, se recomienda 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 se utiliza una región diferente, actualice el código de la aplicación, los comandos y los roles de IAM en concordancia.
Ejemplos de la API de DataStream
En los siguientes ejemplos se muestra cómo crear aplicaciones mediante la API Amazon Flink DataStream.
Temas
Ejemplo: ventana de salto de tamaño constante
nota
Para ver ejemplos actuales, consulte Ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink.
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: introducción al uso de la API de DataStream en Managed Service para Apache Flink.
Este tema contiene las siguientes secciones:
Creación de 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 (
ExampleInputStreamyExampleOutputStream)Un bucket de Amazon S3 para almacenar el código de la aplicación (
ka-app-code-)<username>
Se 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
ExampleInputStreamyExampleOutputStream.¿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>
Escritura de 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 para Python (Boto)
-
Cree un archivo denominado
stock.pycon 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')) -
Ejecute el script
stock.py:$ python stock.pyMantenga el script en ejecución mientras completa el resto del tutorial.
Descarga y examen del código de la aplicación
El código de la aplicación de Java para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git
. Clone el repositorio remoto con el siguiente comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.gitVaya 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 onwardLa aplicación utiliza el operador
timeWindowpara 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());
Compilar el código de la aplicación
Para compilar la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale Java y Maven. Para obtener más información, consulte Cumplimiento de los requisitos previos obligatorios en el tutorial de Tutorial: introducción al uso de la API de DataStream en Managed Service para Apache Flink.
Compile la aplicación con el siguiente comando:
mvn package -Dflink.version=1.15.3nota
El código fuente proporcionado se basa en bibliotecas de Java 11.
Al compilar la aplicación, se crea el archivo JAR de la aplicación (target/aws-kinesis-analytics-java-apps-1.0.jar).
Cargar el código de 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 Creación de recursos dependientes.
-
En la consola de Amazon S3, elija el bucket ka-app-code-
<username>y seleccione Subir. -
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
aws-kinesis-analytics-java-apps-1.0.jarque creó en el paso anterior. 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.
Crear y ejecutar la aplicación de Managed Service para Apache Flink
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.
-
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).
-
-
Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM.
kinesis-analytics-MyApplication-us-west-2 -
Elija Crear aplicación.
nota
Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:
-
Política:
kinesis-analytics-service-MyApplication-us-west-2 -
Rol: :
kinesisanalytics-MyApplication-us-west-2
Modificar la política de IAM
Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Elija Políticas. Elija la política
kinesis-analytics-service-MyApplication-us-west-2que la consola creó en su nombre en la sección anterior. -
En la página Resumen, elija Editar política. Seleccione la pestaña JSON.
-
Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (
012345678901) por el ID de su cuenta.
Configurar la aplicación
-
En la página MyApplication, elija Configurar.
-
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.
-
-
En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM
kinesis-analytics-MyApplication-us-west-2. -
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
En Registro de CloudWatch, seleccione la casilla de verificación Habilitar.
-
Elija Actualizar.
nota
Cuando se elige habilitar registros de CloudWatch, Managed Service para Apache Flink crea un grupo de registro y un flujo de registro para usted. 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
-
En la página Mi aplicación, elija Ejecutar. Deje seleccionada la opción Ejecutar sin instantánea y confirme la acción.
-
Cuando la aplicación se está ejecutando, actualice la página. La consola muestra el Gráfico de la aplicación.
Se puede comprobar las métricas de Managed Service para Apache Flink en la consola de CloudWatch para verificar que la aplicación funciona.
Limpieza de recursos de AWS
En esta sección se incluyen los procedimientos para limpiar los recursos de AWS creados en el tutorial Ventana de salto de tamaño constante.
Este tema contiene las siguientes secciones:
Eliminación de su aplicación de Managed Service para Apache Flink
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
En el panel de Managed Service para Apache Flink, elija MyApplication.
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Eliminación de sus flujos de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel de Kinesis Data Streams, elija ExampleInputStream.
En la página ExampleInputStream, elija Eliminar flujo de Kinesis y, a continuación, confirme la eliminación.
En la página Flujos de Kinesis, elija ExampleOutputStream, elija Acciones, elija Eliminar y, a continuación, confirme la eliminación.
Eliminación del objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el bucket ka-app-code-
<username>.Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Eliminación de sus recursos de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. En la barra de navegación, seleccione Políticas.
En el control de filtros, introduzca kinesis.
Elija la política kinesis-analytics-service-MyApplication-us-west-2.
Seleccione Acciones de política y, a continuación, Eliminar.
En la barra de navegación, seleccione Roles.
Elija el rol kinesis-analytics-MyApplication-us-west-2.
Elija Eliminar rol y, a continuación, confirme la eliminación.
Eliminación de sus recursos de CloudWatch
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registro /aws/kinesis-analytics/MyApplication.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Ejemplo: ventana deslizante
nota
Para ver ejemplos actuales, consulte Ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink.
nota
Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: introducción al uso de la API de DataStream en Managed Service para Apache Flink.
Este tema contiene las siguientes secciones:
Creación de 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 (
ExampleInputStreamyExampleOutputStream).Un bucket de Amazon S3 para almacenar el código de la aplicación (
ka-app-code-)<username>
Se 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
ExampleInputStreamyExampleOutputStream.¿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>
Escritura de 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 para Python (Boto)
-
Cree un archivo denominado
stock.pycon 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")) -
Ejecute el script
stock.py:$ python stock.pyMantenga el script en ejecución mientras completa el resto del tutorial.
Descarga y examen del código de la aplicación
El código de la aplicación de Java para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git
. Clone el repositorio remoto con el siguiente comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.gitVaya 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
timeWindowpara 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 onwardLa aplicación utiliza el operador
timeWindowpara 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());
Compilar el código de la aplicación
Para compilar la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale Java y Maven. Para obtener más información, consulte Cumplimiento de los requisitos previos obligatorios en el tutorial de Tutorial: introducción al uso de la API de DataStream en Managed Service para Apache Flink.
Compile la aplicación con el siguiente comando:
mvn package -Dflink.version=1.15.3nota
El código fuente proporcionado se basa en bibliotecas de Java 11.
Al compilar la aplicación, se crea el archivo JAR de la aplicación (target/aws-kinesis-analytics-java-apps-1.0.jar).
Cargar el código de 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 Creación de recursos dependientes.
-
En la consola de Amazon S3, elija el bucket ka-app-code-
<username>y luego seleccione Cargar. -
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
aws-kinesis-analytics-java-apps-1.0.jarque creó en el paso anterior. 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.
Crear y ejecutar la aplicación de Managed Service para Apache Flink
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.
-
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).
-
-
Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM.
kinesis-analytics-MyApplication-us-west-2 -
Elija Crear aplicación.
nota
Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:
-
Política:
kinesis-analytics-service-MyApplication-us-west-2 -
Rol: :
kinesisanalytics-MyApplication-us-west-2
Modificar la política de IAM
Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Elija Políticas. Elija la política
kinesis-analytics-service-MyApplication-us-west-2que la consola creó en su nombre en la sección anterior. -
En la página Resumen, elija Editar política. Seleccione la pestaña JSON.
-
Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (
012345678901) por el ID de su cuenta.
Configurar la aplicación
-
En la página MyApplication, elija Configurar.
-
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.
-
-
En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM
kinesis-analytics-MyApplication-us-west-2. -
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
En Registro de CloudWatch, seleccione la casilla de verificación Habilitar.
-
Elija Actualizar.
nota
Al activar el registro de Amazon CloudWatch, Managed Service para Apache Flink crea un grupo de registro y un flujo de registro. 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.
Configuración del 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\" }}}"
Se puede recuperar el ID de la versión actual de la aplicación mediante las acciones DescribeApplication 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.
Se puede comprobar las métricas de Managed Service para Apache Flink en la consola de CloudWatch para verificar que la aplicación funciona.
Limpieza de recursos de AWS
En esta sección se incluyen los procedimientos para limpiar los recursos de AWS creados en el tutorial Ventana deslizante.
Este tema contiene las siguientes secciones:
Eliminación de su aplicación de Managed Service para Apache Flink
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
En el panel de Managed Service para Apache Flink, elija MyApplication.
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Eliminación de sus flujos de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel de Kinesis Data Streams, elija ExampleInputStream.
En la página ExampleInputStream, elija Eliminar flujo de Kinesis y, a continuación, confirme la eliminación.
En la página Flujos de Kinesis, elija ExampleOutputStream, elija Acciones, elija Eliminar y, a continuación, confirme la eliminación.
Eliminación del objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el bucket ka-app-code-
<username>.Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Eliminación de sus recursos de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. En la barra de navegación, seleccione Políticas.
En el control de filtros, introduzca kinesis.
Elija la política kinesis-analytics-service-MyApplication-us-west-2.
Seleccione Acciones de política y, a continuación, Eliminar.
En la barra de navegación, seleccione Roles.
Elija el rol kinesis-analytics-MyApplication-us-west-2.
Elija Eliminar rol y, a continuación, confirme la eliminación.
Eliminación de sus recursos de CloudWatch
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registro /aws/kinesis-analytics/MyApplication.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Ejemplo: escritura 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: introducción al uso de la API de DataStream en Managed Service para Apache Flink.
Este tema contiene las siguientes secciones:
Creación de 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.
Se 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
ExampleInputStreama 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-. Cree dos carpetas (<username>codeydata) en el bucket de Amazon S3.
La aplicación crea los siguientes recursos de CloudWatch si no existen ya:
-
Un grupo de registro llamado
/AWS/KinesisAnalytics-java/MyApplication. -
Un flujo de registro llamado
kinesis-analytics-log-stream.
Escritura de 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 para Python (Boto)
-
Cree un archivo denominado
stock.pycon 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')) -
Ejecute el script
stock.py:$ python stock.pyMantenga el script en ejecución mientras completa el resto del tutorial.
Descarga y examen del código de la aplicación
El código de la aplicación de Java para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
-
Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git
. -
Clone el repositorio remoto con el siguiente comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git -
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 StreamingFileSink, consulte StreamingFileSink
Modificación del 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";
Compilar el código de la aplicación
Para compilar la aplicación, haga lo siguiente:
-
Si aún no lo ha hecho, instale Java y Maven. Para obtener más información, consulte Cumplimiento de los requisitos previos obligatorios en el tutorial de Tutorial: introducción al uso de la API de DataStream en Managed Service para Apache Flink.
-
Compile la aplicación con el siguiente comando:
mvn package -Dflink.version=1.15.3
Al compilar la aplicación, se crea el archivo JAR de la aplicación (target/aws-kinesis-analytics-java-apps-1.0.jar).
nota
El código fuente proporcionado se basa en bibliotecas de Java 11.
Cargar el código de 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 Creación de recursos dependientes.
-
En la consola de Amazon S3, elija el bucket ka-app-code-
<username>, navegue a la carpeta código y seleccione Cargar. -
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
aws-kinesis-analytics-java-apps-1.0.jarque creó en el paso anterior. -
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.
Crear y ejecutar la aplicación de Managed Service para Apache Flink
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.
-
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).
-
-
Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM.
kinesis-analytics-MyApplication-us-west-2 -
Elija Crear aplicación.
nota
Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:
-
En Nombre de la aplicación, escriba
MyApplication. -
En Tiempo de ejecución, escriba Apache Flink.
-
Deje la versión como Apache Flink, versión 1.15.2 (versión recomendada).
-
-
Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM.
kinesis-analytics-MyApplication-us-west-2 -
Elija Crear aplicación.
nota
Al crear un Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:
-
Política:
kinesis-analytics-service-MyApplication-us-west-2 -
Rol: :
kinesisanalytics-MyApplication-us-west-2
Modificar la política de IAM
Edite la política de IAM para agregar permisos de acceso al flujo de datos de Kinesis.
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Elija Políticas. Elija la política
kinesis-analytics-service-MyApplication-us-west-2que la consola creó en su nombre en la sección anterior. -
En la página Resumen, elija Editar política. Seleccione la pestaña JSON.
-
Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (
012345678901) por el ID de su cuenta. Sustituya <username> por el nombre de usuario.{ "Sid": "S3", "Effect": "Allow", "Action": [ "s3:Abort*", "s3:DeleteObject*", "s3:GetObject*", "s3:GetBucket*", "s3:List*", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::ka-app-code-<username>", "arn:aws:s3:::ka-app-code-<username>/*" ] }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:*" ] }, { "Sid": "ListCloudwatchLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:%LOG_GROUP_PLACEHOLDER%:log-stream:*" ] }, { "Sid": "PutCloudwatchLogs", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:%LOG_GROUP_PLACEHOLDER%:log-stream:%LOG_STREAM_PLACEHOLDER%" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:] }012345678901:stream/ExampleInputStream" },
Configurar la aplicación
-
En la página MyApplication, elija Configurar.
-
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.
-
-
En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM
kinesis-analytics-MyApplication-us-west-2. -
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
En Registro de CloudWatch, seleccione la casilla de verificación Habilitar.
-
Elija Actualizar.
nota
Cuando se elige habilitar registros de CloudWatch, Managed Service para Apache Flink crea un grupo de registro y un flujo de registro para usted. 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
-
En la página Mi aplicación, elija Ejecutar. Deje seleccionada la opción Ejecutar sin instantánea y confirme la acción.
-
Cuando la aplicación se está ejecutando, actualice la página. La consola muestra el Gráfico de la aplicación.
Verificación de la salida 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: personalización del origen y del 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 Compilar el código de la aplicación para compilar el código de la aplicación actualizado.
-
Repita los pasos de la sección Cargar el código de 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.
Esta sección contiene lo siguiente:
Configuración de la partición 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:
-
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; -
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 buckets personalizado para personalizar aún más los nombres de las carpetas creadas, puede crear una clase que implemente BucketAssignergetBucketId.
Una implementación personalizada de BucketAssigner puede usar el parámetro Contexto
Configuración de 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. Se 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");
Configuración del almacenamiento en 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. Se 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:
-
Aumente el parámetro
CheckpointIntervalde la aplicación. La siguiente entrada para la acción UpdateApplication 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. Se puede recuperar la versión de la aplicación mediante la acción ListApplications.
-
Añada la siguiente instrucción de importación al principio del archivo
S3StreamingSinkJob.java:import java.util.concurrent.TimeUnit; -
Actualice el método
createS3SinkFromStaticConfigen el archivoS3StreamingSinkJob.javapara 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
Limpieza de recursos de AWS
En esta sección se incluyen los procedimientos para limpiar los recursos de AWS creados en el tutorial de Amazon S3.
Este tema contiene las siguientes secciones:
Eliminación de su aplicación de Managed Service para Apache Flink
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Managed Service para Apache Flink, elija MyApplication.
-
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Eliminación de su flujo de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. -
En el panel de Kinesis Data Streams, elija ExampleInputStream.
-
En la página ExampleInputStream, elija Eliminar flujo de Kinesis y, a continuación, confirme la eliminación.
Eliminación de objetos y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. -
Elija el bucket ka-app-code-
<username>. -
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Eliminación de sus recursos de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
En la barra de navegación, seleccione Políticas.
-
En el control de filtros, introduzca kinesis.
-
Elija la política kinesis-analytics-service-MyApplication-us-west-2.
-
Seleccione Acciones de política y, a continuación, Eliminar.
-
En la barra de navegación, seleccione Roles.
-
Elija el rol kinesis-analytics-MyApplication-us-west-2.
-
Elija Eliminar rol y, a continuación, confirme la eliminación.
Eliminación de sus recursos de CloudWatch
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. -
En la barra de navegación, elija Registros.
-
Elija el grupo de registro /aws/kinesis-analytics/MyApplication.
-
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Tutorial: uso de una aplicación de Managed Service for Apache Flink para replicar datos de un tema de un clúster de MSK a otro en una VPC
nota
Para ver ejemplos actuales, consulte Ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink.
El siguiente tutorial muestra cómo crear una Amazon VPC con un clúster de Amazon MSK y dos temas, y cómo crear una aplicación Managed Service para Apache Flink que lee desde un tema de Amazon MSK y escribe en otro.
nota
Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: introducción al uso de la API de DataStream en Managed Service para Apache Flink.
Este tutorial contiene las siguientes secciones:
Creación de un Amazon VPC con un clúster de Amazon MSK
Para crear una muestra de VPC y un clúster de Amazon MSK al que acceder desde la aplicación de Managed Service para Apache Flink, siga el tutorial Introducción al uso de Amazon MSK.
Cuando complete el tutorial, tenga en cuenta lo siguiente:
En el Paso 3: crear un tema, repita el comando
kafka-topics.sh --createpara crear un tema de destino llamadoAWSKafkaTutorialTopicDestination:bin/kafka-topics.sh --create --zookeeperZooKeeperConnectionString--replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopicDestinationRegistre la lista de servidores de arranque de su clúster. Se puede obtener la lista de servidores de arranque con el siguiente comando (reemplace
ClusterArncon el nombre de recurso de Amazon (ARN) de su clúster de MSK):aws kafka get-bootstrap-brokers --region us-west-2 --cluster-arnClusterArn{... "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úrese de usar la región de AWS seleccionada en el código, los comandos y las entradas de la consola.
Creación del código de la aplicación
En esta sección, descargará y compilará el archivo JAR de la aplicación. Recomendamos utilizar Java 11.
El código de la aplicación de Java para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git
. Clone el repositorio remoto con el siguiente comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.gitEl 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.Utilice la herramienta Maven de línea de comandos o el entorno de desarrollo que prefiera para crear el archivo JAR. Para compilar el archivo JAR utilizando la herramienta Maven de línea de comandos, introduzca lo siguiente:
mvn package -Dflink.version=1.15.3Si la compilación es correcta, se crea el siguiente archivo:
target/KafkaGettingStartedJob-1.0.jarnota
El código fuente proporcionado se basa en bibliotecas de Java 11. Si está utilizando un entorno de desarrollo,
Cargar el código de 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: introducción al uso de la API de DataStream en Managed Service para Apache Flink.
nota
Si ha eliminado el bucket de Amazon S3 del tutorial de Introducción, vuelva a seguir el paso Carga del archivo JAR del código de la aplicación.
-
En la consola de Amazon S3, elija el bucket ka-app-code-
<username>y seleccione Subir. -
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
KafkaGettingStartedJob-1.0.jarque creó en el paso anterior. 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
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.
-
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.
-
-
Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM.
kinesis-analytics-MyApplication-us-west-2 -
Elija Crear aplicación.
nota
Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:
-
Política:
kinesis-analytics-service-MyApplication-us-west-2 -
Rol: :
kinesisanalytics-MyApplication-us-west-2
Configurar la aplicación
-
En la página MyApplication, elija Configurar.
-
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.
-
-
En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM
kinesis-analytics-MyApplication-us-west-2.nota
Al especificar los recursos de la aplicación mediante la consola (como CloudWatch Logs o una Amazon VPC), la consola modifica el rol de ejecución de la aplicación para conceder permiso de acceso a esos recursos.
-
En Propiedades, elija Añadir grupo. Introduzca las siguientes propiedades:
ID de grupo Clave Valor KafkaSourcetema AWSKafkaTutorialTopic KafkaSourcebootstrap.servers La lista de servidores de arranque que guardó anteriormenteKafkaSourcesecurity.protocol SSL KafkaSourcessl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts KafkaSourcessl.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 KafkaSinktema AWSKafkaTutorialTopicDestination KafkaSinkbootstrap.servers La lista de servidores de arranque que guardó anteriormenteKafkaSinksecurity.protocol SSL KafkaSinkssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts KafkaSinkssl.truststore.contraseña changeit KafkaSinktransacción.timeout.ms 1 000 El código de la aplicación lee las propiedades de la aplicación anteriores para configurar el origen y el receptor que se utilizan para interactuar con la VPC y el clúster de Amazon MSK. Para obtener más información acerca de las propiedades, consulte Uso de propiedades de tiempo de ejecución.
-
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.
-
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
En Registro de CloudWatch, elija la casilla de verificación Habilitar.
-
En la sección Nube privada virtual (VPC), elija la VPC que desea asociar a la aplicación. Elija las subredes y el grupo de seguridad asociados a la VPC que desee que utilice la aplicación para acceder a los recursos de la VPC.
-
Elija Actualizar.
nota
Cuando se elige habilitar registros de CloudWatch, Managed Service para Apache Flink crea un grupo de registro y un flujo de registro para usted. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication -
Flujo de registro:
kinesis-analytics-log-stream
Este flujo de registro se utiliza para supervisar la aplicación.
Ejecución de la aplicación
Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.
Pruebe la aplicación
En esta sección, se escriben los registros en el tema de origen. La aplicación lee los registros del tema de origen y los escribe en el tema de destino. Para comprobar que la aplicación funciona, escriba los registros en el tema de origen y lea los registros del tema de destino.
Para escribir y leer registros de los temas, siga los pasos del Paso 6: producir y consumir datos del tutorial Cómo empezar a utilizar Amazon MSK.
Para leer el tema de destino, utilice el nombre del tema de destino en lugar del tema de origen en la segunda conexión al clúster:
bin/kafka-console-consumer.sh --bootstrap-serverBootstrapBrokerString--consumer.config client.properties --topic AWSKafkaTutorialTopicDestination --from-beginning
Si no aparece ningún registro en el tema de destino, consulte la sección No puedo obtener acceso a los recursos de una VPC del tema Resolución de problemas de Managed Service para Apache Flink.
Ejemplo: uso de un consumidor EFO con un flujo de datos de Kinesis
nota
Para ver ejemplos actuales, consulte Ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink.
En este ejercicio, creará una aplicación Managed Service para Apache Flink que lea desde un flujo de datos de Kinesis mediante un consumidor de fan-out mejorado (Enhanced Fan-Out, EFO). Si un consumidor de Kinesis usa EFO, el servicio Kinesis Data Streams le proporciona su propio ancho de banda dedicado, en lugar de hacer que el consumidor comparta el ancho de banda fijo del flujo con los demás consumidores que leen el flujo.
Para obtener más información sobre el uso de EFO con el consumidor Kinesis, consulte FLIP-128: Enhanced Fan Out for Kinesis Consumers
La aplicación que crea en este ejemplo utiliza AWS Kinesis Connector (flink-connector-kinesis) 1.15.3.
nota
Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: introducción al uso de la API de DataStream en Managed Service para Apache Flink.
Este tema contiene las siguientes secciones:
Creación de 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 (
ExampleInputStreamyExampleOutputStream)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
ExampleInputStreamyExampleOutputStream.¿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>
Escritura de 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 para Python (Boto)
-
Cree un archivo denominado
stock.pycon 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')) -
Ejecute el script
stock.py:$ python stock.pyMantenga el script en ejecución mientras completa el resto del tutorial.
Descarga y examen del código de la aplicación
El código de la aplicación de Java para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git
. Clone el repositorio remoto con el siguiente comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.gitVaya al directorio
amazon-kinesis-data-analytics-java-examples/EfoConsumer.
El código de la aplicación se encuentra en el archivo EfoApplication.java. Tenga en cuenta lo siguiente en relación con el código de la aplicación:
Para activar el consumidor EFO, configure los siguientes parámetros en el consumidor de Kinesis:
RECORD_PUBLISHER_TYPE: defina este parámetro en EFO para que su aplicación utilice un consumidor de EFO para acceder a los datos del flujo de datos de Kinesis.
EFO_CONSUMER_NAME: defina este parámetro en un valor de cadena que sea único entre los consumidores de este flujo. La reutilización de un nombre de consumidor en el mismo flujo de datos de Kinesis provocará la cancelación del consumidor anterior que utilizó ese nombre.
El siguiente ejemplo de código muestra cómo asignar valores a las propiedades de configuración del consumidor para utilizar un consumidor EFO para leer la transmisión de origen:
consumerConfig.putIfAbsent(RECORD_PUBLISHER_TYPE, "EFO"); consumerConfig.putIfAbsent(EFO_CONSUMER_NAME, "basic-efo-flink-app");
Compilar el código de la aplicación
Para compilar la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale Java y Maven. Para obtener más información, consulte Cumplimiento de los requisitos previos obligatorios en el tutorial de Tutorial: introducción al uso de la API de DataStream en Managed Service para Apache Flink.
Compile la aplicación con el siguiente comando:
mvn package -Dflink.version=1.15.3nota
El código fuente proporcionado se basa en bibliotecas de Java 11.
Al compilar la aplicación, se crea el archivo JAR de la aplicación (target/aws-kinesis-analytics-java-apps-1.0.jar).
Cargar el código de 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 Creación de recursos dependientes.
-
En la consola de Amazon S3, elija el bucket ka-app-code-
<username>y seleccione Subir. -
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
aws-kinesis-analytics-java-apps-1.0.jarque creó en el paso anterior. 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.
Crear y ejecutar la aplicación de Managed Service para Apache Flink
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.
-
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).
-
-
Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM.
kinesis-analytics-MyApplication-us-west-2 -
Elija Crear aplicación.
nota
Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:
-
Política:
kinesis-analytics-service-MyApplication-us-west-2 -
Rol: :
kinesisanalytics-MyApplication-us-west-2
Modificar la política de IAM
Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Elija Políticas. Elija la política
kinesis-analytics-service-MyApplication-us-west-2que la consola creó en su nombre en la sección anterior. -
En la página Resumen, elija Editar política. Seleccione la pestaña JSON.
-
Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (
012345678901) por el ID de su cuenta.nota
Estos permisos otorgan a la aplicación la posibilidad de acceder al consumidor de EFO.
Configurar la aplicación
-
En la página MyApplication, elija Configurar.
-
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.
-
-
En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM
kinesis-analytics-MyApplication-us-west-2. -
En Propiedades, elija Crear grupo.
-
Escriba las siguientes propiedades y valores de la aplicación:
ID de grupo Clave Valor ConsumerConfigPropertiesflink.stream.recordpublisherEFOConsumerConfigPropertiesflink.stream.efo.consumernamebasic-efo-flink-appConsumerConfigPropertiesINPUT_STREAMExampleInputStreamConsumerConfigPropertiesflink.inputstream.initposLATESTConsumerConfigPropertiesAWS_REGIONus-west-2 -
En Propiedades, elija Crear grupo.
-
Escriba las siguientes propiedades y valores de la aplicación:
ID de grupo Clave Valor ProducerConfigPropertiesOUTPUT_STREAMExampleOutputStreamProducerConfigPropertiesAWS_REGIONus-west-2ProducerConfigPropertiesAggregationEnabledfalse -
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
En Registro de CloudWatch, seleccione la casilla de verificación Habilitar.
-
Elija Actualizar.
nota
Cuando se elige habilitar registros de CloudWatch, Managed Service para Apache Flink crea un grupo de registro y un flujo de registro para usted. 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 de Managed Service para Apache Flink en la consola de CloudWatch para verificar que la aplicación funciona.
También puede consultar el nombre de su consumidor (basic-efo-flink-app) en la consola de flujo de datos de Kinesis, en la pestaña desplegable mejorada del flujo de datos.
Limpieza de recursos de AWS
En esta sección se incluyen los procedimientos para limpiar los recursos de AWS creados en el tutorial Ventana efo.
Este tema contiene las siguientes secciones:
Eliminación de su aplicación de Managed Service para Apache Flink
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
En el panel de Managed Service para Apache Flink, elija MyApplication.
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Eliminación de sus flujos de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel de Kinesis Data Streams, elija ExampleInputStream.
En la página ExampleInputStream, elija Eliminar flujo de Kinesis y, a continuación, confirme la eliminación.
En la página Flujos de Kinesis, elija ExampleOutputStream, elija Acciones, elija Eliminar y, a continuación, confirme la eliminación.
Eliminación del objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el bucket ka-app-code-
<username>.Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Eliminación de sus recursos de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. En la barra de navegación, seleccione Políticas.
En el control de filtros, introduzca kinesis.
Elija la política kinesis-analytics-service-MyApplication-us-west-2.
Seleccione Acciones de política y, a continuación, Eliminar.
En la barra de navegación, seleccione Roles.
Elija el rol kinesis-analytics-MyApplication-us-west-2.
Elija Eliminar rol y, a continuación, confirme la eliminación.
Eliminación de sus recursos de CloudWatch
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registro /aws/kinesis-analytics/MyApplication.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Ejemplo: escritura en Firehose
nota
Para ver ejemplos actuales, consulte Ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink.
En este ejercicio, creará una aplicación de Managed Service para Apache Flink que tenga un flujo de datos de Kinesis como origen y un flujo de Firehose como receptor. 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: introducción al uso de la API de DataStream en Managed Service para Apache Flink.
Esta sección contiene los siguientes pasos:
Creación de 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 flujo de Firehose en el que la aplicación escribe los datos de salida a (
ExampleDeliveryStream).Un bucket de Amazon S3 para almacenar el código de la aplicación (
ka-app-code-)<username>
Se puede crear el flujo de Kinesis, los buckets de Amazon S3 y el flujo de Firehose mediante 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
ExampleInputStreama su flujo de datos.Creación de un flujo de entrega de Amazon Kinesis Data Firehose en la Guía para desarrolladores de Amazon Data Firehose. Asigne un nombre al flujo de Firehose
ExampleDeliveryStream. Al crear el flujo de Firehose, cree también el destino S3 y el rol de IAM de dicho flujo.¿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>
Escritura de 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 para Python (Boto)
-
Cree un archivo denominado
stock.pycon 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')) -
Ejecute el script
stock.py:$ python stock.pyMantenga el script en ejecución mientras completa el resto del tutorial.
Descargar y consultar el código de Java de streaming de Apache Flink
El código de la aplicación de Java para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
Clone el repositorio remoto con el siguiente comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.gitVaya 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 receptor Firehose para escribir datos en un flujo de Firehose. El siguiente fragmento crea el receptor de 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(); }
Compilar el código de la aplicación
Para compilar la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale Java y Maven. Para obtener más información, consulte Cumplimiento de los requisitos previos obligatorios en el tutorial de Tutorial: introducción al uso de la API de DataStream en Managed Service para Apache Flink.
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.
Compile la aplicación con el siguiente comando:
mvn package -Dflink.version=1.15.3nota
El código fuente proporcionado se basa en bibliotecas de Java 11.
Al compilar la aplicación, se crea el archivo JAR de la aplicación (target/aws-kinesis-analytics-java-apps-1.0.jar).
Cargar el código de 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 Creación de recursos dependientes.
Cómo cargar el código de la aplicación
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. -
En la consola, elija el bucket ka-app-code-
<username>y elija Cargar. -
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
java-getting-started-1.0.jarque creó en el paso anterior. 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.
Crear y ejecutar la aplicación de Managed Service para Apache Flink
Se puede crear y ejecutar una aplicación de Managed Service para Apache Flink mediante la consola o la AWS CLI.
nota
Al crear la aplicación mediante la consola, se crean sus recursos de AWS Identity and Access Management (IAM) y Registros de Amazon CloudWatch en su nombre. Si crea la aplicación mediante la AWS CLI, debe crear estos recursos por separado.
Creación y ejecución de 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
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.
-
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).
-
-
Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM.
kinesis-analytics-MyApplication-us-west-2 -
Elija Crear aplicación.
nota
Al crear la aplicación mediante la consola, tiene la opción de crear un rol de IAM y una política para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:
-
Política:
kinesis-analytics-service-MyApplication-us-west-2 -
Rol: :
kinesisanalytics-MyApplication-us-west-2
Modificar la política de IAM
Edite la política de IAM para agregar permisos de acceso al flujo de datos de Kinesis y al flujo de Firehose.
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Elija Políticas. Elija la política
kinesis-analytics-service-MyApplication-us-west-2que la consola creó en su nombre en la sección anterior. -
En la página Resumen, elija Editar política. Seleccione la pestaña JSON.
-
Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace todas las instancias del ID de la cuenta de muestra (
012345678901) por el ID de su cuenta.
Configurar la aplicación
-
En la página MyApplication, elija Configurar.
-
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.
-
-
En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM
kinesis-analytics-MyApplication-us-west-2. -
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
En Registro de CloudWatch, seleccione la casilla de verificación Habilitar.
-
Elija Actualizar.
nota
Cuando se elige habilitar registros de CloudWatch, Managed Service para Apache Flink crea un grupo de registro y un flujo de registro para usted. 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.
Detener la aplicación
En la página Mi aplicación, elija Detener. Confirme la acción.
Actualizar la aplicación
Mediante la consola, puede actualizar la configuración de la aplicación, tal como sus propiedades, ajustes de monitorización y la ubicación o el nombre de archivo JAR de la aplicación.
En la página MyApplication, elija Configurar. Actualice la configuración de la aplicación y elija Actualizar.
nota
Para actualizar el código de la aplicación en la consola, debe cambiar el nombre del objeto del JAR, usar un bucket de S3 diferente o usar el AWS CLI como se describe en la sección Actualización del código de la aplicación. Si el nombre del archivo o el bucket no cambian, el código de la aplicación no se vuelve a cargar al seleccionar Actualizar en la página de Configuración.
Crear y ejecutar la aplicación (AWS CLI)
En esta sección, se utiliza AWS CLI para crear y ejecutar la aplicación Managed Service para Apache Flink.
Creación de una política de permisos
En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción read en el flujo de origen y otra que concede permisos para las acciones write en el flujo de recepción. A continuación, asocie la política a un rol de IAM (que se crea en la siguiente sección). Por lo tanto, cuando Managed Service para Apache Flink asume el rol, el servicio tiene los permisos necesarios para leer desde el flujo de origen y escribir en el flujo de recepción.
Utilice el siguiente código para crear la política de permisos AKReadSourceStreamWriteSinkStream. Reemplace el nombre de usuario por el nombre de usuario que utilizará para crear el bucket de Amazon S3 para almacenar el código de la aplicación. Sustituya el ID de la cuenta en los nombres de recurso de Amazon (ARN) () por el ID de su cuenta.012345678901
Para obtener instrucciones paso a paso para crear una política de permisos, consulte Tutorial: crear y asociar su primera política administrada por el cliente en la Guía del usuario de IAM.
nota
Para acceder a otros servicios de Amazon, puede usar AWS SDK para Java. Managed Service para Apache Flink establece automáticamente las credenciales requeridas por el SDK con las del rol de IAM de ejecución del servicio asociada a su aplicación. No hace falta realizar ningún otro paso.
Creación de un rol de IAM
En esta sección, creará un rol de IAM que la aplicación de Managed Service para Apache Flink pueda asumir para leer un flujo de origen y escribir en el flujo de recepción.
Managed Service para Apache Flink no puede acceder a su transmisión si no tiene permisos. Estos permisos se conceden a través del rol de IAM. Cada rol de IAM tiene dos políticas asociadas. La política de confianza otorga permiso a Managed Service para Apache Flink para asumir el rol. La política de permisos determina qué puede hacer Managed Service para Apache Flink después de asumir el rol.
Usted deberá asociar la política de permisos que ha creado en la sección anterior a este rol.
Cómo crear un rol de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
En el panel de navegación, elija Roles, Crear rol.
-
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.
-
En la página Asociar políticas de permisos, elija Siguiente: Revisión. Asociará políticas de permisos después de crear el rol.
-
En la página Crear rol, escriba
MF-stream-rw-rolecomo Nombre de rol. Elija Crear rol.Ahora ha creado un nuevo rol de IAM llamado
MF-stream-rw-role. A continuación, actualice las políticas de confianza y permisos del rol. -
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.
-
En la página Resumen, elija la pestaña Permisos.
-
Seleccione Asociar políticas.
-
En el campo de búsqueda, escriba
AKReadSourceStreamWriteSinkStream(la política que ha creado en la sección anterior). -
Elija la política AKReadSourceStreamWriteSinkStream y luego elija Asociar política.
-
Ahora ha creado el rol de ejecución de servicio que utilizará la aplicación para obtener acceso a los recursos. Anote el ARN del nuevo rol.
Para obtener instrucciones paso a paso para crear un rol, consulte Creating an IAM Role (Console) en la Guía del usuario de IAM.
Creación de la aplicación de Managed Service para Apache Flink
-
Guarde el siguiente código JSON en un archivo denominado
create_request.json. Cambie el ARN del rol de ejemplo por el ARN del rol que ha creado antes. Reemplace el sufijo del ARN del bucket por el sufijo que eligió en la sección Creación de recursos dependientes (ka-app-code-). Reemplace el ID de la cuenta de muestra (<username>012345678901) en el rol de ejecución del servicio por el ID de su cuenta.{ "ApplicationName": "test", "ApplicationDescription": "my java test app", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "java-getting-started-1.0.jar" } }, "CodeContentType": "ZIPFILE" } } } } -
Ejecute la acción
CreateApplicationcon 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
-
Guarde el siguiente código JSON en un archivo denominado
start_request.json.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } } -
Ejecute la acción
StartApplicationcon 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. Puede comprobar las métricas de Managed Service para Apache Flink en la consola de Amazon CloudWatch para comprobar que la aplicación funciona.
Detener la aplicación
En esta sección, se utiliza la acción StopApplication para detener la aplicación.
Cómo detener la aplicación
-
Guarde el siguiente código JSON en un archivo denominado
stop_request.json.{ "ApplicationName": "test" } -
Ejecute la acción
StopApplicationcon 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.
Incorporación de una opción de registro de CloudWatch
Puede utilizar la AWS CLI para añadir un flujo de registro de Amazon CloudWatch a su aplicación. Para obtener más información sobre el uso de registros de CloudWatch con su aplicación, consulte Configuración de registro de aplicación en Managed Service para 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ódigo, utilice la acción UpdateApplication de la AWS CLI.
Para usar la AWS CLI, elimine el paquete de código anterior de su bucket de Amazon S3, cargue la nueva versión y llame a UpdateApplication, especificando el mismo nombre de bucket y objeto de Amazon S3.
En el siguiente ejemplo de solicitud de la acción UpdateApplication, se vuelve a cargar el código de la aplicación y se reinicia la aplicación. Actualice la CurrentApplicationVersionId a la versión actual de la aplicación. Puede comprobar la versión actual de la aplicación mediante las acciones ListApplications o DescribeApplication. Actualice el sufijo del nombre del bucket (<username>) con el sufijo que haya elegido en la sección Creación de recursos dependientes.
{ "ApplicationName": "test", "CurrentApplicationVersionId":1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username", "FileKeyUpdate": "java-getting-started-1.0.jar" } } } } }
Limpieza de recursos de AWS
En esta sección se incluyen los procedimientos para eliminar los recursos de AWS creados en el tutorial de Introducción.
Este tema contiene las siguientes secciones:
Eliminación de su aplicación de Managed Service para Apache Flink
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
En el panel de Managed Service para Apache Flink, elija MyApplication.
Elija Configurar.
En la sección Instantáneas, seleccione Deshabilitar y, a continuación, seleccione Actualizar.
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Eliminación de su flujo de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel de Kinesis Data Streams, elija ExampleInputStream.
En la página ExampleInputStream, elija Eliminar flujo de Kinesis y, a continuación, confirme la eliminación.
Eliminación de flujos de Firehose
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel de Firehose, elija ExampleDeliveryStream.
En la página ExampleDeliveryStream, elija Eliminar flujo de Firehose y, a continuación, confirme la eliminación.
Eliminación del objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el bucket ka-app-code-
<username>.Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Si creó un bucket de Amazon S3 para el destino del flujo de Firehose, elimínelo también.
Eliminación de sus recursos de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. En la barra de navegación, seleccione Políticas.
En el control de filtros, introduzca kinesis.
Elija la política kinesis-analytics-service-MyApplication-us-west-2.
Seleccione Acciones de política y, a continuación, Eliminar.
Si creó una nueva política para su flujo de Firehose, elimínela también.
En la barra de navegación, seleccione Roles.
Elija el rol kinesis-analytics-MyApplication-us-west-2.
Elija Eliminar rol y, a continuación, confirme la eliminación.
Si creó un rol nuevo para su flujo de Firehose, elimínelo también.
Eliminación de sus recursos de CloudWatch
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registro /aws/kinesis-analytics/MyApplication.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Ejemplo: lectura desde un flujo de Kinesis en una cuenta diferente
nota
Para ver ejemplos actuales, consulte Ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink.
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.
Este tema contiene las siguientes secciones:
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: introducción al uso de la API de DataStream en Managed Service para Apache Flink antes de continuar.
Necesita dos cuentas AWS para completar este tutorial: una para el flujo de origen y otra para el flujo de aplicación y del receptor. Utilice la cuenta AWS que utilizó en el tutorial de introducción para la aplicación y para el flujo del receptor. Use una cuenta AWS diferente para el flujo de origen.
Configuración
Accederá a sus dos cuentas AWS mediante perfiles con nombre. Modifique sus credenciales AWS 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 cuentas AWS diferentes mediante perfiles.
Para obtener más información sobre los perfiles con AWS CLI, consulte Named Profiles en la documentación de AWS Command Line Interface.
Creación del flujo de origen de Kinesis
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
Creación y actualización de los roles y políticas de IAM
Para permitir el acceso a los objetos en todas las cuentas AWS, debe crear una política y un rol de IAM en la cuenta de origen. A continuación, modifique la política de IAM en la cuenta del receptor. Para obtener más información sobre cómo crear y administrar roles y políticas de IAM, consulte los siguientes temas en la Guía del usuario de AWS Identity and Access Management:
Roles y políticas de la cuenta de receptor
Edite la política
kinesis-analytics-service-MyApplication-us-west-2desde 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-y un rol denominado<application name>-<application region>kinesisanalytics-.<application name>-<application region>Añada a la política la sección resaltada a continuación. Sustituya el identificador de cuenta de ejemplo (
SOURCE01234567) por el identificador de la cuenta que utilizará para el flujo de origen.Abra el rol
kinesis-analytics-MyApplication-us-west-2y anote su nombre de recurso de Amazon (ARN). Lo necesitará en la sección siguiente. El rol de ARN tiene el siguiente aspecto:arn:aws:iam::SINK012345678:role/service-role/kinesis-analytics-MyApplication-us-west-2
Roles y políticas de la cuenta de origen
Cree una política en la cuenta de origen denominada
KA-Source-Stream-Policy. Utilice el siguiente JSON para la política. Sustituya el número de cuenta de muestra por el número de cuenta de la cuenta de origen.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:En la Consola de administración de IAM, seleccione Crear rol.
En la página Crear rol, elija AWSServicio. En la lista de servicios, elija Kinesis.
En la sección Seleccione su caso de uso, elija Managed Service para Apache Flink.
Elija Siguiente: permisos.
Agregue la política de permisos
KA-Source-Stream-Policyque creó en el paso anterior. Elija Siguiente:Etiquetas.Elija Siguiente:Revisar.
Llame al rol
KA-Source-Stream-Role. Su aplicación utilizará este rol para acceder al flujo de origen.
Agregue el ARN
kinesis-analytics-MyApplication-us-west-2de la cuenta receptor a la relación de confianza del rolKA-Source-Stream-Roleen la cuenta de origen:Abra
KA-Source-Stream-Roleen la consola de IAM.Seleccione la pestaña Relaciones de confianza.
Elija Editar relación de confianza.
Utilice el siguiente código para la relación de confianza. Reemplace el ID de la cuenta de muestra (
) por el ID de su cuenta receptor.SINK012345678
Actualización del 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 datetimeimport 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")
Actualización de la aplicación Java
En esta sección, se actualiza el código de la aplicación Java para que asuma el rol de cuenta de origen al leer el flujo de origen.
Realice los siguientes cambios en el archivo BasicStreamingJob.java. Sustituya el número de cuenta de origen del ejemplo (SOURCE01234567) por su número de cuenta de origen.
package com.amazonaws.services.managed-flink; import com.amazonaws.services.managed-flink.runtime.KinesisAnalyticsRuntime; import org.apache.flink.api.common.serialization.SimpleStringSchema; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.streaming.connectors.kinesis.FlinkKinesisConsumer; import org.apache.flink.streaming.connectors.kinesis.FlinkKinesisProducer; import org.apache.flink.streaming.connectors.kinesis.config.ConsumerConfigConstants;import org.apache.flink.streaming.connectors.kinesis.config.AWSConfigConstants;import java.io.IOException; import java.util.Map; import java.util.Properties; /** * A basic Managed Service for Apache Flink for Java application with Kinesis data streams * as source and sink. */ public class BasicStreamingJob { private static final String region = "us-west-2"; private static final String inputStreamName ="SourceAccountExampleInputStream";private static final String outputStreamName = ExampleOutputStream;private static final String roleArn = "arn:aws:iam::SOURCE01234567:role/KA-Source-Stream-Role"; private static final String roleSessionName = "ksassumedrolesession";private static DataStream<String> createSourceFromStaticConfig(StreamExecutionEnvironment env) { Properties inputProperties = new Properties();inputProperties.setProperty(AWSConfigConstants.AWS_CREDENTIALS_PROVIDER, "ASSUME_ROLE"); inputProperties.setProperty(AWSConfigConstants.AWS_ROLE_ARN, roleArn); inputProperties.setProperty(AWSConfigConstants.AWS_ROLE_SESSION_NAME, roleSessionName);inputProperties.setProperty(ConsumerConfigConstants.AWS_REGION, region); inputProperties.setProperty(ConsumerConfigConstants.STREAM_INITIAL_POSITION, "LATEST"); return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties)); } private static KinesisStreamsSink<String> createSinkFromStaticConfig() { Properties outputProperties = new Properties(); outputProperties.setProperty(AWSConfigConstants.AWS_REGION, region); return KinesisStreamsSink.<String>builder() .setKinesisClientProperties(outputProperties) .setSerializationSchema(new SimpleStringSchema()) .setStreamName(outputProperties.getProperty("OUTPUT_STREAM", "ExampleOutputStream")) .setPartitionKeyGenerator(element -> String.valueOf(element.hashCode())) .build(); } public static void main(String[] args) throws Exception { // set up the streaming execution environment final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); DataStream<String> input = createSourceFromStaticConfig(env); input.addSink(createSinkFromStaticConfig()); env.execute("Flink Streaming Java API Skeleton"); } }
Compilación, carga y ejecución de la aplicación.
Puede hacer lo siguiente para actualizar y ejecutar la aplicación:
Compile la aplicación nuevamente ejecutando el siguiente comando en el directorio con el archivo
pom.xml.mvn package -Dflink.version=1.15.3Elimine el archivo JAR anterior del bucket de Amazon Simple Storage Service (Amazon S3) y, a continuación, cargue el archivo
aws-kinesis-analytics-java-apps-1.0.jarnuevo en el bucket de S3.En la página de la aplicación, en la consola de Managed Service para Apache Flink, seleccione Configurar y actualizar para volver a cargar el archivo JAR de la aplicación.
Ejecute el script
stock.pypara enviar los datos a la transmisión de origen.python stock.py
La aplicación ahora lee los datos de la transmisión de Kinesis en la otra cuenta.
Puede comprobar que la aplicación funciona verificando la métrica PutRecords.Bytes del flujo ExampleOutputStream. Si hay actividad en la transmisión de salida, la aplicación funciona correctamente.
Tutorial: uso de un Truststore personalizado con Amazon MSK
nota
Para ver ejemplos actuales, consulte Ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink.
API de origen de datos actual
Si se utilizan las API de origen de datos actuales, su aplicación puede aprovechar la utilidad MSK Config Providers que se describe aquí
... // define names of config providers: builder.setProperty("config.providers", "secretsmanager,s3import"); // provide implementation classes for each provider: builder.setProperty("config.providers.secretsmanager.class", "com.amazonaws.kafka.config.providers.SecretsManagerConfigProvider"); builder.setProperty("config.providers.s3import.class", "com.amazonaws.kafka.config.providers.S3ImportConfigProvider"); String region = appProperties.get(Helpers.S3_BUCKET_REGION_KEY).toString(); String keystoreS3Bucket = appProperties.get(Helpers.KEYSTORE_S3_BUCKET_KEY).toString(); String keystoreS3Path = appProperties.get(Helpers.KEYSTORE_S3_PATH_KEY).toString(); String truststoreS3Bucket = appProperties.get(Helpers.TRUSTSTORE_S3_BUCKET_KEY).toString(); String truststoreS3Path = appProperties.get(Helpers.TRUSTSTORE_S3_PATH_KEY).toString(); String keystorePassSecret = appProperties.get(Helpers.KEYSTORE_PASS_SECRET_KEY).toString(); String keystorePassSecretField = appProperties.get(Helpers.KEYSTORE_PASS_SECRET_FIELD_KEY).toString(); // region, etc.. builder.setProperty("config.providers.s3import.param.region", region); // properties builder.setProperty("ssl.truststore.location", "${s3import:" + region + ":" + truststoreS3Bucket + "/" + truststoreS3Path + "}"); builder.setProperty("ssl.keystore.type", "PKCS12"); builder.setProperty("ssl.keystore.location", "${s3import:" + region + ":" + keystoreS3Bucket + "/" + keystoreS3Path + "}"); builder.setProperty("ssl.keystore.password", "${secretsmanager:" + keystorePassSecret + ":" + keystorePassSecretField + "}"); builder.setProperty("ssl.key.password", "${secretsmanager:" + keystorePassSecret + ":" + keystorePassSecretField + "}"); ...
Puede encontrar más detalles y un tutorial aquí
API heredadas de SourceFunction
Si utiliza las API heredadas de SourceFunction, su aplicación utilizará esquemas de serialización y deserialización personalizados que anularán el método openpara cargar el almacén de confianza personalizado. Esto hace que el almacén de confianza esté disponible para la aplicación después de que la aplicación se reinicie o sustituya los subprocesos.
El almacén de confianza personalizado se recupera y almacena mediante el siguiente código:
public static void initializeKafkaTruststore() { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); URL inputUrl = classLoader.getResource("kafka.client.truststore.jks"); File dest = new File("/tmp/kafka.client.truststore.jks"); try { FileUtils.copyURLToFile(inputUrl, dest); } catch (Exception ex) { throw new FlinkRuntimeException("Failed to initialize Kakfa truststore", ex); } }
nota
Apache Flink requiere que el almacén de confianza esté en formato JKS.
nota
Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: introducción al uso de la API de DataStream en Managed Service 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 a través de TLS a un clúster de Kafka, el cliente de Kafka (como la aplicación Flink del ejemplo) debe confiar en toda la cadena de confianza que presentan los certificados de servidor del clúster de Kafka (desde la CA emisora hasta la CA de nivel raíz). Como ejemplo de un Truststore personalizado, utilizaremos un clúster de Amazon MSK con la autenticación TLS mutua (MTLS) habilitada. Esto implica que los nodos del clúster de MSK utilizan certificados de servidor emitidos por una Autoridad de Certificado Privado de Certificate Manager (ACM Private CA) de AWS 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 (Certified Authorities, CA) que verifican el certificado presentado por el servidor en una conexión SSL.
También puede usar la técnica de este tutorial para las interacciones entre una aplicación de Managed Service para Apache Flink y otras fuentes de Apache Kafka, como:
Un clúster de Apache Kafka personalizado alojado en AWS (Amazon EC2 o
Amazon EKS ) Un clúster de Confluent Kafka
alojado en AWS Un clúster de Kafka en las instalaciones al que se accede a través de una VPN AWS Direct Connect
Este tutorial contiene las siguientes secciones:
Creación de una VPC con un clúster de Amazon MSK
Para crear una muestra de VPC y un clúster de Amazon MSK al que acceder desde la aplicación de Managed Service para Apache Flink, siga el tutorial Introducción al uso de Amazon MSK.
Cuando complete el tutorial, también haga lo siguiente:
En el Paso 3: crear un tema, repita el comando
kafka-topics.sh --createpara crear un tema de destino llamadoAWSKafkaTutorialTopicDestination:bin/kafka-topics.sh --create --bootstrap-serverZooKeeperConnectionString--replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopicDestinationnota
Si el
kafka-topics.shcomando devuelve unZooKeeperClientTimeoutException, compruebe que el grupo de seguridad del clúster de Kafka tenga una regla de entrada que permita todo el tráfico procedente de la dirección IP privada de la instancia del cliente.Registre la lista de servidores de arranque de su clúster. Puede obtener la lista de servidores de arranque con el siguiente comando (reemplace
ClusterArncon el nombre de recurso de Amazon (ARN) de su clúster de MSK):aws kafka get-bootstrap-brokers --region us-west-2 --cluster-arnClusterArn{... "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 usar la región de AWS seleccionada en el código, los comandos y las entradas de la consola.
Creación de un Truststore personalizado y aplíquelo a su clúster
En esta sección, debe crear una entidad de certificación (Certificate Authority, CA) personalizada, utilizarla para generar un almacén de confianza personalizado y aplicarla a su clúster de MSK.
Para crear y aplicar su almacén de confianza personalizado, siga el tutorial sobre autenticación de clientes de la Guía para desarrolladores de Amazon Managed Streaming para Apache Kafka.
Creación del código de la aplicación
En esta sección, descargará y compilará el archivo JAR de la aplicación.
El código de la aplicación de Java para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git
. Clone el repositorio remoto con el siguiente comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.gitEl 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.Utilice la herramienta Maven de línea de comandos o el entorno de desarrollo que prefiera para crear el archivo JAR. Para compilar el archivo JAR utilizando la herramienta Maven de línea de comandos, introduzca lo siguiente:
mvn package -Dflink.version=1.15.3Si la compilación es correcta, se crea el siguiente archivo:
target/flink-app-1.0-SNAPSHOT.jarnota
El código fuente proporcionado se basa en bibliotecas de Java 11.
Cargar el código de 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: introducción al uso de la API de DataStream en Managed Service para Apache Flink.
nota
Si ha eliminado el bucket de Amazon S3 del tutorial de Introducción, vuelva a seguir el paso Carga del archivo JAR del código de la aplicación.
-
En la consola de Amazon S3, elija el bucket ka-app-code-
<username>y seleccione Subir. -
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
flink-app-1.0-SNAPSHOT.jarque creó en el paso anterior. 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
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.
-
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.
-
-
Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM.
kinesis-analytics-MyApplication-us-west-2 -
Elija Crear aplicación.
nota
Al crear un Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:
-
Política:
kinesis-analytics-service-MyApplication-us-west-2 -
Rol: :
kinesisanalytics-MyApplication-us-west-2
Configurar la aplicación
-
En la página MyApplication, elija Configurar.
-
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.
-
-
En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM
kinesis-analytics-MyApplication-us-west-2.nota
Al especificar los recursos de la aplicación mediante la consola (como registros o una VPC), la consola modifica el rol de ejecución de la aplicación para conceder permiso de acceso a esos recursos.
-
En Propiedades, elija Añadir grupo. Introduzca las siguientes propiedades:
ID de grupo Clave Valor KafkaSourcetema AWSKafkaTutorialTopic KafkaSourcebootstrap.servers La lista de servidores de arranque que guardó anteriormenteKafkaSourcesecurity.protocol SSL KafkaSourcessl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts KafkaSourcessl.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 KafkaSinktema AWSKafkaTutorialTopicDestination KafkaSinkbootstrap.servers La lista de servidores de arranque que guardó anteriormenteKafkaSinksecurity.protocol SSL KafkaSinkssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts KafkaSinkssl.truststore.contraseña changeit KafkaSinktransacción.timeout.ms 1 000 El código de la aplicación lee las propiedades de la aplicación anteriores para configurar el origen y el receptor que se utilizan para interactuar con la VPC y el clúster de Amazon MSK. Para obtener más información acerca de las propiedades, consulte Uso de propiedades de tiempo de ejecución.
-
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.
-
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
En Registro de CloudWatch, elija la casilla de verificación Habilitar.
-
En la sección Nube privada virtual (VPC), elija la VPC que desea asociar a la aplicación. Elija las subredes y el grupo de seguridad asociados a la VPC que desee que utilice la aplicación para acceder a los recursos de la VPC.
-
Elija Actualizar.
nota
Cuando se elige habilitar registros de CloudWatch, Managed Service para Apache Flink crea un grupo de registro y un flujo de registro para usted. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication -
Flujo de registro:
kinesis-analytics-log-stream
Este flujo de registro se utiliza para supervisar la aplicación.
Ejecución de la aplicación
Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.
Pruebe la aplicación
En esta sección, se escriben los registros en el tema de origen. La aplicación lee los registros del tema de origen y los escribe en el tema de destino. Para comprobar que la aplicación funciona, escriba los registros en el tema de origen y lea los registros del tema de destino.
Para escribir y leer registros de los temas, siga los pasos del Paso 6: producir y consumir datos del tutorial Cómo empezar a utilizar Amazon MSK.
Para leer el tema de destino, utilice el nombre del tema de destino en lugar del tema de origen en la segunda conexión al clúster:
bin/kafka-console-consumer.sh --bootstrap-serverBootstrapBrokerString--consumer.config client.properties --topic AWSKafkaTutorialTopicDestination --from-beginning
Si no aparece ningún registro en el tema de destino, consulte la sección No puedo obtener acceso a los recursos de una VPC del tema Resolución de problemas de Managed Service para Apache Flink.
Ejemplos de Python
En los siguientes ejemplos se muestra cómo crear aplicaciones usando Python mediante la API de Tabla de Apache Flink.
Temas
Ejemplo: creación de una ventana de saltos de tamaño constante en Python
nota
Para ver ejemplos actuales, consulte Ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink.
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: introducción al uso de Python en Managed Service para Apache Flink.
Este tema contiene las siguientes secciones:
Creación de 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 (
ExampleInputStreamyExampleOutputStream)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
ExampleInputStreamyExampleOutputStream.¿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>
Escritura de 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 para Python (Boto)
nota
El script de Python en esta sección usa AWS CLI. Debe configurar su AWS CLI para usar las credenciales de su cuenta y la región predeterminada. Para configurar su AWS CLI, escriba lo siguiente:
aws configure
-
Cree un archivo denominado
stock.pycon 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')) -
Ejecute el script
stock.py:$ python stock.pyMantenga el script en ejecución mientras completa el resto del tutorial.
Descarga y examen del código de la aplicación
El código de la aplicación de Python para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git
. Clone el repositorio remoto con el siguiente comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.gitVaya 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_tablepara crear el origen de la tabla de Kinesis:table_env.execute_sql( create_input_table(input_table_name, input_stream, input_region, stream_initpos) )La función
create_tableutiliza un comando SQL para crear una tabla respaldada por el origen de streaming:def create_input_table(table_name, stream_name, region, stream_initpos): return """ CREATE TABLE {0} ( ticker VARCHAR(6), price DOUBLE, event_time TIMESTAMP(3), WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND ) PARTITIONED BY (ticker) WITH ( 'connector' = 'kinesis', 'stream' = '{1}', 'aws.region' = '{2}', 'scan.stream.initpos' = '{3}', 'format' = 'json', 'json.timestamp-format.standard' = 'ISO-8601' ) """.format(table_name, stream_name, region, stream_initpos)La aplicación utiliza el operador
Tumblepara 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.
Compresión y carga del código de Python de flujo 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 Creación de recursos dependientes.
Utilice la aplicación de compresión que prefiera para comprimir los archivos
tumbling-windows.pyyflink-sql-connector-kinesis-1.15.2.jar. Dé nombre al archivomyapp.zip.-
En la consola de Amazon S3, elija el bucket ka-app-code-
<username>y seleccione Subir. -
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
myapp.zipque creó en el paso anterior. 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.
Crear y ejecutar la aplicación de Managed Service para Apache Flink
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.
-
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).
-
-
Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM.
kinesis-analytics-MyApplication-us-west-2 -
Elija Crear aplicación.
nota
Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:
-
Política:
kinesis-analytics-service-MyApplication-us-west-2 -
Rol: :
kinesisanalytics-MyApplication-us-west-2
Configurar la aplicación
-
En la página MyApplication, elija Configurar.
-
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.
-
-
En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM
kinesis-analytics-MyApplication-us-west-2. -
En Propiedades, elija Añadir grupo.
-
Introduzca lo siguiente:
ID de grupo Clave Valor consumer.config.0input.stream.nameExampleInputStreamconsumer.config.0aws.regionus-west-2consumer.config.0scan.stream.initposLATESTSeleccione Guardar.
En Propiedades, elija Añadir grupo nuevamente.
Introduzca lo siguiente:
ID de grupo Clave Valor producer.config.0output.stream.nameExampleOutputStreamproducer.config.0aws.regionus-west-2producer.config.0shard.count1En 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 Especificación de sus archivos de código.Introduzca lo siguiente:
ID de grupo Clave Valor kinesis.analytics.flink.run.optionspythontumbling-windows.pykinesis.analytics.flink.run.optionsjarfileflink-sql-connector-kinesis-1.15.2.jar-
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
En Registro de CloudWatch, seleccione la casilla de verificación Habilitar.
-
Elija Actualizar.
nota
Cuando se elige habilitar registros de CloudWatch, Managed Service para Apache Flink crea un grupo de registro y un flujo de registro para usted. 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.
Modificar la política de IAM
Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Elija Políticas. Elija la política
kinesis-analytics-service-MyApplication-us-west-2que la consola creó en su nombre en la sección anterior. -
En la página Resumen, elija Editar política. Seleccione la pestaña JSON.
-
Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (
012345678901) por el ID de su cuenta.
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 de Managed Service para Apache Flink en la consola de CloudWatch para verificar que la aplicación funciona.
Limpieza de recursos de AWS
En esta sección se incluyen los procedimientos para limpiar los recursos de AWS creados en el tutorial Ventana de salto de tamaño constante.
Este tema contiene las siguientes secciones:
Eliminación de su aplicación de Managed Service para Apache Flink
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
En el panel de Managed Service para Apache Flink, elija MyApplication.
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Eliminación de sus flujos de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel de Kinesis Data Streams, elija ExampleInputStream.
En la página ExampleInputStream, elija Eliminar flujo de Kinesis y, a continuación, confirme la eliminación.
En la página Flujos de Kinesis, elija ExampleOutputStream, elija Acciones, elija Eliminar y, a continuación, confirme la eliminación.
Eliminación del objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el bucket ka-app-code-
<username>.Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Eliminación de sus recursos de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. En la barra de navegación, seleccione Políticas.
En el control de filtros, introduzca kinesis.
Elija la política kinesis-analytics-service-MyApplication-us-west-2.
Seleccione Acciones de política y, a continuación, Eliminar.
En la barra de navegación, seleccione Roles.
Elija el rol kinesis-analytics-MyApplication-us-west-2.
Elija Eliminar rol y, a continuación, confirme la eliminación.
Eliminación de sus recursos de CloudWatch
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registro /aws/kinesis-analytics/MyApplication.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Ejemplo: creación de una ventana deslizante en Python
nota
Para ver ejemplos actuales, consulte Ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink.
nota
Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: introducción al uso de Python en Managed Service para Apache Flink.
Este tema contiene las siguientes secciones:
Creación de 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 (
ExampleInputStreamyExampleOutputStream)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
ExampleInputStreamyExampleOutputStream.¿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>
Escritura de 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 para Python (Boto)
nota
El script de Python en esta sección usa AWS CLI. Debe configurar su AWS CLI para usar las credenciales de su cuenta y la región predeterminada. Para configurar su AWS CLI, escriba lo siguiente:
aws configure
-
Cree un archivo denominado
stock.pycon 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')) -
Ejecute el script
stock.py:$ python stock.pyMantenga el script en ejecución mientras completa el resto del tutorial.
Descarga y examen del código de la aplicación
El código de la aplicación de Python para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git
. Clone el repositorio remoto con el siguiente comando:
git clone https://github.com/aws-samples/>amazon-kinesis-data-analytics-java-examplesVaya 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_tablepara crear el origen de la tabla de Kinesis:table_env.execute_sql( create_input_table(input_table_name, input_stream, input_region, stream_initpos) )La función
create_input_tableutiliza un comando SQL para crear una tabla respaldada por el origen de streaming:def create_input_table(table_name, stream_name, region, stream_initpos): return """ CREATE TABLE {0} ( ticker VARCHAR(6), price DOUBLE, event_time TIMESTAMP(3), WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND ) PARTITIONED BY (ticker) WITH ( 'connector' = 'kinesis', 'stream' = '{1}', 'aws.region' = '{2}', 'scan.stream.initpos' = '{3}', 'format' = 'json', 'json.timestamp-format.standard' = 'ISO-8601' ) """.format(table_name, stream_name, region, stream_initpos) }La aplicación utiliza el operador
Slidepara 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 flink-sql-connector-kinesis-1.15.2.jar
.
Compresión y carga del código de Python de flujo 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 Creación de recursos dependientes.
En esta sección, se describe cómo empaquetar la aplicación de Python.
Utilice la aplicación de compresión que prefiera para comprimir los archivos
sliding-windows.pyyflink-sql-connector-kinesis-1.15.2.jar. Dé nombre al archivomyapp.zip.-
En la consola de Amazon S3, elija el bucket ka-app-code-
<username>y seleccione Subir. -
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
myapp.zipque creó en el paso anterior. 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.
Crear y ejecutar la aplicación de Managed Service para Apache Flink
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.
-
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).
-
-
Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM.
kinesis-analytics-MyApplication-us-west-2 -
Elija Crear aplicación.
nota
Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:
-
Política:
kinesis-analytics-service-MyApplication-us-west-2 -
Rol: :
kinesisanalytics-MyApplication-us-west-2
Configurar la aplicación
-
En la página MyApplication, elija Configurar.
-
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.
-
-
En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM
kinesis-analytics-MyApplication-us-west-2. -
En Propiedades, elija Añadir grupo.
-
Escriba las siguientes propiedades y valores de la aplicación:
ID de grupo Clave Valor consumer.config.0input.stream.nameExampleInputStreamconsumer.config.0aws.regionus-west-2consumer.config.0scan.stream.initposLATESTSeleccione Guardar.
En Propiedades, elija Añadir grupo nuevamente.
Escriba las siguientes propiedades y valores de la aplicación:
ID de grupo Clave Valor producer.config.0output.stream.nameExampleOutputStreamproducer.config.0aws.regionus-west-2producer.config.0shard.count1En 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 Especificación de sus archivos de código.Escriba las siguientes propiedades y valores de la aplicación:
ID de grupo Clave Valor kinesis.analytics.flink.run.optionspythonsliding-windows.pykinesis.analytics.flink.run.optionsjarfileflink-sql-connector-kinesis_1.15.2.jar-
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
En Registro de CloudWatch, seleccione la casilla de verificación Habilitar.
-
Elija Actualizar.
nota
Cuando se elige habilitar registros de CloudWatch, Managed Service para Apache Flink crea un grupo de registro y un flujo de registro para usted. 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.
Modificar la política de IAM
Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Elija Políticas. Elija la política
kinesis-analytics-service-MyApplication-us-west-2que la consola creó en su nombre en la sección anterior. -
En la página Resumen, elija Editar política. Seleccione la pestaña JSON.
-
Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (
012345678901) por el ID de su cuenta.
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 de Managed Service para Apache Flink en la consola de CloudWatch para verificar que la aplicación funciona.
Limpieza de recursos de AWS
En esta sección se incluyen los procedimientos para limpiar los recursos de AWS creados en el tutorial Ventana deslizante.
Este tema contiene las siguientes secciones:
Eliminación de su aplicación de Managed Service para Apache Flink
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
En el panel de Managed Service para Apache Flink, elija MyApplication.
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Eliminación de sus flujos de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel de Kinesis Data Streams, elija ExampleInputStream.
En la página ExampleInputStream, elija Eliminar flujo de Kinesis y, a continuación, confirme la eliminación.
En la página Flujos de Kinesis, elija ExampleOutputStream, elija Acciones, elija Eliminar y, a continuación, confirme la eliminación.
Eliminación del objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el bucket ka-app-code-
<username>.Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Eliminación de sus recursos de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. En la barra de navegación, seleccione Políticas.
En el control de filtros, introduzca kinesis.
Elija la política kinesis-analytics-service-MyApplication-us-west-2.
Seleccione Acciones de política y, a continuación, Eliminar.
En la barra de navegación, seleccione Roles.
Elija el rol kinesis-analytics-MyApplication-us-west-2.
Elija Eliminar rol y, a continuación, confirme la eliminación.
Eliminación de sus recursos de CloudWatch
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registro /aws/kinesis-analytics/MyApplication.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Ejemplo: envío de datos de flujo a Amazon S3 en Python
nota
Para ver ejemplos actuales, consulte Ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink.
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: introducción al uso de Python en Managed Service para Apache Flink.
Este tema contiene las siguientes secciones:
Creación de 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:
Creación y actualización de flujos de datos en la Guía para desarrolladores de Amazon Kinesis Data Streams. Asigne el nombre
ExampleInputStreama 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>
Escritura de 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 para Python (Boto)
nota
El script de Python en esta sección usa AWS CLI. Debe configurar su AWS CLI para usar las credenciales de su cuenta y la región predeterminada. Para configurar su AWS CLI, escriba lo siguiente:
aws configure
-
Cree un archivo denominado
stock.pycon 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')) -
Ejecute el script
stock.py:$ python stock.pyMantenga el script en ejecución mientras completa el resto del tutorial.
Descarga y examen del código de la aplicación
El código de la aplicación de Python para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git
. Clone el repositorio remoto con el siguiente comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.gitVaya 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_tablepara crear el origen de la tabla de Kinesis:table_env.execute_sql( create_source_table(input_table_name, input_stream, input_region, stream_initpos) )La función
create_source_tableutiliza un comando SQL para crear una tabla respaldada por el origen de streamingimport 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
filesystempara 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 flink-sql-connector-kinesis-1.15.2.jar
.
Compresión y carga del código de Python de flujo 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 Creación de recursos dependientes.
Utilice la aplicación de compresión que prefiera para comprimir los archivos
streaming-file-sink.pyy flink-sql-connector-kinesis-1.15.2.jar. Dé nombre al archivo myapp.zip.-
En la consola de Amazon S3, elija el bucket ka-app-code-
<username>y seleccione Subir. -
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
myapp.zipque creó en el paso anterior. 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.
Crear y ejecutar la aplicación de Managed Service para Apache Flink
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.
-
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).
-
-
Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM.
kinesis-analytics-MyApplication-us-west-2 -
Elija Crear aplicación.
nota
Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:
-
Política:
kinesis-analytics-service-MyApplication-us-west-2 -
Rol: :
kinesisanalytics-MyApplication-us-west-2
Configurar la aplicación
-
En la página MyApplication, elija Configurar.
-
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.
-
-
En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM
kinesis-analytics-MyApplication-us-west-2. -
En Propiedades, elija Añadir grupo.
-
Escriba las siguientes propiedades y valores de la aplicación:
ID de grupo Clave Valor consumer.config.0input.stream.nameExampleInputStreamconsumer.config.0aws.regionus-west-2consumer.config.0scan.stream.initposLATESTSeleccione Guardar.
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 Especificación de sus archivos de código.Escriba las siguientes propiedades y valores de la aplicación:
ID de grupo Clave Valor kinesis.analytics.flink.run.optionspythonstreaming-file-sink.pykinesis.analytics.flink.run.optionsjarfileS3Sink/lib/flink-sql-connector-kinesis-1.15.2.jarEn 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 Especificación de sus archivos de código.Introduzca las siguientes propiedades y valores de la aplicación: (sustituya
bucket-namepor el nombre real de su bucket de Amazon S3).ID de grupo Clave Valor sink.config.0output.bucket.namebucket-name-
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
En Registro de CloudWatch, seleccione la casilla de verificación Habilitar.
-
Elija Actualizar.
nota
Cuando se elige habilitar registros de CloudWatch, Managed Service para Apache Flink crea un grupo de registro y un flujo de registro para usted. 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.
Modificar la política de IAM
Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Elija Políticas. Elija la política
kinesis-analytics-service-MyApplication-us-west-2que la consola creó en su nombre en la sección anterior. -
En la página Resumen, elija Editar política. Seleccione la pestaña JSON.
-
Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (
012345678901) por el ID de su cuenta.
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 de Managed Service para Apache Flink en la consola de CloudWatch para verificar que la aplicación funciona.
Limpieza de recursos de AWS
En esta sección se incluyen los procedimientos para limpiar los recursos de AWS creados en el tutorial Ventana deslizante.
Este tema contiene las siguientes secciones:
Eliminación de su aplicación de Managed Service para Apache Flink
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
En el panel de Managed Service para Apache Flink, elija MyApplication.
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Eliminación de su flujo de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel de Kinesis Data Streams, elija ExampleInputStream.
En la página ExampleInputStream, elija Eliminar flujo de Kinesis y, a continuación, confirme la eliminación.
Eliminación de objetos y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el bucket ka-app-code-
<username>.Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Eliminación de sus recursos de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. En la barra de navegación, seleccione Políticas.
En el control de filtros, introduzca kinesis.
Elija la política kinesis-analytics-service-MyApplication-us-west-2.
Seleccione Acciones de política y, a continuación, Eliminar.
En la barra de navegación, seleccione Roles.
Elija el rol kinesis-analytics-MyApplication-us-west-2.
Elija Eliminar rol y, a continuación, confirme la eliminación.
Eliminación de sus recursos de CloudWatch
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registro /aws/kinesis-analytics/MyApplication.
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.
Temas
Ejemplo: creación de una ventana de saltos de tamaño constante en Scala
nota
Para ver ejemplos actuales, consulte Ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink.
nota
A partir de la versión 1.15, Flink es gratuito para Scala. Las aplicaciones ahora pueden usar la API de Java desde cualquier versión de Scala. Flink sigue utilizando Scala internamente en algunos componentes clave, pero no lo expone al cargador de clases del código de usuario. Por eso, los usuarios deben agregar las dependencias de Scala a sus archivos jar.
Para obtener más información sobre los cambios de Scala en Flink 1.15, consulte Scala Free in One Fifteen
En este ejercicio, creará una aplicación de streaming sencilla que utilice Scala 3.2.0 y la API Java DataStream de Flink. 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).
Este tema contiene las siguientes secciones:
Descarga y examen del código de la aplicación
El código de la aplicación de Python para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git
. Clone el repositorio remoto con el siguiente comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.gitVaya 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.sbtcontiene 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.scalacontiene 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 recepción para obtener acceso a recursos externos mediante un objeto StreamExecutionEnvironment.
La aplicación crea conectores de origen y recepción mediante las propiedades dinámicas de la aplicación. Las propiedades de tiempo de ejecución de la aplicación se leen para configurar los conectores. Para obtener más información sobre las propiedades de tiempo de ejecución, consulte Runtime Properties.
Compilación y carga del código de la aplicación
En esta sección, compilará y cargará el código de su aplicación a un bucket de Amazon S3.
Compilación del código de la aplicación
Utilice la herramienta de creación SBT
Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Se puede compilar y empaquetar su código con SBT:
sbt assembly-
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.
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija Crear bucket
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.En el paso Configurar opciones, deje los ajustes tal y como están y elija Siguiente.
En el paso Establecer permisos, deje los ajustes tal y como están y elija Siguiente.
Elija Crear bucket.
Abra el bucket
ka-app-code-<username>y elija Cargar.-
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
tumbling-window-scala-1.0.jarque creó en el paso anterior. 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 y ejecución de 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
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.
-
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).
-
-
Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM.
kinesis-analytics-MyApplication-us-west-2 -
Elija Crear aplicación.
nota
Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:
-
Política:
kinesis-analytics-service-MyApplication-us-west-2 -
Rol: :
kinesisanalytics-MyApplication-us-west-2
Configurar la aplicación
Utilice el siguiente procedimiento para configurar la aplicación.
Cómo configurar la aplicación
-
En la página MyApplication, elija Configurar.
-
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.
-
-
En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM
kinesis-analytics-MyApplication-us-west-2. -
En Propiedades, elija Añadir grupo.
-
Introduzca lo siguiente:
ID de grupo Clave Valor ConsumerConfigPropertiesinput.stream.nameExampleInputStreamConsumerConfigPropertiesaws.regionus-west-2ConsumerConfigPropertiesflink.stream.initposLATESTSeleccione Guardar.
En Propiedades, elija Añadir grupo nuevamente.
Introduzca lo siguiente:
ID de grupo Clave Valor ProducerConfigPropertiesoutput.stream.nameExampleOutputStreamProducerConfigPropertiesaws.regionus-west-2-
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
En Registro de CloudWatch, elija la casilla de verificación Habilitar.
-
Elija Actualizar.
nota
Al activar el registro de Amazon CloudWatch, Managed Service para Apache Flink crea un grupo de registro y un flujo de registro. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication -
Flujo de registro:
kinesis-analytics-log-stream
Modificar la política de IAM
Edite la política de IAM para añadir los permisos para acceder al bucket de Amazon S3.
Cómo editar la política de IAM para añadir los permisos para el bucket de S3
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Elija Políticas. Elija la política
kinesis-analytics-service-MyApplication-us-west-2que la consola creó en su nombre en la sección anterior. -
En la página Resumen, elija Editar política. Seleccione la pestaña JSON.
-
Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (
012345678901) por el ID de su cuenta.
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.
Detener la aplicación
Para detener la aplicación, en la página MyApplication, seleccione Detener. Confirme la acción.
Creación y ejecución de la aplicación (CLI)
En esta sección, se utiliza AWS Command Line Interface para crear y ejecutar la aplicación Managed Service para Apache Flink. Utilice el comando AWS CLI kinesisanalyticsv2 para crear aplicaciones de Managed Service para Apache Flink e interactuar con ellas.
Creación de una política de permisos
nota
Debe crear una política de permisos y un rol para su aplicación. Si no crea estos recursos de IAM, la aplicación no podrá acceder a sus flujos de datos y de registro.
En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción de lectura en el flujo de origen y otra que concede permisos para las acciones de escritura en el flujo de recepción. A continuación, asocie la política a un rol de IAM (que se crea en la siguiente sección). Por lo tanto, cuando Managed Service para Apache Flink asume el rol, el servicio tiene los permisos necesarios para leer desde el flujo de origen y escribir en el flujo de recepción.
Utilice el siguiente código para crear la política de permisos AKReadSourceStreamWriteSinkStream. Reemplace username por el nombre de usuario que se utilizó para crear el bucket de Amazon S3 para almacenar el código de la aplicación. Reemplace el ID de la cuenta en el nombre de recurso de Amazon (ARN) (012345678901) por el ID de su cuenta. El rol de ejecución del servicio MF-stream-rw-role debe adaptarse al rol específico del cliente.
{ "ApplicationName": "tumbling_window", "ApplicationDescription": "Scala tumbling window application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "tumbling-window-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }
Para obtener instrucciones paso a paso para crear una política de permisos, consulte Tutorial: crear y asociar su primera política administrada por el cliente en la Guía del usuario de IAM.
Creación de un rol de IAM
En esta sección, creará un rol de IAM que la aplicación de Managed Service para Apache Flink pueda asumir para leer un flujo de origen y escribir en el flujo de recepción.
Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se conceden a través del rol de IAM. Cada rol de IAM tiene dos políticas asociadas. La política de confianza concede a Managed Service para Apache Flink permiso para asumir el rol, y la política de permisos determina lo que Managed Service para Apache Flink puede hacer después de asumir el rol.
Usted deberá asociar la política de permisos que ha creado en la sección anterior a este rol.
Cómo crear un rol de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. En el panel de navegación, seleccione Roles y, a continuación, seleccione Crear rol.
En Seleccionar tipo de entidad de confianza, elija Servicio de AWS
En Elegir el servicio que usará este rol, elija Kinesis.
En Seleccione su caso de uso, elija Managed Service para Apache Flink.
Elija Siguiente: permisos.
En la página Asociar políticas de permisos, elija Siguiente: Revisión. Asociará políticas de permisos después de crear el rol.
En la página Crear rol, escriba
MF-stream-rw-rolecomo Nombre de rol. Elija Crear rol.Ahora ha creado un nuevo rol de IAM llamado
MF-stream-rw-role. A continuación, actualice las políticas de confianza y permisos para el rolAsocie 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.
En la página Resumen, elija la pestaña Permisos.
Seleccione Asociar políticas.
En el campo de búsqueda, escriba
AKReadSourceStreamWriteSinkStream(la política que ha creado en la sección anterior).Elija la política
AKReadSourceStreamWriteSinkStreamy, a continuación, elija Asociar política.
Ahora ha creado el rol de ejecución de servicio que utiliza la aplicación para obtener acceso a los recursos. Anote el ARN del nuevo rol.
Para obtener instrucciones paso a paso para crear un rol, consulte Creating an IAM Role (Console) en la Guía del usuario de IAM.
Creación de la aplicación
Guarde el siguiente código JSON en un archivo denominado create_request.json. Cambie el ARN del rol de ejemplo por el ARN del rol que ha creado antes. Reemplace el sufijo del ARN del bucket (nombre de usuario) por el sufijo que eligió en la sección anterior. Reemplace el ID de la cuenta de muestra (012345678901) en el rol de ejecución del servicio por el ID de su cuenta. El ServiceExecutionRole debe incluir el rol de usuario de IAM que creó en la sección anterior.
"ApplicationName": "tumbling_window", "ApplicationDescription": "Scala getting started application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "tumbling-window-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }
Ejecute CreateApplication 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.
Inicio de la aplicación
En esta sección, utilizará la acción StartApplication para iniciar la aplicación.
Cómo iniciar la aplicación
Guarde el siguiente código JSON en un archivo denominado
start_request.json.{ "ApplicationName": "tumbling_window", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }Ejecute la acción
StartApplicationcon 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. Puede comprobar las métricas de Managed Service para Apache Flink en la consola de Amazon CloudWatch para comprobar que la aplicación funciona.
Detener la aplicación
En esta sección, utilizará la acción StopApplication para detener la aplicación.
Cómo detener la aplicación
Guarde el siguiente código JSON en un archivo denominado
stop_request.json.{ "ApplicationName": "tumbling_window" }Ejecute la acción
StopApplicationcon 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.
Incorporación de una opción de registro de CloudWatch
Puede utilizar la AWS CLI para añadir un flujo de registro de Amazon CloudWatch a su aplicación. Para obtener información sobre el uso de CloudWatch Logs con su aplicación, consulte Setting Up Application Logging.
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
Guarde el siguiente código JSON en un archivo denominado
update_properties_request.json.{"ApplicationName": "tumbling_window", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } } }Ejecute la acción
UpdateApplicationcon 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ódigo, utilice la acción de CLI UpdateApplication.
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 usar la AWS CLI, elimine el paquete de código anterior de su bucket de Amazon S3, cargue la nueva versión y llame a UpdateApplication, 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 Creación de 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" } } } } }
Limpieza de recursos de AWS
En esta sección se incluyen los procedimientos para limpiar los recursos de AWS creados en el tutorial Ventana de salto de tamaño constante.
Este tema contiene las siguientes secciones:
Eliminación de su aplicación de Managed Service para Apache Flink
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
En el panel de Managed Service para Apache Flink, elija MyApplication.
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Eliminación de sus flujos de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel de Kinesis Data Streams, elija ExampleInputStream.
En la página ExampleInputStream, elija Eliminar flujo de Kinesis y, a continuación, confirme la eliminación.
En la página Flujos de Kinesis, elija ExampleOutputStream, elija Acciones, elija Eliminar y, a continuación, confirme la eliminación.
Eliminación del objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el bucket ka-app-code-
<username>.Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Eliminación de sus recursos de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. En la barra de navegación, seleccione Políticas.
En el control de filtros, introduzca kinesis.
Elija la política kinesis-analytics-service-MyApplication-us-west-2.
Seleccione Acciones de política y, a continuación, Eliminar.
En la barra de navegación, seleccione Roles.
Elija el rol kinesis-analytics-MyApplication-us-west-2.
Elija Eliminar rol y, a continuación, confirme la eliminación.
Eliminación de sus recursos de CloudWatch
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registro /aws/kinesis-analytics/MyApplication.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Ejemplo: creación de una ventana deslizante en Scala
nota
Para ver ejemplos actuales, consulte Ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink.
nota
A partir de la versión 1.15, Flink es gratuito para Scala. Las aplicaciones ahora pueden usar la API de Java desde cualquier versión de Scala. Flink sigue utilizando Scala internamente en algunos componentes clave, pero no lo expone al cargador de clases del código de usuario. Por eso, los usuarios deben agregar las dependencias de Scala a sus archivos jar.
Para obtener más información sobre los cambios de Scala en Flink 1.15, consulte Scala Free in One Fifteen
En este ejercicio, creará una aplicación de streaming sencilla que utilice Scala 3.2.0 y la API Java DataStream de Flink. 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).
Este tema contiene las siguientes secciones:
Descarga y examen del código de la aplicación
El código de la aplicación de Python para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git
. Clone el repositorio remoto con el siguiente comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.gitVaya 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.sbtcontiene 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.scalacontiene 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 recepción para obtener acceso a recursos externos mediante un objeto StreamExecutionEnvironment.
La aplicación crea conectores de origen y recepción mediante las propiedades dinámicas de la aplicación. Las propiedades de tiempo de ejecución de la aplicación se leen para configurar los conectores. Para obtener más información sobre las propiedades de tiempo de ejecución, consulte Runtime Properties.
Compilación y carga del código de la aplicación
En esta sección, compilará y cargará el código de su aplicación a un bucket de Amazon S3.
Compilación del código de la aplicación
Utilice la herramienta de creación SBT
Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Se puede compilar y empaquetar su código con SBT:
sbt assembly-
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.
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija Crear bucket
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.En el paso Configurar opciones, deje los ajustes tal y como están y elija Siguiente.
En el paso Establecer permisos, deje los ajustes tal y como están y elija Siguiente.
Elija Crear bucket.
Abra el bucket
ka-app-code-<username>y elija Cargar.-
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
sliding-window-scala-1.0.jarque creó en el paso anterior. 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 y ejecución de 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
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.
-
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).
-
-
Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM.
kinesis-analytics-MyApplication-us-west-2 -
Elija Crear aplicación.
nota
Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:
-
Política:
kinesis-analytics-service-MyApplication-us-west-2 -
Rol: :
kinesisanalytics-MyApplication-us-west-2
Configurar la aplicación
Utilice el siguiente procedimiento para configurar la aplicación.
Cómo configurar la aplicación
-
En la página MyApplication, elija Configurar.
-
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..
-
-
En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM
kinesis-analytics-MyApplication-us-west-2. -
En Propiedades, elija Añadir grupo.
-
Introduzca lo siguiente:
ID de grupo Clave Valor ConsumerConfigPropertiesinput.stream.nameExampleInputStreamConsumerConfigPropertiesaws.regionus-west-2ConsumerConfigPropertiesflink.stream.initposLATESTSeleccione Guardar.
En Propiedades, elija Añadir grupo nuevamente.
Introduzca lo siguiente:
ID de grupo Clave Valor ProducerConfigPropertiesoutput.stream.nameExampleOutputStreamProducerConfigPropertiesaws.regionus-west-2-
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
En Registro de CloudWatch, elija la casilla de verificación Habilitar.
-
Elija Actualizar.
nota
Al activar el registro de Amazon CloudWatch, Managed Service para Apache Flink crea un grupo de registro y un flujo de registro. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication -
Flujo de registro:
kinesis-analytics-log-stream
Modificar la política de IAM
Edite la política de IAM para añadir los permisos para acceder al bucket de Amazon S3.
Cómo editar la política de IAM para añadir los permisos para el bucket de S3
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Elija Políticas. Elija la política
kinesis-analytics-service-MyApplication-us-west-2que la consola creó en su nombre en la sección anterior. -
En la página Resumen, elija Editar política. Seleccione la pestaña JSON.
-
Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (
012345678901) por el ID de su cuenta.
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.
Detener la aplicación
Para detener la aplicación, en la página MyApplication, seleccione Detener. Confirme la acción.
Creación y ejecución de la aplicación (CLI)
En esta sección, se utiliza AWS Command Line Interface para crear y ejecutar la aplicación Managed Service para Apache Flink. Utilice el comando AWS CLI kinesisanalyticsv2 para crear aplicaciones de Managed Service para Apache Flink e interactuar con ellas.
Creación de una política de permisos
nota
Debe crear una política de permisos y un rol para su aplicación. Si no crea estos recursos de IAM, la aplicación no podrá acceder a sus flujos de datos y de registro.
En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción de lectura en el flujo de origen y otra que concede permisos para las acciones de escritura en el flujo de recepción. A continuación, asocie la política a un rol de IAM (que se crea en la siguiente sección). Por lo tanto, cuando Managed Service para Apache Flink asume el rol, el servicio tiene los permisos necesarios para leer desde el flujo de origen y escribir en el flujo de recepción.
Utilice el siguiente código para crear la política de permisos AKReadSourceStreamWriteSinkStream. Reemplace username por el nombre de usuario que se utilizó para crear el bucket de Amazon S3 para almacenar el código de la aplicación. Reemplace el ID de la cuenta en el nombre de recurso de Amazon (ARN) (012345678901) por el ID de su cuenta.
{ "ApplicationName": "sliding_window", "ApplicationDescription": "Scala sliding window application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "sliding-window-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }
Para obtener instrucciones paso a paso para crear una política de permisos, consulte Tutorial: crear y asociar su primera política administrada por el cliente en la Guía del usuario de IAM.
Creación de un rol de IAM
En esta sección, creará un rol de IAM que la aplicación de Managed Service para Apache Flink pueda asumir para leer un flujo de origen y escribir en el flujo de recepción.
Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se conceden a través del rol de IAM. Cada rol de IAM tiene dos políticas asociadas. La política de confianza concede a Managed Service para Apache Flink permiso para asumir el rol, y la política de permisos determina lo que Managed Service para Apache Flink puede hacer después de asumir el rol.
Usted deberá asociar la política de permisos que ha creado en la sección anterior a este rol.
Cómo crear un rol de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. En el panel de navegación, seleccione Roles y, a continuación, seleccione Crear rol.
En Seleccionar tipo de entidad de confianza, elija Servicio de AWS
En Elegir el servicio que usará este rol, elija Kinesis.
En Seleccione su caso de uso, elija Managed Service para Apache Flink.
Elija Siguiente: permisos.
En la página Asociar políticas de permisos, elija Siguiente: Revisión. Asociará políticas de permisos después de crear el rol.
En la página Crear rol, escriba
MF-stream-rw-rolecomo Nombre de rol. Elija Crear rol.Ahora ha creado un nuevo rol de IAM llamado
MF-stream-rw-role. A continuación, actualice las políticas de confianza y permisos para el rolAsocie 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.
En la página Resumen, elija la pestaña Permisos.
Seleccione Asociar políticas.
En el campo de búsqueda, escriba
AKReadSourceStreamWriteSinkStream(la política que ha creado en la sección anterior).Elija la política
AKReadSourceStreamWriteSinkStreamy, a continuación, elija Asociar política.
Ahora ha creado el rol de ejecución de servicio que utiliza la aplicación para obtener acceso a los recursos. Anote el ARN del nuevo rol.
Para obtener instrucciones paso a paso para crear un rol, consulte Creating an IAM Role (Console) en la Guía del usuario de IAM.
Creación de la aplicación
Guarde el siguiente código JSON en un archivo denominado create_request.json. Cambie el ARN del rol de ejemplo por el ARN del rol que ha creado antes. Reemplace el sufijo del ARN del bucket (nombre de usuario) por el sufijo que eligió en la sección anterior. Reemplace el ID de la cuenta de muestra (012345678901) en el rol de ejecución del servicio por el ID de su cuenta.
{ "ApplicationName": "sliding_window", "ApplicationDescription": "Scala sliding_window application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "sliding-window-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }
Ejecute CreateApplication 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.
Inicio de la aplicación
En esta sección, utilizará la acción StartApplication para iniciar la aplicación.
Cómo iniciar la aplicación
Guarde el siguiente código JSON en un archivo denominado
start_request.json.{ "ApplicationName": "sliding_window", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }Ejecute la acción
StartApplicationcon 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. Puede comprobar las métricas de Managed Service para Apache Flink en la consola de Amazon CloudWatch para comprobar que la aplicación funciona.
Detener la aplicación
En esta sección, utilizará la acción StopApplication para detener la aplicación.
Cómo detener la aplicación
Guarde el siguiente código JSON en un archivo denominado
stop_request.json.{ "ApplicationName": "sliding_window" }Ejecute la acción
StopApplicationcon 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.
Incorporación de una opción de registro de CloudWatch
Puede utilizar la AWS CLI para añadir un flujo de registro de Amazon CloudWatch a su aplicación. Para obtener información sobre el uso de CloudWatch Logs con su aplicación, consulte Setting Up Application Logging.
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
Guarde el siguiente código JSON en un archivo denominado
update_properties_request.json.{"ApplicationName": "sliding_window", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } } }Ejecute la acción
UpdateApplicationcon 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ódigo, utilice la acción de CLI UpdateApplication.
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 usar la AWS CLI, elimine el paquete de código anterior de su bucket de Amazon S3, cargue la nueva versión y llame a UpdateApplication, 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 Creación de 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" } } } } }
Limpieza de recursos de AWS
En esta sección se incluyen los procedimientos para limpiar los recursos de AWS creados en el tutorial Ventana deslizante.
Este tema contiene las siguientes secciones:
Eliminación de su aplicación de Managed Service para Apache Flink
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
En el panel de Managed Service para Apache Flink, elija MyApplication.
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Eliminación de sus flujos de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel de Kinesis Data Streams, elija ExampleInputStream.
En la página ExampleInputStream, elija Eliminar flujo de Kinesis y, a continuación, confirme la eliminación.
En la página Flujos de Kinesis, elija ExampleOutputStream, elija Acciones, elija Eliminar y, a continuación, confirme la eliminación.
Eliminación del objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el bucket ka-app-code-
<username>.Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Eliminación de sus recursos de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. En la barra de navegación, seleccione Políticas.
En el control de filtros, introduzca kinesis.
Elija la política kinesis-analytics-service-MyApplication-us-west-2.
Seleccione Acciones de política y, a continuación, Eliminar.
En la barra de navegación, seleccione Roles.
Elija el rol kinesis-analytics-MyApplication-us-west-2.
Elija Eliminar rol y, a continuación, confirme la eliminación.
Eliminación de sus recursos de CloudWatch
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registro /aws/kinesis-analytics/MyApplication.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Ejemplo: envío de datos de flujo a Amazon S3 en Scala
nota
Para ver ejemplos actuales, consulte Ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink.
nota
A partir de la versión 1.15, Flink es gratuito para Scala. Las aplicaciones ahora pueden usar la API de Java desde cualquier versión de Scala. Flink sigue utilizando Scala internamente en algunos componentes clave, pero no lo expone al cargador de clases del código de usuario. Por eso, los usuarios deben agregar las dependencias de Scala a sus archivos jar.
Para obtener más información sobre los cambios de Scala en Flink 1.15, consulte Scala Free in One Fifteen
En este ejercicio, creará una aplicación de streaming sencilla que utilice Scala 3.2.0 y la API Java DataStream de Flink. 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>.
Este tema contiene las siguientes secciones:
Descarga y examen del código de la aplicación
El código de la aplicación de Python para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale el cliente Git. Para obtener más información, consulte Installing Git
. Clone el repositorio remoto con el siguiente comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.gitVaya 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.sbtcontiene 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.scalacontiene 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 recepción para obtener acceso a recursos externos mediante un objeto StreamExecutionEnvironment.
La aplicación crea conectores de origen y recepción mediante las propiedades dinámicas de la aplicación. Las propiedades de tiempo de ejecución de la aplicación se leen para configurar los conectores. Para obtener más información sobre las propiedades de tiempo de ejecución, consulte Runtime Properties.
Compilación y carga del código de la aplicación
En esta sección, compilará y cargará el código de su aplicación a un bucket de Amazon S3.
Compilación del código de la aplicación
Utilice la herramienta de creación SBT
Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Se puede compilar y empaquetar su código con SBT:
sbt assembly-
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.
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija Crear bucket
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.En el paso Configurar opciones, deje los ajustes tal y como están y elija Siguiente.
En el paso Establecer permisos, deje los ajustes tal y como están y elija Siguiente.
Elija Crear bucket.
Abra el bucket
ka-app-code-<username>y elija Cargar.-
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
s3-sink-scala-1.0.jarque creó en el paso anterior. 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 y ejecución de 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
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
-
En el panel de Managed Service para Apache Flink, seleccione Crear aplicación de análisis.
-
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).
-
-
Para los permisos de acceso, seleccione Crear o actualizar el rol de IAM.
kinesis-analytics-MyApplication-us-west-2 -
Elija Crear aplicación.
nota
Al crear una aplicación de Managed Service para Apache Flink mediante la consola, tiene la opción de tener un rol de IAM y una política creada para su aplicación. La aplicación utiliza este rol y la política para acceder a los recursos dependientes. Estos recursos de IAM reciben un nombre usando el nombre de la aplicación y la región tal y como se indica a continuación:
-
Política:
kinesis-analytics-service-MyApplication-us-west-2 -
Rol: :
kinesisanalytics-MyApplication-us-west-2
Configurar la aplicación
Utilice el siguiente procedimiento para configurar la aplicación.
Cómo configurar la aplicación
-
En la página MyApplication, elija Configurar.
-
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.
-
-
En Acceso a los recursos de la aplicación, en Permisos de acceso, seleccione Crear o actualizar el rol de IAM
kinesis-analytics-MyApplication-us-west-2. -
En Propiedades, elija Añadir grupo.
-
Introduzca lo siguiente:
ID de grupo Clave Valor ConsumerConfigPropertiesinput.stream.nameExampleInputStreamConsumerConfigPropertiesaws.regionus-west-2ConsumerConfigPropertiesflink.stream.initposLATESTSeleccione Save.
-
En Propiedades, elija Añadir grupo.
-
Introduzca lo siguiente:
ID de grupo Clave Valor ProducerConfigPropertiess3.sink.paths3a://ka-app-code-<user-name>/data -
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
En Registro de CloudWatch, elija la casilla de verificación Habilitar.
-
Elija Actualizar.
nota
Al activar el registro de Amazon CloudWatch, Managed Service para Apache Flink crea un grupo de registro y un flujo de registro. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication -
Flujo de registro:
kinesis-analytics-log-stream
Modificar la política de IAM
Edite la política de IAM para añadir los permisos para acceder al bucket de Amazon S3.
Cómo editar la política de IAM para añadir los permisos para el bucket de S3
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Elija Políticas. Elija la política
kinesis-analytics-service-MyApplication-us-west-2que la consola creó en su nombre en la sección anterior. -
En la página Resumen, elija Editar política. Seleccione la pestaña JSON.
-
Añada la sección subrayada de la siguiente política de ejemplo a la política. Reemplace el ID de la cuenta de muestra (
012345678901) por el ID de su cuenta.
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.
Detener la aplicación
Para detener la aplicación, en la página MyApplication, seleccione Detener. Confirme la acción.
Creación y ejecución de la aplicación (CLI)
En esta sección, se utiliza AWS Command Line Interface para crear y ejecutar la aplicación Managed Service para Apache Flink. Utilice el comando AWS CLI kinesisanalyticsv2 para crear aplicaciones de Managed Service para Apache Flink e interactuar con ellas.
Creación de una política de permisos
nota
Debe crear una política de permisos y un rol para su aplicación. Si no crea estos recursos de IAM, la aplicación no podrá acceder a sus flujos de datos y de registro.
En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción de lectura en el flujo de origen y otra que concede permisos para las acciones de escritura en el flujo de recepción. A continuación, asocie la política a un rol de IAM (que se crea en la siguiente sección). Por lo tanto, cuando Managed Service para Apache Flink asume el rol, el servicio tiene los permisos necesarios para leer desde el flujo de origen y escribir en el flujo de recepción.
Utilice el siguiente código para crear la política de permisos AKReadSourceStreamWriteSinkStream. Reemplace username por el nombre de usuario que se utilizó para crear el bucket de Amazon S3 para almacenar el código de la aplicación. Reemplace el ID de la cuenta en el nombre de recurso de Amazon (ARN) (012345678901) por el ID de su cuenta.
Para obtener instrucciones paso a paso para crear una política de permisos, consulte Tutorial: crear y asociar su primera política administrada por el cliente en la Guía del usuario de IAM.
Creación de un rol de IAM
En esta sección, creará un rol de IAM que la aplicación de Managed Service para Apache Flink pueda asumir para leer un flujo de origen y escribir en el flujo de recepción.
Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se conceden a través del rol de IAM. Cada rol de IAM tiene dos políticas asociadas. La política de confianza concede a Managed Service para Apache Flink permiso para asumir el rol, y la política de permisos determina lo que Managed Service para Apache Flink puede hacer después de asumir el rol.
Usted deberá asociar la política de permisos que ha creado en la sección anterior a este rol.
Cómo crear un rol de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. En el panel de navegación, seleccione Roles y, a continuación, seleccione Crear rol.
En Seleccionar tipo de entidad de confianza, elija Servicio de AWS
En Elegir el servicio que usará este rol, elija Kinesis.
En Seleccione su caso de uso, elija Managed Service para Apache Flink.
Elija Siguiente: permisos.
En la página Asociar políticas de permisos, elija Siguiente: Revisión. Asociará políticas de permisos después de crear el rol.
En la página Crear rol, escriba
MF-stream-rw-rolecomo Nombre de rol. Elija Crear rol.Ahora ha creado un nuevo rol de IAM llamado
MF-stream-rw-role. A continuación, actualice las políticas de confianza y permisos para el rolAsocie 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.
En la página Resumen, elija la pestaña Permisos.
Seleccione Asociar políticas.
En el campo de búsqueda, escriba
AKReadSourceStreamWriteSinkStream(la política que ha creado en la sección anterior).Elija la política
AKReadSourceStreamWriteSinkStreamy, a continuación, elija Asociar política.
Ahora ha creado el rol de ejecución de servicio que utiliza la aplicación para obtener acceso a los recursos. Anote el ARN del nuevo rol.
Para obtener instrucciones paso a paso para crear un rol, consulte Creating an IAM Role (Console) en la Guía del usuario de IAM.
Creación de la aplicación
Guarde el siguiente código JSON en un archivo denominado create_request.json. Cambie el ARN del rol de ejemplo por el ARN del rol que ha creado antes. Reemplace el sufijo del ARN del bucket (nombre de usuario) por el sufijo que eligió en la sección anterior. Reemplace el ID de la cuenta de muestra (012345678901) en el rol de ejecución del servicio por el ID de su cuenta.
{ "ApplicationName": "s3_sink", "ApplicationDescription": "Scala tumbling window application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "s3-sink-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "s3.sink.path" : "s3a://ka-app-code-<username>/data" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }
Ejecute CreateApplication 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.
Inicio de la aplicación
En esta sección, utilizará la acción StartApplication para iniciar la aplicación.
Cómo iniciar la aplicación
Guarde el siguiente código JSON en un archivo denominado
start_request.json.{{ "ApplicationName": "s3_sink", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }Ejecute la acción
StartApplicationcon 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. Puede comprobar las métricas de Managed Service para Apache Flink en la consola de Amazon CloudWatch para comprobar que la aplicación funciona.
Detener la aplicación
En esta sección, utilizará la acción StopApplication para detener la aplicación.
Cómo detener la aplicación
Guarde el siguiente código JSON en un archivo denominado
stop_request.json.{ "ApplicationName": "s3_sink" }Ejecute la acción
StopApplicationcon 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.
Incorporación de una opción de registro de CloudWatch
Se puede utilizar la AWS CLI para añadir un flujo de registro de Amazon CloudWatch a su aplicación. Para obtener información sobre el uso de CloudWatch Logs con su aplicación, consulte Setting Up Application Logging.
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
Guarde el siguiente código JSON en un archivo denominado
update_properties_request.json.{"ApplicationName": "s3_sink", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "s3.sink.path" : "s3a://ka-app-code-<username>/data" } } ] } } }Ejecute la acción
UpdateApplicationcon 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ódigo, utilice la acción de CLI UpdateApplication.
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 usar la AWS CLI, elimine el paquete de código anterior de su bucket de Amazon S3, cargue la nueva versión y llame a UpdateApplication, 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 Creación de 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" } } } } }
Limpieza de recursos de AWS
En esta sección se incluyen los procedimientos para limpiar los recursos de AWS creados en el tutorial Ventana de salto de tamaño constante.
Este tema contiene las siguientes secciones:
Eliminación de su aplicación de Managed Service para Apache Flink
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon MSF en https://console.aws.amazon.com/flink.
En el panel de Managed Service para Apache Flink, elija MyApplication.
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Eliminación de sus flujos de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel de Kinesis Data Streams, elija ExampleInputStream.
En la página ExampleInputStream, elija Eliminar flujo de Kinesis y, a continuación, confirme la eliminación.
En la página Flujos de Kinesis, elija ExampleOutputStream, elija Acciones, elija Eliminar y, a continuación, confirme la eliminación.
Eliminación del objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el bucket ka-app-code-
<username>.Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Eliminación de sus recursos de IAM
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. En la barra de navegación, seleccione Políticas.
En el control de filtros, introduzca kinesis.
Elija la política kinesis-analytics-service-MyApplication-us-west-2.
Seleccione Acciones de política y, a continuación, Eliminar.
En la barra de navegación, seleccione Roles.
Elija el rol kinesis-analytics-MyApplication-us-west-2.
Elija Eliminar rol y, a continuación, confirme la eliminación.
Eliminación de sus recursos de CloudWatch
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registro /aws/kinesis-analytics/MyApplication.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.