Amazon Managed Service para Apache Flink Amazon se denominaba anteriormente Amazon Kinesis Data Analytics para Apache Flink.
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Información sobre versiones anteriores de Managed Service for Apache Flink
nota
La comunidad de Apache Flink no admite las versiones 1.6, 1.8 y 1.11 de Apache Flink desde hace más de tres años. Tenemos previsto dejar de utilizar estas versiones en Amazon Managed Service para Apache Flink el 5 de noviembre de 2024. A partir de esta fecha, no podrá crear nuevas aplicaciones para estas versiones de Flink. En este momento, puede seguir ejecutando las aplicaciones existentes. Puede actualizar sus aplicaciones de forma automática mediante la función de actualizaciones de versiones local de Amazon Managed Service for Apache Flink. Para obtener más información, consulte. Utilice actualizaciones de versión locales para Apache Flink
Managed Service for Apache Flink admite las versiones 1.15.2 y 1.13.2 de Apache Flink, pero la comunidad de Apache Flink ya no las admite.
Este tema contiene las siguientes secciones:
- Uso del conector Apache Flink Kinesis Streams con versiones anteriores de Apache Flink
- Creación de aplicaciones con Apache Flink 1.8.2
- Creación de aplicaciones con Apache Flink 1.6.2
- Actualización de aplicaciones
- Conectores disponibles en Apache Flink 1.6.2 y 1.8.2
- Primeros pasos: Flink 1.13.2
- Primeros pasos: Flink 1.11.1: obsoleto
- Primeros pasos: Flink 1.8.2: obsoleto
- Para empezar: Flink 1.6.2: obsoleto
- Ejemplos de versiones anteriores (antiguas) de Managed Service for Apache Flink
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_HOME
apunte a un JDK en lugar de un JRE. Puede probar la instalación de Apache Maven con el siguiente comando:mvn -version
Descargue el código fuente de la versión 1.8.2 de Apache Flink:
wget https://archive.apache.org/dist/flink/flink-1.8.2/flink-1.8.2-src.tgz
Descomprima el código fuente de Apache Flink:
tar -xvf flink-1.8.2-src.tgz
Cambie al directorio del código fuente de Apache Flink:
cd flink-1.8.2
Compile e instale Apache Flink:
mvn clean install -Pinclude-kinesis -DskipTests
nota
Si está compilando Flink en Microsoft Windows, debe agregar el parámetro
-Drat.skip=true
.
Creación de aplicaciones con Apache Flink 1.8.2
Esta sección contiene información sobre los componentes que se utilizan para crear aplicaciones de Managed Service para Apache Flink que funcionan con Apache Flink 1.8.2.
Utilice las siguientes versiones de los componentes para las aplicaciones de Managed Service para Apache Flink:
Componente | Versión |
---|---|
Java | 1.8 (recomendado) |
Apache Flink | 1.8.2 |
Servicio gestionado para Apache Flink for Flink Runtime () aws-kinesisanalytics-runtime | 1.0.1 |
Servicio gestionado para los conectores Apache Flink Flink () aws-kinesisanalytics-flink | 1.0.1 |
Apache Maven | 3.1 |
Para compilar una aplicación con Apache Flink 1.8.2, ejecute Maven con el siguiente parámetro:
mvn package -Dflink.version=1.8.2
Para ver un ejemplo de un archivo pom.xml
de una aplicación de Managed Service para Apache Flink que utiliza la versión 1.8.2 de Apache Flink, consulte Managed Service for Apache Flink 1.8.2 Getting Started Application
Para obtener información sobre cómo crear y usar el código de aplicación para una aplicación de Managed Service para Apache Flink, consulte Cree un servicio gestionado para la aplicación Apache Flink.
Creación de aplicaciones con Apache Flink 1.6.2
Esta sección contiene información sobre los componentes que se utilizan para crear aplicaciones de Managed Service para Apache Flink que funcionan con Apache Flink 1.6.2.
Utilice las siguientes versiones de los componentes para las aplicaciones de Managed Service para Apache Flink:
Componente | Versión |
---|---|
Java | 1.8 (recomendado) |
AWS SDK de Java | 1.11.379 |
Apache Flink | 1.6.2 |
Servicio gestionado para Apache Flink para Flink Runtime () aws-kinesisanalytics-runtime | 1.0.1 |
Servicio gestionado para los conectores Apache Flink Flink () aws-kinesisanalytics-flink | 1.0.1 |
Apache Maven | 3.1 |
Apache Beam | No compatible con Apache Flink 1.6.2 |
nota
Al utilizar la versión 1.0.1 del tiempo de ejecución de Managed Service para Apache Flink, debe especificar la versión de Apache Flink del archivo pom.xml
en lugar de utilizar el parámetro -Dflink.version
al compilar el código de la aplicación.
Para ver un ejemplo de un archivo pom.xml
de una aplicación de Managed Service para Apache Flink que utiliza la versión 1.6.2 de Apache Flink, consulte Managed Service for Apache Flink 1.6.2 Getting Started Application
Para obtener información sobre cómo crear y usar el código de aplicación para una aplicación de Managed Service para Apache Flink, consulte Cree un servicio gestionado para la aplicación Apache Flink.
Actualización de aplicaciones
Para actualizar la versión de Apache Flink de una aplicación de Amazon Managed Service for Apache Flink, utilice la función de actualización de versión local de Apache Flink mediante el AWS CLI AWS SDK o el. AWS CloudFormation AWS Management Console Para obtener más información, consulte Utilice actualizaciones de versión locales para Apache Flink.
Puedes usar esta función con cualquier aplicación existente que utilices con Amazon Managed Service para Apache Flink en READY
o RUNNING
estado.
Conectores disponibles en Apache Flink 1.6.2 y 1.8.2
El marco de Apache Flink contiene conectores para acceder a los datos desde una variedad de fuentes.
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) .
Primeros pasos: Flink 1.13.2
En esta sección, se presentan los conceptos fundamentales del servicio gestionado para Apache Flink y la DataStream API. Describe las opciones disponibles para crear y probar sus aplicaciones. También proporciona instrucciones para instalar las herramientas necesarias para completar los tutoriales de esta guía y crear su primera aplicación.
Temas
- Componentes de una aplicación de servicio gestionado para Apache Flink
- Requisitos previos para completar los ejercicios
- Paso 1: Configurar una AWS cuenta y crear un usuario administrador
- Siguiente paso
- Paso 2: Configura el AWS Command Line Interface ()AWS CLI
- Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink
- Paso 4: Limpiar AWS los recursos
- Paso 5: Siguientes pasos
Componentes de una aplicación de servicio gestionado para Apache Flink
Para procesar los datos, su aplicación de Managed Service para Apache Flink utiliza una aplicación Java/Apache Maven o Scala que procesa las entradas y produce las salidas mediante el tiempo de ejecución de Apache Flink.
La aplicación de Managed Service para Apache Flink tiene los siguientes componentes:
-
Propiedades de tiempo de ejecución: puede usar las propiedades de tiempo de ejecución para configurar su aplicación sin tener que volver a compilar el código de la aplicación.
-
Fuente: la aplicación consume datos mediante una fuente. Un conector de origen lee los datos de un flujo de datos de Kinesis, un bucket de Amazon S3, etc. Para obtener más información, consulte Añada fuentes de datos de streaming al servicio gestionado de Apache Flink.
-
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 Transforme los datos con los operadores de Managed Service for Apache Flink.
-
Receptor: la aplicación produce datos para fuentes externas mediante el uso de receptores. Un conector receptor escribe datos en una transmisión de datos de Kinesis, una transmisión de Firehose, un bucket de Amazon S3, etc. Para obtener más información, consulte Escriba datos mediante sumideros en Managed Service para Apache Flink.
Después de crear, compilar y empaquetar el código de la aplicación, debe cargar el paquete del código a un bucket de Amazon Simple Storage Service (Amazon S3). Luego debe crear la aplicación de Managed Service para Apache Flink. Introduzca la ubicación del paquete del código, un flujo de datos de Kinesis como origen de datos de streaming y, normalmente, una ubicación de streaming o archivo que recibe los datos procesados de la aplicación.
Requisitos previos para completar los ejercicios
Para completar los pasos de esta guía, debe disponer de lo siguiente:
-
Java Development Kit (JDK), versión 11
. Establezca la variable de entorno JAVA_HOME
para señalar la ubicación de la instalación del JDK. -
Le recomendamos utilizar un entorno de desarrollo (como Eclipse Java Neon
o IntelliJ Idea ) para desarrollar y compilar su aplicación. -
Cliente Git
. Si aún no lo ha hecho, instale el cliente Git. -
Apache Maven Compiler Plugin
. Maven debe estar en su ruta de trabajo. Para probar la instalación de Apache Maven, introduzca lo siguiente: $ mvn -version
Para empezar, vaya a Configure una AWS cuenta y cree un usuario administrador.
Paso 1: Configurar una AWS cuenta y crear un usuario administrador
Inscríbase en una Cuenta de AWS
Si no tiene uno Cuenta de AWS, complete los siguientes pasos para crearlo.
Para suscribirse a una Cuenta de AWS
Siga las instrucciones que se le indiquen.
Parte del procedimiento de registro consiste en recibir una llamada telefónica e indicar un código de verificación en el teclado del teléfono.
Cuando te registras en una Cuenta de AWS, Usuario raíz de la cuenta de AWSse crea una. El usuario raíz tendrá acceso a todos los Servicios de AWS y recursos de esa cuenta. Como práctica recomendada de seguridad, asigne acceso administrativo a un usuario y utilice únicamente el usuario raíz para realizar tareas que requieren acceso de usuario raíz.
AWS te envía un correo electrónico de confirmación una vez finalizado el proceso de registro. Puede ver la actividad de la cuenta y administrar la cuenta en cualquier momento entrando en https://aws.amazon.com/
Creación de un usuario con acceso administrativo
Después de crear un usuario administrativo Cuenta de AWS, asegúrelo Usuario raíz de la cuenta de AWS AWS IAM Identity Center, habilite y cree un usuario administrativo para no usar el usuario root en las tareas diarias.
Proteja su Usuario raíz de la cuenta de AWS
-
Inicie sesión AWS Management Console
como propietario de la cuenta seleccionando el usuario root e introduciendo su dirección de Cuenta de AWS correo electrónico. En la siguiente página, escriba su contraseña. Para obtener ayuda para iniciar sesión con el usuario raíz, consulte Iniciar sesión como usuario raíz en la Guía del usuario de AWS Sign-In .
-
Active la autenticación multifactor (MFA) para el usuario raíz.
Para obtener instrucciones, consulte Habilitar un dispositivo MFA virtual para el usuario Cuenta de AWS raíz (consola) en la Guía del usuario de IAM.
Creación de un usuario con acceso administrativo
-
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 su uso Directorio de IAM Identity Center como fuente de identidad, consulte Configurar el acceso de los usuarios con la configuración predeterminada Directorio de IAM Identity Center en la Guía del AWS IAM Identity Center usuario.
Iniciar sesión como usuario con acceso de administrador
-
Para iniciar sesión con el usuario de IAM Identity Center, utilice la URL de inicio de sesión que se envió a la dirección de correo electrónico cuando creó el usuario de IAM Identity Center.
Para obtener ayuda para iniciar sesión con un usuario del Centro de identidades de IAM, consulte Iniciar sesión en el portal de AWS acceso en la Guía del AWS Sign-In usuario.
Concesión de acceso a usuarios adicionales
-
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 quieren interactuar con personas AWS ajenas a. AWS Management Console La forma de conceder el acceso programático depende del tipo de usuario que acceda. AWS
Para conceder acceso programático a los usuarios, elija una de las siguientes opciones.
¿Qué usuario necesita acceso programático? | Para | Mediante |
---|---|---|
Identidad del personal (Usuarios administrados en el IAM Identity Center) |
Usa credenciales temporales para firmar las solicitudes programáticas a los AWS CLI AWS SDK o las API. AWS |
Siga las instrucciones de la interfaz que desea utilizar:
|
IAM | Utilice credenciales temporales para firmar las solicitudes programáticas a los AWS SDK o las AWS CLI API. AWS | Siga las instrucciones de Uso de credenciales temporales con AWS recursos de la Guía del usuario de IAM. |
IAM | (No recomendado) Utilice credenciales de larga duración para firmar las solicitudes programáticas a los AWS CLI AWS SDK o las API. AWS |
Siga las instrucciones de la interfaz que desea utilizar:
|
Siguiente paso
Configure el AWS Command Line Interface (AWS CLI)
Siguiente paso
Paso 2: Configura el AWS Command Line Interface ()AWS CLI
Paso 2: Configura el AWS Command Line Interface ()AWS CLI
En este paso, debe descargar y configurar AWS CLI para usarlo con Managed Service for Apache Flink.
nota
En los ejercicios introductorios de esta guía se presupone que está utilizando las credenciales de administrador (adminuser
) en su cuenta para realizar las operaciones.
nota
Si ya lo tiene AWS CLI instalado, es posible que necesite actualizarlo para obtener la funcionalidad más reciente. Para obtener más información, consulte Installing the AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface . Para comprobar la versión de AWS CLI, ejecute el siguiente comando:
aws --version
Los ejercicios de este tutorial requieren la siguiente AWS CLI versión o una posterior:
aws-cli/1.16.63
Para configurar el AWS CLI
-
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 AWS CLI
config
archivo. Puede utilizar este perfil cuando ejecute los comandos de la AWS CLI . Para obtener más información sobre los perfiles con nombre, consulte Perfiles con nombre en la Guía del usuario de la AWS Command Line Interface .[profile adminuser] aws_access_key_id =
adminuser access key ID
aws_secret_access_key =adminuser secret access key
region =aws-region
Para obtener una lista de AWS las regiones disponibles, consulte Regiones y puntos finales en la Referencia general de Amazon Web Services.
nota
El código y los comandos de ejemplo de este tutorial utilizan la región Oeste de EE. UU. (Oregón). Para usar una región diferente, cambie la región en el código y los comandos de este tutorial por la región que desea usar.
-
Verifique la configuración introduciendo el siguiente comando de ayuda en el símbolo del sistema:
aws help
Después de configurar una AWS cuenta y el AWS CLI, puede probar el siguiente ejercicio, en el que configurará una aplicación de ejemplo y probará la end-to-end configuración.
Siguiente paso
Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink
Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink
En este ejercicio, deberá crear una aplicación de Managed Service para Apache Flink con flujos de datos como origen y receptor.
Esta sección contiene los siguientes pasos:
- Cree dos transmisiones de datos de Amazon Kinesis
- Escriba registros de muestra en la transmisión de entrada
- Descargue y examine el código Java de streaming de Apache Flink
- Compila el código de la aplicación
- Cargue el código Java de streaming de Apache Flink
- Cree y ejecute la aplicación Managed Service for Apache Flink
- Siguiente paso
Cree dos transmisiones de datos de Amazon Kinesis
Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, cree dos flujos de datos de Kinesis (ExampleInputStream
y ExampleOutputStream
). Su aplicación utiliza estos flujos para los flujos de origen y destino de la aplicación.
Puede crear estos flujos mediante la consola de Amazon Kinesis o el siguiente comando de la AWS CLI . Para obtener instrucciones sobre la consola, consulte Creating and Updating Data Streams en la Guía para desarrolladores de Amazon Kinesis Data Streams.
Cómo crear flujos de datos (AWS CLI)
-
Para crear la primera transmisión (
ExampleInputStream
), utilice el siguiente comando de Amazon Kinesiscreate-stream
AWS CLI .$ 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
Escriba registros de muestra en la transmisión de entrada
En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.
nota
Esta sección requiere AWS SDK for Python (Boto)
-
Cree un archivo denominado
stock.py
con el siguiente contenido:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
-
Más adelante en el tutorial, se ejecuta el script
stock.py
para enviar datos a la aplicación.$ python stock.py
Descargue y examine el código Java de streaming de Apache Flink
El código de la aplicación Java para este ejemplo está disponible en. GitHub Para descargar el código de la aplicación, haga lo siguiente:
-
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.java
contiene el métodomain
que define la funcionalidad de la aplicación. -
La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de Kinesis:
return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
-
La aplicación crea conectores de origen y recepción para obtener acceso a recursos externos usando un objeto
StreamExecutionEnvironment
. -
La aplicación crea conectores de origen y recepción mediante propiedades estáticas. Para utilizar propiedades dinámicas de la aplicación, utilice los métodos
createSourceFromApplicationProperties
ycreateSinkFromApplicationProperties
para crear los conectores. Estos métodos leen las propiedades de la aplicación para configurar los conectores.Para obtener más información sobre las propiedades de tiempo de ejecución, consulte Utilice las propiedades de tiempo de ejecución en Managed Service for Apache Flink.
Compila el código de la aplicación
En esta sección, se utiliza el compilador Apache Maven para crear el código de Java para la aplicación. Para obtener más información sobre la instalación de Apache Maven y el Java Development Kit (JDK), consulte Cumpla con los requisitos previos para completar los ejercicios.
Cómo compilar el código de la aplicación
-
Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Puede compilar y empaquetar el código de una de las dos formas siguientes:
-
Utilice la herramienta de línea de comandos de Maven. Cree su archivo JAR ejecutando el siguiente comando en el directorio que contiene el archivo
pom.xml
:mvn package -Dflink.version=1.13.2
-
Use el entorno de desarrollo. Consulte la documentación de su entorno de desarrollo para obtener más información.
nota
El código fuente proporcionado se basa en bibliotecas de Java 11.
Puede cargar el paquete como un archivo JAR o puede comprimir el paquete y cargarlo como un archivo ZIP. Si crea la aplicación con AWS CLI, especifique el tipo de contenido del código (JAR o ZIP).
-
-
Si hay errores al compilar, verifique que la variable de entorno
JAVA_HOME
se ha configurado correctamente.
Si la aplicación se compila correctamente, se crea el siguiente archivo:
target/aws-kinesis-analytics-java-apps-1.0.jar
Cargue el código Java de streaming de Apache Flink
En esta sección, creará un bucket de Amazon Simple Storage Service (Amazon S3) y cargará el código de la aplicación.
Cómo cargar el código de la aplicación
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
<username>bucket ka-app-code- y elija Upload.
-
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
aws-kinesis-analytics-java-apps-1.0.jar
que creó en el paso anterior. Elija Siguiente. -
No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.
El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.
Cree y ejecute la aplicación Managed Service for Apache Flink
Puede crear y ejecutar una aplicación de Managed Service para Apache Flink mediante la consola o la AWS CLI.
nota
Cuando crea la aplicación mediante la consola, sus recursos AWS Identity and Access Management (de IAM) y de Amazon CloudWatch Logs se crean automáticamente. Cuando crea la aplicación con AWS CLI, crea estos recursos por separado.
Cree y ejecute la aplicación (consola)
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Abra la consola de Managed Service para Apache Flink 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
Edite 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-2
que 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.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-
username
/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" }
Configure la aplicación
-
En la MyApplicationpágina, 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 ProducerConfigProperties
flink.inputstream.initpos
LATEST
ProducerConfigProperties
aws.region
us-west-2
ProducerConfigProperties
AggregationEnabled
false
-
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
Para el CloudWatch registro, active la casilla Activar.
-
Elija Actualizar.
nota
Cuando eliges habilitar el CloudWatch registro de Amazon, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros para ti. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication
-
Flujo de registro:
kinesis-analytics-log-stream
Ejecución de la aplicación
Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.
Detenga la aplicación
En la MyApplicationpágina, selecciona Detener. Confirme la acción.
Actualizar la aplicación
Mediante la consola, puede actualizar la configuración de la aplicación, tal como sus propiedades, ajustes de monitorización y la ubicación o el nombre de archivo JAR de la aplicación. También puede volver a cargar el JAR de la aplicación del bucket de Amazon S3 si necesita actualizar el código de la aplicación.
En la MyApplicationpágina, elija Configurar. Actualice la configuración de la aplicación y elija Actualizar.
Cree y ejecute la aplicación (AWS CLI)
En esta sección, se utiliza AWS CLI para crear y ejecutar la aplicación Managed Service for Apache Flink. Managed Service for Apache Flink usa el kinesisanalyticsv2
AWS CLI comando para crear aplicaciones Managed Service for Apache Flink e interactuar con ellas.
Creación de una política de permisos
nota
Debe crear una política de permisos y un rol para su aplicación. Si no crea estos recursos de IAM, la aplicación no podrá acceder a sus flujos de datos y de registro.
En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción read
en el flujo de origen y otra que concede permisos para las acciones write
en el flujo de recepción. A continuación, asocie la política a un rol de IAM (que se crea en la siguiente sección). Por lo tanto, cuando Managed Service para Apache Flink asume el rol, el servicio tiene los permisos necesarios para leer desde el flujo de origen y escribir en el flujo de recepción.
Utilice el siguiente código para crear la política de permisos AKReadSourceStreamWriteSinkStream
. Reemplace
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
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": ["arn:aws:s3:::ka-app-code-
username
", "arn:aws:s3:::ka-app-code-username
/*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" } ] }
Para step-by-step obtener instrucciones sobre cómo crear una política de permisos, consulte el tutorial: Cómo crear y adjuntar su primera política gestionada por el cliente en la Guía del usuario de IAM.
nota
Para acceder a otros servicios de Amazon, puede usar AWS SDK for Java. Managed Service para Apache Flink establece automáticamente las credenciales requeridas por el SDK con las del rol de IAM de ejecución del servicio asociada a su aplicación. No hace falta realizar ningún otro paso.
Creación de un rol de IAM
En esta sección, creará un rol de IAM que la aplicación de Managed Service para Apache Flink pueda asumir para leer un flujo de origen y escribir en el flujo de recepción.
Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se conceden a través del rol de IAM. Cada rol de IAM tiene dos políticas asociadas. La política de confianza concede a Managed Service para Apache Flink permiso para asumir el rol, y la política de permisos determina lo que Managed Service para Apache Flink puede hacer después de asumir el rol.
Usted deberá asociar la política de permisos que ha creado en la sección anterior a este rol.
Cómo crear un rol de IAM
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-role
como Nombre de rol. Elija Crear rol.Ahora ha creado un nuevo rol de IAM llamado
MF-stream-rw-role
. A continuación, actualice las políticas de confianza y permisos del rol. -
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 ReadSourceStreamWriteSinkStream política AK y elija Adjuntar política.
-
Ahora ha creado el rol de ejecución de servicio que utiliza la aplicación para obtener acceso a los recursos. Anote el ARN del nuevo rol.
Para step-by-step obtener instrucciones sobre cómo crear un rol, consulte Creación de un rol de IAM (consola) en la Guía del usuario de IAM.
Cree la aplicación Managed Service para Apache Flink
-
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
CreateApplication
con la solicitud anterior para crear la aplicación:aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
Se ha creado la aplicación. Puede iniciar la aplicación en el siguiente paso.
Inicio de la aplicación
En esta sección, se utiliza la acción StartApplication
para iniciar la aplicación.
Cómo iniciar la aplicación
-
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
StartApplication
con la solicitud anterior para iniciar la aplicación:aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
Ya se debe estar ejecutando la aplicación. Puedes comprobar las métricas de Managed Service for Apache Flink en la CloudWatch consola de Amazon para comprobar que la aplicación funciona.
Detención de la aplicación
En esta sección, se utiliza la acción StopApplication
para detener la aplicación.
Cómo detener la aplicación
-
Guarde el siguiente código JSON en un archivo denominado
stop_request.json
.{ "ApplicationName": "test" }
-
Ejecute la acción
StopApplication
con la siguiente solicitud para detener la aplicación:aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
La aplicación se habrá detenido.
Agrega una opción de CloudWatch registro
Puedes usar el AWS CLI para añadir un flujo de CloudWatch registro de Amazon a tu aplicación. Para obtener información sobre el uso CloudWatch de Logs con su aplicación, consulteConfigurar el registro de aplicaciones en Managed Service for Apache Flink.
Actualización de las propiedades de entorno
En esta sección, utilizará la acción UpdateApplication
para cambiar las propiedades del entorno de la aplicación sin tener que volver a compilar el código de la aplicación. En este ejemplo, deberá cambiar la región de los flujos de origen y destino.
Cómo actualizar las propiedades de entorno de la aplicación
-
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
UpdateApplication
con la solicitud anterior para actualizar las propiedades del entorno:aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Actualización del código de la aplicación
Cuando necesite actualizar el código de la aplicación con una nueva versión del paquete de códigos, utilice la UpdateApplication
AWS CLI acción.
nota
Para cargar una nueva versión del código de la aplicación con el mismo nombre de archivo, debe especificar la nueva versión del objeto. Para obtener más información sobre el uso de versiones de objetos de Amazon S3, consulte Enabling or Disabling Versioning.
Para usarlo AWS CLI, elimine el paquete de códigos anterior de su bucket de Amazon S3, cargue la nueva versión y llameUpdateApplication
, especificando el mismo nombre de bucket y objeto de Amazon S3 y la nueva versión del objeto. La aplicación se reiniciará con el nuevo paquete de código.
En el siguiente ejemplo de solicitud de la acción UpdateApplication
, se vuelve a cargar el código de la aplicación y se reinicia la aplicación. Actualice la CurrentApplicationVersionId
a la versión actual de la aplicación. Puede comprobar la versión actual de la aplicación mediante las acciones ListApplications
o DescribeApplication
. Actualice el sufijo del nombre del bucket (<username>
) con el sufijo que haya elegido en la sección Cree dos transmisiones de datos de Amazon Kinesis.
{ "ApplicationName": "test", "CurrentApplicationVersionId":
1
, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username
", "FileKeyUpdate": "aws-kinesis-analytics-java-apps-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU
" } } } } }
Siguiente paso
Paso 4: Limpiar AWS los recursos
Paso 4: Limpiar AWS los recursos
Esta sección incluye procedimientos para limpiar AWS los recursos creados en el tutorial de introducción.
Este tema contiene las siguientes secciones:
Elimine su aplicación Managed Service for Apache Flink
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. -
En el panel Servicio gestionado para Apache Flink, elija. MyApplication
-
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Elimine sus transmisiones de datos de Kinesis
Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.
-
En el panel Kinesis Data Streams, ExampleInputStreamelija.
-
En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.
-
En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.
Elimine el objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. -
Elija el
cubo ka-app-code -. <username>
-
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Elimine 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.
CloudWatch Elimine sus recursos
Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/
. -
En la barra de navegación, elija Registros.
-
Elija el grupo de registros MyApplication/aws/kinesis-analytics/.
-
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.
La solución de datos de AWS transmisión para Amazon Kinesis
: la solución de datos de AWS transmisión para Amazon Kinesis configura automáticamente AWS los servicios necesarios para capturar, almacenar, procesar y entregar fácilmente los datos de transmisión. La solución ofrece varias opciones para resolver casos de uso de datos de streaming. La opción Managed Service for Apache Flink ofrece un ejemplo de ETL de end-to-end streaming que muestra una aplicación real que ejecuta operaciones analíticas con datos simulados de taxis de Nueva York. La solución configura todos los AWS recursos necesarios, como las funciones y políticas de IAM, un CloudWatch panel de control y alarmas. CloudWatch AWS Solución de transmisión de datos para Amazon MSK
: La solución de AWS transmisión de datos para Amazon MSK proporciona AWS CloudFormation plantillas en las que los datos fluyen a través de los productores, el almacenamiento de streaming, los consumidores y los destinos. Clickstream Lab con Apache Flink y Apache Kafka
: Un laboratorio integral para casos de uso de secuencias de clics que utiliza Amazon Managed Streaming para Apache Kafka para almacenamiento de streaming y aplicaciones de Managed Service para Apache Flink para procesamiento de flujos. Taller de Amazon Managed Service para Apache Flink
: en este taller, crearás una arquitectura de end-to-end streaming para ingerir, analizar y visualizar datos de streaming prácticamente en tiempo real. Usted se propuso mejorar las operaciones de una empresa de taxis de la ciudad de Nueva York. Usted analiza los datos de telemetría de una flota de taxis de la ciudad de Nueva York prácticamente en tiempo real para optimizar las operaciones de su flota. Aprenda Flink: formación práctica
: formación oficial introductoria sobre Apache Flink que le permitirá empezar a crear aplicaciones escalables de ETL de streaming, análisis y basadas en eventos. nota
Tenga en cuenta que Managed Service para Apache Flink no es compatible con la versión de Apache Flink (1.12) utilizada en esta formación. Puede utilizar Flink 1.15.2 en el servicio gestionado de Flink para Apache Flink.
Primeros pasos: Flink 1.11.1: obsoleto
nota
La comunidad de Apache Flink no admite las versiones 1.6, 1.8 y 1.11 de Apache Flink desde hace más de tres años. Tenemos previsto dejar de utilizar estas versiones en Amazon Managed Service para Apache Flink el 5 de noviembre de 2024. A partir de esta fecha, no podrá crear nuevas aplicaciones para estas versiones de Flink. En este momento, puede seguir ejecutando las aplicaciones existentes. Puede actualizar sus aplicaciones de forma automática mediante la función de actualizaciones de versiones local de Amazon Managed Service for Apache Flink. Para obtener más información, consulte. Utilice actualizaciones de versión locales para Apache Flink
Este tema contiene una versión del Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink tutorial que utiliza Apache Flink 1.11.1.
En esta sección, se presentan los conceptos fundamentales del servicio gestionado para Apache Flink y la API. DataStream Describe las opciones disponibles para crear y probar sus aplicaciones. También proporciona instrucciones para instalar las herramientas necesarias para completar los tutoriales de esta guía y crear su primera aplicación.
Temas
- Componentes de una aplicación de servicio gestionado para Apache Flink
- Requisitos previos para completar los ejercicios
- Paso 1: Configurar una AWS cuenta y crear un usuario administrador
- Paso 2: Configuración de la AWS Command Line Interface (AWS CLI)
- Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink
- Paso 4: Limpiar AWS los recursos
- Paso 5: Siguientes pasos
Componentes de una aplicación de servicio gestionado para Apache Flink
Para procesar los datos, su aplicación de Managed Service para Apache Flink utiliza una aplicación Java/Apache Maven o Scala que procesa las entradas y produce las salidas mediante el tiempo de ejecución de Apache Flink.
Una aplicación de Managed Service para Apache Flink tiene los siguientes componentes:
-
Propiedades de tiempo de ejecución: puede usar las propiedades de tiempo de ejecución para configurar su aplicación sin tener que volver a compilar el código de la aplicación.
-
Fuente: la aplicación consume datos mediante una fuente. Un conector de origen lee los datos de un flujo de datos de Kinesis, un bucket de Amazon S3, etc. Para obtener más información, consulte Añada fuentes de datos de streaming al servicio gestionado de Apache Flink.
-
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 Transforme los datos con los operadores de Managed Service for Apache Flink.
-
Receptor: la aplicación produce datos para fuentes externas mediante el uso de receptores. Un conector receptor escribe datos en una transmisión de datos de Kinesis, una transmisión de Firehose, un bucket de Amazon S3, etc. Para obtener más información, consulte Escriba datos mediante sumideros en Managed Service para Apache Flink.
Después de crear, compilar y empaquetar el código de la aplicación, debe cargar el paquete del código a un bucket de Amazon Simple Storage Service (Amazon S3). Luego debe crear la aplicación de Managed Service para Apache Flink. Introduzca la ubicación del paquete del código, un flujo de datos de Kinesis como origen de datos de streaming y, normalmente, una ubicación de streaming o archivo que recibe los datos procesados de la aplicación.
Requisitos previos para completar los ejercicios
Para completar los pasos de esta guía, debe disponer de lo siguiente:
-
Java Development Kit (JDK), versión 11
. Establezca la variable de entorno JAVA_HOME
para señalar la ubicación de la instalación del JDK. -
Le recomendamos utilizar un entorno de desarrollo (como Eclipse Java Neon
o IntelliJ Idea ) para desarrollar y compilar su aplicación. -
Cliente Git
. Si aún no lo ha hecho, instale el cliente Git. -
Apache Maven Compiler Plugin
. Maven debe estar en su ruta de trabajo. Para probar la instalación de Apache Maven, introduzca lo siguiente: $ mvn -version
Para empezar, vaya a Configure una AWS cuenta y cree un usuario administrador.
Paso 1: Configurar una AWS cuenta y crear un usuario administrador
Inscríbase en una Cuenta de AWS
Si no tiene uno Cuenta de AWS, complete los siguientes pasos para crearlo.
Para suscribirse a una Cuenta de AWS
Siga las instrucciones que se le indiquen.
Parte del procedimiento de registro consiste en recibir una llamada telefónica e indicar un código de verificación en el teclado del teléfono.
Cuando te registras en una Cuenta de AWS, Usuario raíz de la cuenta de AWSse crea una. El usuario raíz tendrá acceso a todos los Servicios de AWS y recursos de esa cuenta. Como práctica recomendada de seguridad, asigne acceso administrativo a un usuario y utilice únicamente el usuario raíz para realizar tareas que requieren acceso de usuario raíz.
AWS te envía un correo electrónico de confirmación una vez finalizado el proceso de registro. Puede ver la actividad de la cuenta y administrar la cuenta en cualquier momento entrando en https://aws.amazon.com/
Creación de un usuario con acceso administrativo
Después de crear un usuario administrativo Cuenta de AWS, asegúrelo Usuario raíz de la cuenta de AWS AWS IAM Identity Center, habilite y cree un usuario administrativo para no usar el usuario root en las tareas diarias.
Proteja su Usuario raíz de la cuenta de AWS
-
Inicie sesión AWS Management Console
como propietario de la cuenta seleccionando el usuario root e introduciendo su dirección de Cuenta de AWS correo electrónico. En la siguiente página, escriba su contraseña. Para obtener ayuda para iniciar sesión con el usuario raíz, consulte Iniciar sesión como usuario raíz en la Guía del usuario de AWS Sign-In .
-
Active la autenticación multifactor (MFA) para el usuario raíz.
Para obtener instrucciones, consulte Habilitar un dispositivo MFA virtual para el usuario Cuenta de AWS raíz (consola) en la Guía del usuario de IAM.
Creación de un usuario con acceso administrativo
-
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 su uso Directorio de IAM Identity Center como fuente de identidad, consulte Configurar el acceso de los usuarios con la configuración predeterminada Directorio de IAM Identity Center en la Guía del AWS IAM Identity Center usuario.
Iniciar sesión como usuario con acceso de administrador
-
Para iniciar sesión con el usuario de IAM Identity Center, utilice la URL de inicio de sesión que se envió a la dirección de correo electrónico cuando creó el usuario de IAM Identity Center.
Para obtener ayuda para iniciar sesión con un usuario del Centro de identidades de IAM, consulte Iniciar sesión en el portal de AWS acceso en la Guía del AWS Sign-In usuario.
Concesión de acceso a usuarios adicionales
-
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 quieren interactuar con personas AWS ajenas a. AWS Management Console La forma de conceder el acceso programático depende del tipo de usuario que acceda. AWS
Para conceder acceso programático a los usuarios, elija una de las siguientes opciones.
¿Qué usuario necesita acceso programático? | Para | Mediante |
---|---|---|
Identidad del personal (Usuarios administrados en el IAM Identity Center) |
Usa credenciales temporales para firmar las solicitudes programáticas a los AWS CLI AWS SDK o las API. AWS |
Siga las instrucciones de la interfaz que desea utilizar:
|
IAM | Utilice credenciales temporales para firmar las solicitudes programáticas a los AWS SDK o las AWS CLI API. AWS | Siga las instrucciones de Uso de credenciales temporales con AWS recursos de la Guía del usuario de IAM. |
IAM | (No recomendado) Utilice credenciales de larga duración para firmar las solicitudes programáticas a los AWS CLI AWS SDK o las API. AWS |
Siga las instrucciones de la interfaz que desea utilizar:
|
Siguiente paso
Configure el AWS Command Line Interface (AWS CLI)
Paso 2: Configuración de la AWS Command Line Interface (AWS CLI)
En este paso, debe descargar y configurar AWS CLI para usarlo con Managed Service for Apache Flink.
nota
En los ejercicios introductorios de esta guía se presupone que está utilizando las credenciales de administrador (adminuser
) en su cuenta para realizar las operaciones.
nota
Si ya lo tiene AWS CLI instalado, es posible que necesite actualizarlo para obtener la funcionalidad más reciente. Para obtener más información, consulte Installing the AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface . Para comprobar la versión de AWS CLI, ejecute el siguiente comando:
aws --version
Los ejercicios de este tutorial requieren la siguiente AWS CLI versión o una posterior:
aws-cli/1.16.63
Para configurar el AWS CLI
-
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 AWS CLI
config
archivo. Puede utilizar este perfil cuando ejecute los comandos de la AWS CLI . Para obtener más información sobre los perfiles con nombre, consulte Perfiles con nombre en la Guía del usuario de la AWS Command Line Interface .[profile adminuser] aws_access_key_id =
adminuser access key ID
aws_secret_access_key =adminuser secret access key
region =aws-region
Para obtener una lista de AWS las regiones disponibles, consulte Regiones y puntos finales en la Referencia general de Amazon Web Services.
nota
El código y los comandos de ejemplo de este tutorial utilizan la región Oeste de EE. UU. (Oregón). Para usar una región diferente, cambie la región en el código y los comandos de este tutorial por la región que desea usar.
-
Verifique la configuración introduciendo el siguiente comando de ayuda en el símbolo del sistema:
aws help
Después de configurar una AWS cuenta y el AWS CLI, puede probar el siguiente ejercicio, en el que configurará una aplicación de ejemplo y probará la end-to-end configuración.
Siguiente paso
Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink
Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink
En este ejercicio, deberá crear una aplicación de Managed Service para Apache Flink con flujos de datos como origen y receptor.
Esta sección contiene los siguientes pasos:
- Cree dos transmisiones de datos de Amazon Kinesis
- Escriba registros de muestra en la transmisión de entrada
- Descargue y examine el código Java de streaming de Apache Flink
- Compila el código de la aplicación
- Cargue el código Java de streaming de Apache Flink
- Cree y ejecute la aplicación Managed Service for Apache Flink
- Siguiente paso
Cree dos transmisiones de datos de Amazon Kinesis
Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, cree dos flujos de datos de Kinesis (ExampleInputStream
y ExampleOutputStream
). Su aplicación utiliza estos flujos para los flujos de origen y destino de la aplicación.
Puede crear estos flujos mediante la consola de Amazon Kinesis o el siguiente comando de la AWS CLI . Para obtener instrucciones sobre la consola, consulte Creating and Updating Data Streams en la Guía para desarrolladores de Amazon Kinesis Data Streams.
Cómo crear flujos de datos (AWS CLI)
-
Para crear la primera transmisión (
ExampleInputStream
), utilice el siguiente comando de Amazon Kinesiscreate-stream
AWS CLI .$ 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
Escriba registros de muestra en la transmisión de entrada
En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.
nota
Esta sección requiere AWS SDK for Python (Boto)
-
Cree un archivo denominado
stock.py
con el siguiente contenido:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { "EVENT_TIME": datetime.datetime.now().isoformat(), "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]), "PRICE": round(random.random() * 100, 2), } def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey" ) if __name__ == "__main__": generate(STREAM_NAME, boto3.client("kinesis"))
-
Más adelante en el tutorial, se ejecuta el script
stock.py
para enviar datos a la aplicación.$ python stock.py
Descargue y examine el código Java de streaming de Apache Flink
El código de la aplicación Java para este ejemplo está disponible en. GitHub Para descargar el código de la aplicación, haga lo siguiente:
-
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.java
contiene el métodomain
que define la funcionalidad de la aplicación. -
La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de Kinesis:
return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
-
La aplicación crea conectores de origen y recepción para obtener acceso a recursos externos usando un objeto
StreamExecutionEnvironment
. -
La aplicación crea conectores de origen y recepción mediante propiedades estáticas. Para utilizar propiedades dinámicas de la aplicación, utilice los métodos
createSourceFromApplicationProperties
ycreateSinkFromApplicationProperties
para crear los conectores. Estos métodos leen las propiedades de la aplicación para configurar los conectores.Para obtener más información sobre las propiedades de tiempo de ejecución, consulte Utilice las propiedades de tiempo de ejecución en Managed Service for Apache Flink.
Compila el código de la aplicación
En esta sección, se utiliza el compilador Apache Maven para crear el código de Java para la aplicación. Para obtener más información sobre la instalación de Apache Maven y el Java Development Kit (JDK), consulte Cumpla con los requisitos previos para completar los ejercicios.
Cómo compilar el código de la aplicación
-
Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Puede compilar y empaquetar el código de una de las dos formas siguientes:
-
Utilice la herramienta de línea de comandos de Maven. Cree su archivo JAR ejecutando el siguiente comando en el directorio que contiene el archivo
pom.xml
:mvn package -Dflink.version=1.11.3
-
Use el entorno de desarrollo. Consulte la documentación de su entorno de desarrollo para obtener más información.
nota
El código fuente proporcionado se basa en bibliotecas de Java 11. Asegúrese de que la versión Java de su proyecto sea 11.
Puede cargar el paquete como un archivo JAR o puede comprimir el paquete y cargarlo como un archivo ZIP. Si crea la aplicación con AWS CLI, especifique el tipo de contenido del código (JAR o ZIP).
-
-
Si hay errores al compilar, verifique que la variable de entorno
JAVA_HOME
se ha configurado correctamente.
Si la aplicación se compila correctamente, se crea el siguiente archivo:
target/aws-kinesis-analytics-java-apps-1.0.jar
Cargue el código Java de streaming de Apache Flink
En esta sección, creará un bucket de Amazon Simple Storage Service (Amazon S3) y cargará el código de la aplicación.
Cómo cargar el código de la aplicación
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
<username>bucket ka-app-code- y elija Upload.
-
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
aws-kinesis-analytics-java-apps-1.0.jar
que creó en el paso anterior. Elija Siguiente. -
No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.
El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.
Cree y ejecute la aplicación Managed Service for Apache Flink
Puede crear y ejecutar una aplicación de Managed Service para Apache Flink mediante la consola o la AWS CLI.
nota
Cuando crea la aplicación mediante la consola, sus recursos AWS Identity and Access Management (de IAM) y de Amazon CloudWatch Logs se crean automáticamente. Cuando crea la aplicación con AWS CLI, crea estos recursos por separado.
Cree y ejecute la aplicación (consola)
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Abra la consola de Managed Service para Apache Flink 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
Edite 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-2
que 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.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-
username
/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" }
Configure la aplicación
-
En la MyApplicationpágina, 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 ProducerConfigProperties
flink.inputstream.initpos
LATEST
ProducerConfigProperties
aws.region
us-west-2
ProducerConfigProperties
AggregationEnabled
false
-
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
Para el CloudWatch registro, active la casilla Activar.
-
Elija Actualizar.
nota
Cuando eliges habilitar el CloudWatch registro de Amazon, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros para ti. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication
-
Flujo de registro:
kinesis-analytics-log-stream
Ejecución de la aplicación
Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.
Detenga la aplicación
En la MyApplicationpágina, selecciona Detener. Confirme la acción.
Actualizar la aplicación
Mediante la consola, puede actualizar la configuración de la aplicación, tal como sus propiedades, ajustes de monitorización y la ubicación o el nombre de archivo JAR de la aplicación. También puede volver a cargar el JAR de la aplicación del bucket de Amazon S3 si necesita actualizar el código de la aplicación.
En la MyApplicationpágina, elija Configurar. Actualice la configuración de la aplicación y elija Actualizar.
Cree y ejecute la aplicación (AWS CLI)
En esta sección, se utiliza AWS CLI para crear y ejecutar la aplicación Managed Service for Apache Flink. Un Managed Service for Apache Flink utiliza el kinesisanalyticsv2
AWS CLI comando para crear aplicaciones Managed Service for Apache Flink e interactuar con ellas.
Crear una política de permisos
nota
Debe crear una política de permisos y un rol para su aplicación. Si no crea estos recursos de IAM, la aplicación no podrá acceder a sus flujos de datos y de registro.
En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción read
en el flujo de origen y otra que concede permisos para las acciones write
en el flujo de recepción. A continuación, asocie la política a un rol de IAM (que se crea en la siguiente sección). Por lo tanto, cuando Managed Service para Apache Flink asume el rol, el servicio tiene los permisos necesarios para leer desde el flujo de origen y escribir en el flujo de recepción.
Utilice el siguiente código para crear la política de permisos AKReadSourceStreamWriteSinkStream
. Reemplace
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
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": ["arn:aws:s3:::ka-app-code-
username
", "arn:aws:s3:::ka-app-code-username
/*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" } ] }
Para step-by-step obtener instrucciones sobre cómo crear una política de permisos, consulte el tutorial: Cómo crear y adjuntar su primera política gestionada por el cliente en la Guía del usuario de IAM.
nota
Para acceder a otros servicios de Amazon, puede usar AWS SDK for Java. Managed Service para Apache Flink establece automáticamente las credenciales requeridas por el SDK con las del rol de IAM de ejecución del servicio asociada a su aplicación. No hace falta realizar ningún otro paso.
Creación de un rol de IAM
En esta sección, creará un rol de IAM que la aplicación de Managed Service para Apache Flink pueda asumir para leer un flujo de origen y escribir en el flujo de recepción.
Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se conceden a través del rol de IAM. Cada rol de IAM tiene dos políticas asociadas. La política de confianza concede a Managed Service para Apache Flink permiso para asumir el rol, y la política de permisos determina lo que Managed Service para Apache Flink puede hacer después de asumir el rol.
Usted deberá asociar la política de permisos que ha creado en la sección anterior a este rol.
Cómo crear un rol de IAM
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-role
como Nombre de rol. Elija Crear rol.Ahora ha creado un nuevo rol de IAM llamado
MF-stream-rw-role
. A continuación, actualice las políticas de confianza y permisos del rol. -
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 ReadSourceStreamWriteSinkStream política AK y elija Adjuntar política.
-
Ahora ha creado el rol de ejecución de servicio que utiliza la aplicación para obtener acceso a los recursos. Anote el ARN del nuevo rol.
Para step-by-step obtener instrucciones sobre cómo crear un rol, consulte Creación de un rol de IAM (consola) en la Guía del usuario de IAM.
Cree la aplicación Managed Service para Apache Flink
-
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
CreateApplication
con la solicitud anterior para crear la aplicación:aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
Se ha creado la aplicación. Puede iniciar la aplicación en el siguiente paso.
Inicie la aplicación
En esta sección, se utiliza la acción StartApplication
para iniciar la aplicación.
Cómo iniciar la aplicación
-
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
StartApplication
con la solicitud anterior para iniciar la aplicación:aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
Ya se debe estar ejecutando la aplicación. Puedes comprobar las métricas de Managed Service for Apache Flink en la CloudWatch consola de Amazon para comprobar que la aplicación funciona.
Detenga la aplicación
En esta sección, se utiliza la acción StopApplication
para detener la aplicación.
Cómo detener la aplicación
-
Guarde el siguiente código JSON en un archivo denominado
stop_request.json
.{ "ApplicationName": "test" }
-
Ejecute la acción
StopApplication
con la siguiente solicitud para detener la aplicación:aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
La aplicación se habrá detenido.
Añada una opción de CloudWatch registro
Puedes usar el AWS CLI para añadir un flujo de CloudWatch registro de Amazon a tu aplicación. Para obtener información sobre el uso CloudWatch de Logs con su aplicación, consulteConfigurar el registro de aplicaciones en Managed Service for Apache Flink.
Actualice las propiedades del entorno
En esta sección, utilizará la acción UpdateApplication
para cambiar las propiedades del entorno de la aplicación sin tener que volver a compilar el código de la aplicación. En este ejemplo, deberá cambiar la región de los flujos de origen y destino.
Cómo actualizar las propiedades de entorno de la aplicación
-
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
UpdateApplication
con la solicitud anterior para actualizar las propiedades del entorno:aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Actualización del código de la aplicación
Cuando necesite actualizar el código de la aplicación con una nueva versión del paquete de códigos, utilice la UpdateApplication
AWS CLI acción.
nota
Para cargar una nueva versión del código de la aplicación con el mismo nombre de archivo, debe especificar la nueva versión del objeto. Para obtener más información sobre el uso de versiones de objetos de Amazon S3, consulte Enabling or Disabling Versioning.
Para usarlo AWS CLI, elimine el paquete de códigos anterior de su bucket de Amazon S3, cargue la nueva versión y llameUpdateApplication
, especificando el mismo nombre de bucket y objeto de Amazon S3 y la nueva versión del objeto. La aplicación se reiniciará con el nuevo paquete de código.
En el siguiente ejemplo de solicitud de la acción UpdateApplication
, se vuelve a cargar el código de la aplicación y se reinicia la aplicación. Actualice la CurrentApplicationVersionId
a la versión actual de la aplicación. Puede comprobar la versión actual de la aplicación mediante las acciones ListApplications
o DescribeApplication
. Actualice el sufijo del nombre del bucket (<username>
) con el sufijo que haya elegido en la sección Cree dos transmisiones de datos de Amazon Kinesis.
{ "ApplicationName": "test", "CurrentApplicationVersionId":
1
, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username
", "FileKeyUpdate": "aws-kinesis-analytics-java-apps-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU
" } } } } }
Siguiente paso
Paso 4: Limpiar AWS los recursos
Paso 4: Limpiar AWS los recursos
Esta sección incluye procedimientos para limpiar AWS los recursos creados en el tutorial de introducción.
Este tema contiene las siguientes secciones:
Elimine su aplicación Managed Service for Apache Flink
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. -
En el panel Servicio gestionado para Apache Flink, elija. MyApplication
-
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Elimine sus transmisiones de datos de Kinesis
Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.
-
En el panel Kinesis Data Streams, ExampleInputStreamelija.
-
En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.
-
En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.
Elimine el objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. -
Elija el
cubo ka-app-code -. <username>
-
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Elimine 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.
CloudWatch Elimine sus recursos
Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/
. -
En la barra de navegación, elija Registros.
-
Elija el grupo de registros MyApplication/aws/kinesis-analytics/.
-
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.
La solución de datos de AWS transmisión para Amazon Kinesis
: la solución de datos de AWS transmisión para Amazon Kinesis configura automáticamente AWS los servicios necesarios para capturar, almacenar, procesar y entregar fácilmente los datos de transmisión. La solución ofrece varias opciones para resolver casos de uso de datos de streaming. La opción Managed Service for Apache Flink ofrece un ejemplo de ETL de end-to-end streaming que muestra una aplicación real que ejecuta operaciones analíticas con datos simulados de taxis de Nueva York. La solución configura todos los AWS recursos necesarios, como las funciones y políticas de IAM, un CloudWatch panel de control y alarmas. CloudWatch AWS Solución de transmisión de datos para Amazon MSK
: La solución de AWS transmisión de datos para Amazon MSK proporciona AWS CloudFormation plantillas en las que los datos fluyen a través de los productores, el almacenamiento de streaming, los consumidores y los destinos. Clickstream Lab con Apache Flink y Apache Kafka
: Un laboratorio integral para casos de uso de secuencias de clics que utiliza Amazon Managed Streaming para Apache Kafka para almacenamiento de streaming y aplicaciones de Managed Service para Apache Flink para procesamiento de flujos. Taller de Amazon Managed Service para Apache Flink
: en este taller, crearás una arquitectura de end-to-end streaming para ingerir, analizar y visualizar datos de streaming prácticamente en tiempo real. Usted se propuso mejorar las operaciones de una empresa de taxis de la ciudad de Nueva York. Usted analiza los datos de telemetría de una flota de taxis de la ciudad de Nueva York prácticamente en tiempo real para optimizar las operaciones de su flota. Aprenda Flink: formación práctica
: formación oficial introductoria sobre Apache Flink que le permitirá empezar a crear aplicaciones escalables de ETL de streaming, análisis y basadas en eventos. nota
Tenga en cuenta que Managed Service para Apache Flink no es compatible con la versión de Apache Flink (1.12) utilizada en esta formación. Puede utilizar Flink 1.15.2 en el servicio gestionado de Flink para Apache Flink.
Ejemplos de código de Apache Flink: GitHub repositorio de una amplia variedad de ejemplos
de aplicaciones de Apache Flink.
Primeros pasos: Flink 1.8.2: obsoleto
nota
La comunidad de Apache Flink no admite las versiones 1.6, 1.8 y 1.11 de Apache Flink desde hace más de tres años. Tenemos previsto dejar de utilizar estas versiones en Amazon Managed Service para Apache Flink el 5 de noviembre de 2024. A partir de esta fecha, no podrá crear nuevas aplicaciones para estas versiones de Flink. En este momento, puede seguir ejecutando las aplicaciones existentes. Puede actualizar sus aplicaciones de forma automática mediante la función de actualizaciones de versiones local de Amazon Managed Service for Apache Flink. Para obtener más información, consulte. Utilice actualizaciones de versión locales para Apache Flink
Este tema contiene una versión del Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink tutorial que utiliza Apache Flink 1.8.2.
Temas
- Componentes del servicio gestionado para la aplicación Apache Flink
- Requisitos previos para completar los ejercicios
- Paso 1: Configurar una AWS cuenta y crear un usuario administrador
- Paso 2: Configura el AWS Command Line Interface ()AWS CLI
- Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink
- Paso 4: Limpiar AWS los recursos
Componentes del servicio gestionado para la aplicación Apache Flink
Para procesar los datos, su aplicación de Managed Service para Apache Flink utiliza una aplicación Java/Apache Maven o Scala que procesa las entradas y produce las salidas mediante el tiempo de ejecución de Apache Flink.
Una aplicación de Managed Service para Apache Flink tiene los siguientes componentes:
-
Propiedades de tiempo de ejecución: puede usar las propiedades de tiempo de ejecución para configurar su aplicación sin tener que volver a compilar el código de la aplicación.
-
Fuente: la aplicación consume datos mediante una fuente. Un conector de origen lee los datos de un flujo de datos de Kinesis, un bucket de Amazon S3, etc. Para obtener más información, consulte Añada fuentes de datos de streaming al servicio gestionado de Apache Flink.
-
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 Transforme los datos con los operadores de Managed Service for Apache Flink.
-
Receptor: la aplicación produce datos para fuentes externas mediante el uso de receptores. Un conector receptor escribe datos en una transmisión de datos de Kinesis, una transmisión de Firehose, un bucket de Amazon S3, etc. Para obtener más información, consulte Escriba datos mediante sumideros en Managed Service para Apache Flink.
Después de crear, compilar y empaquetar el código de la aplicación, debe cargar el paquete del código a un bucket de Amazon Simple Storage Service (Amazon S3). Luego debe crear la aplicación de Managed Service para Apache Flink. Introduzca la ubicación del paquete del código, un flujo de datos de Kinesis como origen de datos de streaming y, normalmente, una ubicación de streaming o archivo que recibe los datos procesados de la aplicación.
Requisitos previos para completar los ejercicios
Para completar los pasos de esta guía, debe disponer de lo siguiente:
-
Java Development Kit
(JDK), versión 8. Establezca la variable de entorno JAVA_HOME
para señalar la ubicación de la instalación del JDK. -
Para usar el conector Apache Flink Kinesis en este tutorial, debe descargar e instalar Apache Flink. Para obtener más detalles, consulte Uso del conector Apache Flink Kinesis Streams con versiones anteriores de Apache Flink.
-
Le recomendamos utilizar un entorno de desarrollo (como Eclipse Java Neon
o IntelliJ Idea ) para desarrollar y compilar su aplicación. -
Cliente Git
. Si aún no lo ha hecho, instale el cliente Git. -
Apache Maven Compiler Plugin
. Maven debe estar en su ruta de trabajo. Para probar la instalación de Apache Maven, introduzca lo siguiente: $ mvn -version
Para empezar, vaya a Paso 1: Configurar una AWS cuenta y crear un usuario administrador.
Paso 1: Configurar una AWS cuenta y crear un usuario administrador
Inscríbase en una Cuenta de AWS
Si no tiene uno Cuenta de AWS, complete los siguientes pasos para crearlo.
Para suscribirse a una Cuenta de AWS
Siga las instrucciones que se le indiquen.
Parte del procedimiento de registro consiste en recibir una llamada telefónica e indicar un código de verificación en el teclado del teléfono.
Cuando te registras en una Cuenta de AWS, Usuario raíz de la cuenta de AWSse crea una. El usuario raíz tendrá acceso a todos los Servicios de AWS y recursos de esa cuenta. Como práctica recomendada de seguridad, asigne acceso administrativo a un usuario y utilice únicamente el usuario raíz para realizar tareas que requieren acceso de usuario raíz.
AWS te envía un correo electrónico de confirmación una vez finalizado el proceso de registro. Puede ver la actividad de la cuenta y administrar la cuenta en cualquier momento entrando en https://aws.amazon.com/
Creación de un usuario con acceso administrativo
Después de crear un usuario administrativo Cuenta de AWS, asegúrelo Usuario raíz de la cuenta de AWS AWS IAM Identity Center, habilite y cree un usuario administrativo para no usar el usuario root en las tareas diarias.
Proteja su Usuario raíz de la cuenta de AWS
-
Inicie sesión AWS Management Console
como propietario de la cuenta seleccionando el usuario root e introduciendo su dirección de Cuenta de AWS correo electrónico. En la siguiente página, escriba su contraseña. Para obtener ayuda para iniciar sesión con el usuario raíz, consulte Iniciar sesión como usuario raíz en la Guía del usuario de AWS Sign-In .
-
Active la autenticación multifactor (MFA) para el usuario raíz.
Para obtener instrucciones, consulte Habilitar un dispositivo MFA virtual para el usuario Cuenta de AWS raíz (consola) en la Guía del usuario de IAM.
Creación de un usuario con acceso administrativo
-
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 su uso Directorio de IAM Identity Center como fuente de identidad, consulte Configurar el acceso de los usuarios con la configuración predeterminada Directorio de IAM Identity Center en la Guía del AWS IAM Identity Center usuario.
Iniciar sesión como usuario con acceso de administrador
-
Para iniciar sesión con el usuario de IAM Identity Center, utilice la URL de inicio de sesión que se envió a la dirección de correo electrónico cuando creó el usuario de IAM Identity Center.
Para obtener ayuda para iniciar sesión con un usuario del Centro de identidades de IAM, consulte Iniciar sesión en el portal de AWS acceso en la Guía del AWS Sign-In usuario.
Concesión de acceso a usuarios adicionales
-
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 quieren interactuar con personas AWS ajenas a. AWS Management Console La forma de conceder el acceso programático depende del tipo de usuario que acceda. AWS
Para conceder acceso programático a los usuarios, elija una de las siguientes opciones.
¿Qué usuario necesita acceso programático? | Para | Mediante |
---|---|---|
Identidad del personal (Usuarios administrados en el IAM Identity Center) |
Usa credenciales temporales para firmar las solicitudes programáticas a los AWS CLI AWS SDK o las API. AWS |
Siga las instrucciones de la interfaz que desea utilizar:
|
IAM | Utilice credenciales temporales para firmar las solicitudes programáticas a los AWS SDK o las AWS CLI API. AWS | Siga las instrucciones de Uso de credenciales temporales con AWS recursos de la Guía del usuario de IAM. |
IAM | (No recomendado) Utilice credenciales de larga duración para firmar las solicitudes programáticas a los AWS CLI AWS SDK o las API. AWS |
Siga las instrucciones de la interfaz que desea utilizar:
|
Paso 2: Configura el AWS Command Line Interface ()AWS CLI
En este paso, debe descargar y configurar AWS CLI para usarlo con Managed Service for Apache Flink.
nota
En los ejercicios introductorios de esta guía se presupone que está utilizando las credenciales de administrador (adminuser
) en su cuenta para realizar las operaciones.
nota
Si ya lo tiene AWS CLI instalado, es posible que necesite actualizarlo para obtener la funcionalidad más reciente. Para obtener más información, consulte Installing the AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface . Para comprobar la versión de AWS CLI, ejecute el siguiente comando:
aws --version
Los ejercicios de este tutorial requieren la siguiente AWS CLI versión o una posterior:
aws-cli/1.16.63
Para configurar el AWS CLI
-
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 AWS CLI
config
archivo. Puede utilizar este perfil cuando ejecute los comandos de la AWS CLI . Para obtener más información sobre los perfiles con nombre, consulte Perfiles con nombre en la Guía del usuario de AWS Command Line Interface .[profile adminuser] aws_access_key_id =
adminuser access key ID
aws_secret_access_key =adminuser secret access key
region =aws-region
Para ver una lista de las regiones disponibles, consulte este artículo sobre las regiones y puntos de enlace de en la Referencia general de Amazon Web Services.
nota
El código y los comandos de ejemplo de este tutorial utilizan la región Oeste de EE. UU. (Oregón). Para usar una AWS región diferente, cambie la región en el código y los comandos de este tutorial por la región que desee usar.
-
Verifique la configuración introduciendo el siguiente comando de ayuda en el símbolo del sistema:
aws help
Tras configurar una AWS cuenta y la AWS CLI, puede probar el siguiente ejercicio, en el que configurará una aplicación de ejemplo y probará la end-to-end configuración.
Siguiente paso
Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink
Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink
En este ejercicio, deberá crear una aplicación de Managed Service para Apache Flink con flujos de datos como origen y receptor.
Esta sección contiene los siguientes pasos:
- Cree dos transmisiones de datos de Amazon Kinesis
- Escriba registros de muestra en la transmisión de entrada
- Descargue y examine el código Java de streaming de Apache Flink
- Compila el código de la aplicación
- Cargue el código Java de streaming de Apache Flink
- Cree y ejecute la aplicación Managed Service for Apache Flink
- Siguiente paso
Cree dos transmisiones de datos de Amazon Kinesis
Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, cree dos flujos de datos de Kinesis (ExampleInputStream
y ExampleOutputStream
). Su aplicación utiliza estos flujos para los flujos de origen y destino de la aplicación.
Puede crear estos flujos mediante la consola de Amazon Kinesis o el siguiente comando de la AWS CLI . Para obtener instrucciones sobre la consola, consulte Creating and Updating Data Streams en la Guía para desarrolladores de Amazon Kinesis Data Streams.
Cómo crear flujos de datos (AWS CLI)
-
Para crear la primera transmisión (
ExampleInputStream
), utilice el siguiente comando de Amazon Kinesiscreate-stream
AWS CLI .$ 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
Escriba registros de muestra en la transmisión de entrada
En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.
nota
Esta sección requiere AWS SDK for Python (Boto)
-
Cree un archivo denominado
stock.py
con el siguiente contenido:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { "EVENT_TIME": datetime.datetime.now().isoformat(), "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]), "PRICE": round(random.random() * 100, 2), } def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey" ) if __name__ == "__main__": generate(STREAM_NAME, boto3.client("kinesis"))
-
Más adelante en el tutorial, se ejecuta el script
stock.py
para enviar datos a la aplicación.$ python stock.py
Descargue y examine el código Java de streaming de Apache Flink
El código de la aplicación Java para este ejemplo está disponible en. GitHub Para descargar el código de la aplicación, haga lo siguiente:
-
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.java
contiene el métodomain
que define la funcionalidad de la aplicación. -
La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de Kinesis:
return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
-
La aplicación crea conectores de origen y recepción para obtener acceso a recursos externos usando un objeto
StreamExecutionEnvironment
. -
La aplicación crea conectores de origen y recepción mediante propiedades estáticas. Para utilizar propiedades dinámicas de la aplicación, utilice los métodos
createSourceFromApplicationProperties
ycreateSinkFromApplicationProperties
para crear los conectores. Estos métodos leen las propiedades de la aplicación para configurar los conectores.Para obtener más información sobre las propiedades de tiempo de ejecución, consulte Utilice las propiedades de tiempo de ejecución en Managed Service for Apache Flink.
Compila el código de la aplicación
En esta sección, se utiliza el compilador Apache Maven para crear el código de Java para la aplicación. Para obtener más información sobre la instalación de Apache Maven y el Java Development Kit (JDK), consulte Requisitos previos para completar los ejercicios.
nota
Para utilizar el conector de Kinesis con versiones de Apache Flink anteriores a la 1.11, debe descargar, compilar e instalar Apache Maven. Para obtener más información, consulte Uso del conector Apache Flink Kinesis Streams con versiones anteriores de Apache Flink.
Cómo compilar el código de la aplicación
-
Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Puede compilar y empaquetar el código de una de las dos formas siguientes:
-
Utilice la herramienta de línea de comandos de Maven. Cree su archivo JAR ejecutando el siguiente comando en el directorio que contiene el archivo
pom.xml
:mvn package -Dflink.version=1.8.2
-
Use el entorno de desarrollo. Consulte la documentación de su entorno de desarrollo para obtener más información.
nota
El código fuente proporcionado se basa en bibliotecas de Java 1.8. Asegúrese de que la versión Java de su proyecto sea 1.8.
Puede cargar el paquete como un archivo JAR o puede comprimir el paquete y cargarlo como un archivo ZIP. Si crea la aplicación con AWS CLI, especifique el tipo de contenido del código (JAR o ZIP).
-
-
Si hay errores al compilar, verifique que la variable de entorno
JAVA_HOME
se ha configurado correctamente.
Si la aplicación se compila correctamente, se crea el siguiente archivo:
target/aws-kinesis-analytics-java-apps-1.0.jar
Cargue el código Java de streaming de Apache Flink
En esta sección, creará un bucket de Amazon Simple Storage Service (Amazon S3) y cargará el código de la aplicación.
Cómo cargar el código de la aplicación
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
<username>bucket ka-app-code- y elija Upload.
-
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
aws-kinesis-analytics-java-apps-1.0.jar
que creó en el paso anterior. Elija Siguiente. -
No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.
El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.
Cree y ejecute la aplicación Managed Service for Apache Flink
Puede crear y ejecutar una aplicación de Managed Service para Apache Flink mediante la consola o la AWS CLI.
nota
Cuando crea la aplicación mediante la consola, sus recursos AWS Identity and Access Management (de IAM) y de Amazon CloudWatch Logs se crean automáticamente. Cuando crea la aplicación con AWS CLI, crea estos recursos por separado.
Cree y ejecute la aplicación (consola)
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Abra la consola de Managed Service para Apache Flink 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
Edite 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-2
que 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.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-
username
/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" }
Configure la aplicación
-
En la MyApplicationpágina, 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 ProducerConfigProperties
flink.inputstream.initpos
LATEST
ProducerConfigProperties
aws.region
us-west-2
ProducerConfigProperties
AggregationEnabled
false
-
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
Para el CloudWatch registro, active la casilla Activar.
-
Elija Actualizar.
nota
Cuando eliges habilitar el CloudWatch registro de Amazon, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros para ti. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication
-
Flujo de registro:
kinesis-analytics-log-stream
Ejecución de la aplicación
-
En la MyApplicationpágina, selecciona 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.
Detenga la aplicación
En la MyApplicationpágina, selecciona Detener. Confirme la acción.
Actualizar la aplicación
Mediante la consola, puede actualizar la configuración de la aplicación, tal como sus propiedades, ajustes de monitorización y la ubicación o el nombre de archivo JAR de la aplicación. También puede volver a cargar el JAR de la aplicación del bucket de Amazon S3 si necesita actualizar el código de la aplicación.
En la MyApplicationpágina, elija Configurar. Actualice la configuración de la aplicación y elija Actualizar.
Cree y ejecute la aplicación (AWS CLI)
En esta sección, se utiliza AWS CLI para crear y ejecutar la aplicación Managed Service for Apache Flink. Managed Service for Apache Flink usa el kinesisanalyticsv2
AWS CLI comando para crear aplicaciones Managed Service for Apache Flink e interactuar con ellas.
Crear una política de permisos
nota
Debe crear una política de permisos y un rol para su aplicación. Si no crea estos recursos de IAM, la aplicación no podrá acceder a sus flujos de datos y de registro.
En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción read
en el flujo de origen y otra que concede permisos para las acciones write
en el flujo de recepción. A continuación, asocie la política a un rol de IAM (que se crea en la siguiente sección). Por lo tanto, cuando Managed Service para Apache Flink asume el rol, el servicio tiene los permisos necesarios para leer desde el flujo de origen y escribir en el flujo de recepción.
Utilice el siguiente código para crear la política de permisos AKReadSourceStreamWriteSinkStream
. Reemplace
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
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": ["arn:aws:s3:::ka-app-code-
username
", "arn:aws:s3:::ka-app-code-username
/*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" } ] }
Para step-by-step obtener instrucciones sobre cómo crear una política de permisos, consulte el tutorial: Cómo crear y adjuntar su primera política gestionada por el cliente en la Guía del usuario de IAM.
nota
Para acceder a otros servicios de Amazon, puede usar AWS SDK for Java. Managed Service para Apache Flink establece automáticamente las credenciales requeridas por el SDK con las del rol de IAM de ejecución del servicio asociada a su aplicación. No hace falta realizar ningún otro paso.
Creación de un rol de IAM
En esta sección, creará un rol de IAM que la aplicación de Managed Service para Apache Flink pueda asumir para leer un flujo de origen y escribir en el flujo de recepción.
Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se conceden a través del rol de IAM. Cada rol de IAM tiene dos políticas asociadas. La política de confianza concede a Managed Service para Apache Flink permiso para asumir el rol, y la política de permisos determina lo que Managed Service para Apache Flink puede hacer después de asumir el rol.
Usted deberá asociar la política de permisos que ha creado en la sección anterior a este rol.
Cómo crear un rol de IAM
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-role
como Nombre de rol. Elija Crear rol.Ahora ha creado un nuevo rol de IAM llamado
MF-stream-rw-role
. A continuación, actualice las políticas de confianza y permisos del rol. -
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 ReadSourceStreamWriteSinkStream política AK y elija Adjuntar política.
-
Ahora ha creado el rol de ejecución de servicio que utiliza la aplicación para obtener acceso a los recursos. Anote el ARN del nuevo rol.
Para step-by-step obtener instrucciones sobre cómo crear un rol, consulte Creación de un rol de IAM (consola) en la Guía del usuario de IAM.
Cree la aplicación Managed Service para Apache Flink
-
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
CreateApplication
con la solicitud anterior para crear la aplicación:aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
Se ha creado la aplicación. Puede iniciar la aplicación en el siguiente paso.
Inicie la aplicación
En esta sección, se utiliza la acción StartApplication
para iniciar la aplicación.
Cómo iniciar la aplicación
-
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
StartApplication
con la solicitud anterior para iniciar la aplicación:aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
Ya se debe estar ejecutando la aplicación. Puedes comprobar las métricas de Managed Service for Apache Flink en la CloudWatch consola de Amazon para comprobar que la aplicación funciona.
Detenga la aplicación
En esta sección, se utiliza la acción StopApplication
para detener la aplicación.
Cómo detener la aplicación
-
Guarde el siguiente código JSON en un archivo denominado
stop_request.json
.{ "ApplicationName": "test" }
-
Ejecute la acción
StopApplication
con la siguiente solicitud para detener la aplicación:aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
La aplicación se habrá detenido.
Añada una opción de CloudWatch registro
Puedes usar el AWS CLI para añadir un flujo de CloudWatch registro de Amazon a tu aplicación. Para obtener información sobre el uso CloudWatch de Logs con su aplicación, consulteConfigurar el registro de aplicaciones en Managed Service for Apache Flink.
Actualice las propiedades del entorno
En esta sección, utilizará la acción UpdateApplication
para cambiar las propiedades del entorno de la aplicación sin tener que volver a compilar el código de la aplicación. En este ejemplo, deberá cambiar la región de los flujos de origen y destino.
Cómo actualizar las propiedades de entorno de la aplicación
-
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
UpdateApplication
con la solicitud anterior para actualizar las propiedades del entorno:aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Actualización del código de la aplicación
Cuando necesite actualizar el código de la aplicación con una nueva versión del paquete de códigos, utilice la UpdateApplication
AWS CLI acción.
nota
Para cargar una nueva versión del código de la aplicación con el mismo nombre de archivo, debe especificar la nueva versión del objeto. Para obtener más información sobre el uso de versiones de objetos de Amazon S3, consulte Enabling or Disabling Versioning.
Para usarlo AWS CLI, elimine el paquete de códigos anterior de su bucket de Amazon S3, cargue la nueva versión y llameUpdateApplication
, especificando el mismo nombre de bucket y objeto de Amazon S3 y la nueva versión del objeto. La aplicación se reiniciará con el nuevo paquete de código.
En el siguiente ejemplo de solicitud de la acción UpdateApplication
, se vuelve a cargar el código de la aplicación y se reinicia la aplicación. Actualice la CurrentApplicationVersionId
a la versión actual de la aplicación. Puede comprobar la versión actual de la aplicación mediante las acciones ListApplications
o DescribeApplication
. Actualice el sufijo del nombre del bucket (<username>
) con el sufijo que haya elegido en la sección Cree dos transmisiones de datos de Amazon Kinesis.
{ "ApplicationName": "test", "CurrentApplicationVersionId":
1
, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username
", "FileKeyUpdate": "aws-kinesis-analytics-java-apps-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU
" } } } } }
Siguiente paso
Paso 4: Limpiar AWS los recursos
Paso 4: Limpiar AWS los recursos
Esta sección incluye procedimientos para limpiar AWS los recursos creados en el tutorial de introducción.
Este tema contiene las siguientes secciones:
Elimine su aplicación Managed Service for Apache Flink
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. -
En el panel Servicio gestionado 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.
Elimine sus transmisiones de datos de Kinesis
Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.
-
En el panel Kinesis Data Streams, ExampleInputStreamelija.
-
En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.
-
En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.
Elimine el objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. -
Elija el
cubo ka-app-code -. <username>
-
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Elimine 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.
CloudWatch Elimine sus recursos
Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/
. -
En la barra de navegación, elija Registros.
-
Elija el grupo de registros MyApplication/aws/kinesis-analytics/.
-
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Para empezar: Flink 1.6.2: obsoleto
nota
La comunidad de Apache Flink no admite las versiones 1.6, 1.8 y 1.11 de Apache Flink desde hace más de tres años. Tenemos previsto dejar de utilizar estas versiones en Amazon Managed Service para Apache Flink el 5 de noviembre de 2024. A partir de esta fecha, no podrá crear nuevas aplicaciones para estas versiones de Flink. En este momento, puede seguir ejecutando las aplicaciones existentes. Puede actualizar sus aplicaciones de forma automática mediante la función de actualizaciones de versiones local de Amazon Managed Service for Apache Flink. Para obtener más información, consulte. Utilice actualizaciones de versión locales para Apache Flink
Este tema contiene una versión del Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink tutorial que utiliza Apache Flink 1.6.2.
Temas
- Componentes de una aplicación de servicio gestionado para Apache Flink
- Requisitos previos para completar los ejercicios
- Paso 1: Configurar una AWS cuenta y crear un usuario administrador
- Paso 2: Configura el AWS Command Line Interface ()AWS CLI
- Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink
- Paso 4: Limpiar AWS los recursos
Componentes de una aplicación de servicio gestionado para Apache Flink
Para procesar los datos, su aplicación de Managed Service para Apache Flink utiliza una aplicación Java/Apache Maven o Scala que procesa las entradas y produce las salidas mediante el tiempo de ejecución de Apache Flink.
Managed Service para Apache Flink tiene los siguientes componentes:
-
Propiedades de tiempo de ejecución: puede usar las propiedades de tiempo de ejecución para configurar su aplicación sin tener que volver a compilar el código de la aplicación.
-
Fuente: la aplicación consume datos mediante una fuente. Un conector de origen lee los datos de un flujo de datos de Kinesis, un bucket de Amazon S3, etc. Para obtener más información, consulte Añada fuentes de datos de streaming al servicio gestionado de Apache Flink.
-
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 Transforme los datos con los operadores de Managed Service for Apache Flink.
-
Receptor: la aplicación produce datos para fuentes externas mediante el uso de receptores. Un conector receptor escribe datos en una transmisión de datos de Kinesis, una transmisión de Firehose, un bucket de Amazon S3, etc. Para obtener más información, consulte Escriba datos mediante sumideros en Managed Service para Apache Flink.
Después de crear, compilar y empaquetar la aplicación, debe cargar el paquete del código a un bucket de Amazon Simple Storage Service (Amazon S3). Luego debe crear la aplicación de Managed Service para Apache Flink. Introduzca la ubicación del paquete del código, un flujo de datos de Kinesis como origen de datos de streaming y, normalmente, una ubicación de streaming o archivo que recibe los datos procesados de la aplicación.
Requisitos previos para completar los ejercicios
Para completar los pasos de esta guía, debe disponer de lo siguiente:
-
Java Development Kit
(JDK), versión 8. Establezca la variable de entorno JAVA_HOME
para señalar la ubicación de la instalación del JDK. -
Le recomendamos utilizar un entorno de desarrollo (como Eclipse Java Neon
o IntelliJ Idea ) para desarrollar y compilar su aplicación. -
Cliente Git.
Si aún no lo ha hecho, instale el cliente Git. -
Apache Maven Compiler Plugin
. Maven debe estar en su ruta de trabajo. Para probar la instalación de Apache Maven, introduzca lo siguiente: $ mvn -version
Para empezar, vaya a Paso 1: Configurar una AWS cuenta y crear un usuario administrador.
Paso 1: Configurar una AWS cuenta y crear un usuario administrador
Inscríbase en una Cuenta de AWS
Si no tiene uno Cuenta de AWS, complete los siguientes pasos para crearlo.
Para suscribirse a una Cuenta de AWS
Siga las instrucciones que se le indiquen.
Parte del procedimiento de registro consiste en recibir una llamada telefónica e indicar un código de verificación en el teclado del teléfono.
Cuando te registras en una Cuenta de AWS, Usuario raíz de la cuenta de AWSse crea una. El usuario raíz tendrá acceso a todos los Servicios de AWS y recursos de esa cuenta. Como práctica recomendada de seguridad, asigne acceso administrativo a un usuario y utilice únicamente el usuario raíz para realizar tareas que requieren acceso de usuario raíz.
AWS te envía un correo electrónico de confirmación una vez finalizado el proceso de registro. Puede ver la actividad de la cuenta y administrar la cuenta en cualquier momento entrando en https://aws.amazon.com/
Creación de un usuario con acceso administrativo
Después de crear un usuario administrativo Cuenta de AWS, asegúrelo Usuario raíz de la cuenta de AWS AWS IAM Identity Center, habilite y cree un usuario administrativo para no usar el usuario root en las tareas diarias.
Proteja su Usuario raíz de la cuenta de AWS
-
Inicie sesión AWS Management Console
como propietario de la cuenta seleccionando el usuario root e introduciendo su dirección de Cuenta de AWS correo electrónico. En la siguiente página, escriba su contraseña. Para obtener ayuda para iniciar sesión con el usuario raíz, consulte Iniciar sesión como usuario raíz en la Guía del usuario de AWS Sign-In .
-
Active la autenticación multifactor (MFA) para el usuario raíz.
Para obtener instrucciones, consulte Habilitar un dispositivo MFA virtual para el usuario Cuenta de AWS raíz (consola) en la Guía del usuario de IAM.
Creación de un usuario con acceso administrativo
-
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 su uso Directorio de IAM Identity Center como fuente de identidad, consulte Configurar el acceso de los usuarios con la configuración predeterminada Directorio de IAM Identity Center en la Guía del AWS IAM Identity Center usuario.
Iniciar sesión como usuario con acceso de administrador
-
Para iniciar sesión con el usuario de IAM Identity Center, utilice la URL de inicio de sesión que se envió a la dirección de correo electrónico cuando creó el usuario de IAM Identity Center.
Para obtener ayuda para iniciar sesión con un usuario del Centro de identidades de IAM, consulte Iniciar sesión en el portal de AWS acceso en la Guía del AWS Sign-In usuario.
Concesión de acceso a usuarios adicionales
-
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 quieren interactuar con personas AWS ajenas a. AWS Management Console La forma de conceder el acceso programático depende del tipo de usuario que acceda. AWS
Para conceder acceso programático a los usuarios, elija una de las siguientes opciones.
¿Qué usuario necesita acceso programático? | Para | Mediante |
---|---|---|
Identidad del personal (Usuarios administrados en el IAM Identity Center) |
Usa credenciales temporales para firmar las solicitudes programáticas a los AWS CLI AWS SDK o las API. AWS |
Siga las instrucciones de la interfaz que desea utilizar:
|
IAM | Utilice credenciales temporales para firmar las solicitudes programáticas a los AWS SDK o las AWS CLI API. AWS | Siga las instrucciones de Uso de credenciales temporales con AWS recursos de la Guía del usuario de IAM. |
IAM | (No recomendado) Utilice credenciales de larga duración para firmar las solicitudes programáticas a los AWS CLI AWS SDK o las API. AWS |
Siga las instrucciones de la interfaz que desea utilizar:
|
Paso 2: Configura el AWS Command Line Interface ()AWS CLI
En este paso, debe descargar y configurar el AWS CLI para usarlo con un servicio gestionado de Apache Flink.
nota
En los ejercicios introductorios de esta guía se presupone que está utilizando las credenciales de administrador (adminuser
) en su cuenta para realizar las operaciones.
nota
Si ya lo tiene AWS CLI instalado, es posible que necesite actualizarlo para obtener la funcionalidad más reciente. Para obtener más información, consulte Installing the AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface . Para comprobar la versión de AWS CLI, ejecute el siguiente comando:
aws --version
Los ejercicios de este tutorial requieren la siguiente AWS CLI versión o una posterior:
aws-cli/1.16.63
Para configurar el AWS CLI
-
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 AWS CLI
config
archivo. Puede utilizar este perfil cuando ejecute los comandos de la AWS CLI . Para obtener más información sobre los perfiles con nombre, consulte Perfiles con nombre en la Guía del usuario de la AWS Command Line Interface .[profile adminuser] aws_access_key_id =
adminuser access key ID
aws_secret_access_key =adminuser secret access key
region =aws-region
Para obtener una lista de AWS las regiones disponibles, consulte Regiones y puntos finales en la Referencia general de Amazon Web Services.
nota
El código y los comandos de ejemplo de este tutorial utilizan la región Oeste de EE. UU. (Oregón). Para usar una región diferente, cambie la región en el código y los comandos de este tutorial por la región que desea usar.
-
Verifique la configuración introduciendo el siguiente comando de ayuda en el símbolo del sistema:
aws help
Después de configurar una AWS cuenta y el AWS CLI, puede probar el siguiente ejercicio, en el que configurará una aplicación de ejemplo y probará la end-to-end configuración.
Siguiente paso
Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink
Paso 3: Crear y ejecutar un servicio gestionado para la aplicación Apache Flink
En este ejercicio, deberá crear una aplicación de Managed Service para Apache Flink con flujos de datos como origen y receptor.
Esta sección contiene los siguientes pasos:
- Cree dos transmisiones de datos de Amazon Kinesis
- Escriba registros de muestra en la transmisión de entrada
- Descargue y examine el código Java de streaming de Apache Flink
- Compila el código de la aplicación
- Cargue el código Java de streaming de Apache Flink
- Cree y ejecute la aplicación Managed Service for Apache Flink
Cree dos transmisiones de datos de Amazon Kinesis
Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, cree dos flujos de datos de Kinesis (ExampleInputStream
y ExampleOutputStream
). Su aplicación utiliza estos flujos para los flujos de origen y destino de la aplicación.
Puede crear estos flujos mediante la consola de Amazon Kinesis o el siguiente comando de la AWS CLI . Para obtener instrucciones sobre la consola, consulte Creating and Updating Data Streams en la Guía para desarrolladores de Amazon Kinesis Data Streams.
Cómo crear flujos de datos (AWS CLI)
-
Para crear la primera transmisión (
ExampleInputStream
), utilice el siguiente comando de Amazon Kinesiscreate-stream
AWS CLI .$ 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
Escriba registros de muestra en la transmisión de entrada
En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.
nota
Esta sección requiere AWS SDK for Python (Boto)
-
Cree un archivo denominado
stock.py
con el siguiente contenido:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { "EVENT_TIME": datetime.datetime.now().isoformat(), "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]), "PRICE": round(random.random() * 100, 2), } def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey" ) if __name__ == "__main__": generate(STREAM_NAME, boto3.client("kinesis"))
-
Más adelante en el tutorial, se ejecuta el script
stock.py
para enviar datos a la aplicación.$ python stock.py
Descargue y examine el código Java de streaming de Apache Flink
El código de la aplicación Java para este ejemplo está disponible en. GitHub Para descargar el código de la aplicación, haga lo siguiente:
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_6
.
Tenga en cuenta lo siguiente en relación con el código de la aplicación:
Un archivo Project Object Model (pom.xml)
contiene información sobre la configuración y las dependencias de la aplicación, incluidas las bibliotecas de Managed Service para Apache Flink. El archivo
BasicStreamingJob.java
contiene el métodomain
que define la funcionalidad de la aplicación.La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de Kinesis:
return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
La aplicación crea conectores de origen y recepción para obtener acceso a recursos externos usando un objeto
StreamExecutionEnvironment
.La aplicación crea conectores de origen y recepción mediante propiedades estáticas. Para utilizar propiedades dinámicas de la aplicación, utilice los métodos
createSourceFromApplicationProperties
ycreateSinkFromApplicationProperties
para crear los conectores. Estos métodos leen las propiedades de la aplicación para configurar los conectores.Para obtener más información sobre las propiedades de tiempo de ejecución, consulte Utilice las propiedades de tiempo de ejecución en Managed Service for Apache Flink.
Compila el código de la aplicación
En esta sección, se utiliza el compilador Apache Maven para crear el código de Java para la aplicación. Para obtener más información sobre la instalación de Apache Maven y el Java Development Kit (JDK), consulte Requisitos previos para completar los ejercicios.
nota
Para utilizar el conector de Kinesis con versiones de Apache Flink anteriores a la 1.11, es necesario descargar el código fuente del conector y compilarlo tal y como se describe en la documentación de Apache Flink
Cómo compilar el código de la aplicación
-
Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Puede compilar y empaquetar el código de una de las dos formas siguientes:
Utilice la herramienta de línea de comandos de Maven. Cree su archivo JAR ejecutando el siguiente comando en el directorio que contiene el archivo
pom.xml
:mvn package
nota
El parámetro -DFLink.version no es necesario para la versión 1.0.1 de tiempo de ejecución de Managed Service para Apache Flink; solo es necesario para la versión 1.1.0 y versiones posteriores. Para obtener más información, consulte Especifique la versión de Apache Flink de su aplicación.
Use el entorno de desarrollo. Consulte la documentación de su entorno de desarrollo para obtener más información.
Puede cargar el paquete como un archivo JAR o puede comprimir el paquete y cargarlo como un archivo ZIP. Si crea la aplicación con AWS CLI, especifique el tipo de contenido del código (JAR o ZIP).
-
Si hay errores al compilar, verifique que la variable de entorno
JAVA_HOME
se ha configurado correctamente.
Si la aplicación se compila correctamente, se crea el siguiente archivo:
target/aws-kinesis-analytics-java-apps-1.0.jar
Cargue el código Java de streaming de Apache Flink
En esta sección, creará un bucket de Amazon Simple Storage Service (Amazon S3) y cargará el código de la aplicación.
Cómo cargar el código de la aplicación
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
<username>bucket ka-app-code- y elija Upload.
-
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
aws-kinesis-analytics-java-apps-1.0.jar
que creó en el paso anterior. Elija Siguiente. -
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.
Cree y ejecute la aplicación Managed Service for Apache Flink
Puede crear y ejecutar una aplicación de Managed Service para Apache Flink mediante la consola o la AWS CLI.
nota
Cuando crea la aplicación mediante la consola, sus recursos AWS Identity and Access Management (de IAM) y de Amazon CloudWatch Logs se crean automáticamente. Cuando crea la aplicación con AWS CLI, crea estos recursos por separado.
Cree y ejecute la aplicación (consola)
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Abra la consola de Managed Service para Apache Flink 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
Edite 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-2
que 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.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-
username
/java-getting-started-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" }
Configure la aplicación
-
En la MyApplicationpágina, 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 ProducerConfigProperties
flink.inputstream.initpos
LATEST
ProducerConfigProperties
aws.region
us-west-2
ProducerConfigProperties
AggregationEnabled
false
-
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
Para el CloudWatch registro, active la casilla Activar.
-
Elija Actualizar.
nota
Cuando eliges habilitar el CloudWatch registro de Amazon, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros para ti. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication
-
Flujo de registro:
kinesis-analytics-log-stream
Ejecución de la aplicación
-
En la MyApplicationpágina, selecciona 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.
Detenga la aplicación
En la MyApplicationpágina, selecciona Detener. Confirme la acción.
Actualizar la aplicación
Mediante la consola, puede actualizar la configuración de la aplicación, tal como sus propiedades, ajustes de monitorización y la ubicación o el nombre de archivo JAR de la aplicación. También puede volver a cargar el JAR de la aplicación del bucket de Amazon S3 si necesita actualizar el código de la aplicación.
En la MyApplicationpágina, elija Configurar. Actualice la configuración de la aplicación y elija Actualizar.
Cree y ejecute la aplicación (AWS CLI)
En esta sección, se utiliza AWS CLI para crear y ejecutar la aplicación Managed Service for Apache Flink. Managed Service for Apache Flink usa el kinesisanalyticsv2
AWS CLI comando para crear aplicaciones Managed Service for Apache Flink e interactuar con ellas.
Creación de una política de permisos
En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción read
en el flujo de origen y otra que concede permisos para las acciones write
en el flujo de recepción. A continuación, asocie la política a un rol de IAM (que se crea en la siguiente sección). Por lo tanto, cuando Managed Service para Apache Flink asume el rol, el servicio tiene los permisos necesarios para leer desde el flujo de origen y escribir en el flujo de recepción.
Utilice el siguiente código para crear la política de permisos AKReadSourceStreamWriteSinkStream
. Reemplace
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
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": ["arn:aws:s3:::ka-app-code-
username
", "arn:aws:s3:::ka-app-code-username
/*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" } ] }
Para step-by-step obtener instrucciones sobre cómo crear una política de permisos, consulte el tutorial: Cómo crear y adjuntar su primera política gestionada por el cliente en la Guía del usuario de IAM.
nota
Para acceder a otros servicios de Amazon, puede usar AWS SDK for Java. Managed Service para Apache Flink establece automáticamente las credenciales requeridas por el SDK con las del rol de IAM de ejecución del servicio asociada a su aplicación. No hace falta realizar ningún otro paso.
Creación de un rol de IAM
En esta sección, creará un rol de IAM que la aplicación de Managed Service para Apache Flink pueda asumir para leer un flujo de origen y escribir en el flujo de recepción.
Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se conceden a través del rol de IAM. Cada rol de IAM tiene dos políticas asociadas. La política de confianza concede a Managed Service para Apache Flink permiso para asumir el rol, y la política de permisos determina lo que Managed Service para Apache Flink puede hacer después de asumir el rol.
Usted deberá asociar la política de permisos que ha creado en la sección anterior a este rol.
Cómo crear un rol de IAM
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-role
como Nombre de rol. Elija Crear rol.Ahora ha creado un nuevo rol de IAM llamado
MF-stream-rw-role
. A continuación, actualice las políticas de confianza y permisos del rol. -
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 ReadSourceStreamWriteSinkStream política AK y elija Adjuntar política.
-
Ahora ha creado el rol de ejecución de servicio que utiliza la aplicación para obtener acceso a los recursos. Anote el ARN del nuevo rol.
Para step-by-step obtener instrucciones sobre cómo crear un rol, consulte Creación de un rol de IAM (consola) en la Guía del usuario de IAM.
Cree la aplicación Managed Service para Apache Flink
-
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
CreateApplication
con la solicitud anterior para crear la aplicación:aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
Se ha creado la aplicación. Puede iniciar la aplicación en el siguiente paso.
Inicie la aplicación
En esta sección, se utiliza la acción StartApplication
para iniciar la aplicación.
Cómo iniciar la aplicación
-
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
StartApplication
con la solicitud anterior para iniciar la aplicación:aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
Ya se debe estar ejecutando la aplicación. Puedes comprobar las métricas de Managed Service for Apache Flink en la CloudWatch consola de Amazon para comprobar que la aplicación funciona.
Detenga la aplicación
En esta sección, se utiliza la acción StopApplication
para detener la aplicación.
Cómo detener la aplicación
-
Guarde el siguiente código JSON en un archivo denominado
stop_request.json
.{ "ApplicationName": "test" }
-
Ejecute la acción
StopApplication
con la siguiente solicitud para detener la aplicación:aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
La aplicación se habrá detenido.
Añada una opción de CloudWatch registro
Puedes usar el AWS CLI para añadir un flujo de CloudWatch registro de Amazon a tu aplicación. Para obtener información sobre el uso CloudWatch de Logs con su aplicación, consulteConfigurar el registro de aplicaciones en Managed Service for Apache Flink.
Actualice las propiedades del entorno
En esta sección, utilizará la acción UpdateApplication
para cambiar las propiedades del entorno de la aplicación sin tener que volver a compilar el código de la aplicación. En este ejemplo, deberá cambiar la región de los flujos de origen y destino.
Cómo actualizar las propiedades de entorno de la aplicación
-
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
UpdateApplication
con la solicitud anterior para actualizar las propiedades del entorno:aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Actualización del código de la aplicación
Cuando necesite actualizar el código de la aplicación con una nueva versión del paquete de códigos, utilice la UpdateApplication
AWS CLI acción.
Para usarlo AWS CLI, elimine el paquete de códigos anterior de su bucket de Amazon S3, cargue la nueva versión y llame UpdateApplication
especificando el mismo nombre de objeto y bucket de Amazon S3. La aplicación se reiniciará con el nuevo paquete de código.
En el siguiente ejemplo de solicitud de la acción UpdateApplication
, se vuelve a cargar el código de la aplicación y se reinicia la aplicación. Actualice la CurrentApplicationVersionId
a la versión actual de la aplicación. Puede comprobar la versión actual de la aplicación mediante las acciones ListApplications
o DescribeApplication
. Actualice el sufijo del nombre del bucket (<username>
) con el sufijo que haya elegido en la sección Cree dos transmisiones de datos de Amazon Kinesis.
{ "ApplicationName": "test", "CurrentApplicationVersionId":
1
, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username
", "FileKeyUpdate": "java-getting-started-1.0.jar" } } } } }
Paso 4: Limpiar AWS los recursos
Esta sección incluye procedimientos para limpiar AWS los recursos creados en el tutorial de introducción.
Este tema contiene las siguientes secciones:
Elimine su aplicación Managed Service for Apache Flink
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel Servicio gestionado 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.
Elimine sus transmisiones de datos de Kinesis
Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.
En el panel Kinesis Data Streams, ExampleInputStreamelija.
En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.
En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.
Elimine el objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el
cubo ka-app-code -. <username>
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Elimine 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.
CloudWatch Elimine sus recursos
Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registros MyApplication/aws/kinesis-analytics/.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Ejemplos de versiones anteriores (antiguas) de Managed Service for Apache Flink
nota
Para ver ejemplos actuales, consulteEjemplos para crear aplicaciones de Managed Service for Apache Flink y trabajar con ellas.
En esta sección se proporcionan ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink. Incluyen ejemplos de código e step-by-step instrucciones que le ayudarán a crear un servicio gestionado para las aplicaciones de Apache Flink y a comprobar sus resultados.
Antes de explorar estos ejemplos, le recomendamos que en primer lugar examine lo siguiente:
nota
En estos ejemplos se asume que utiliza la región Oeste de EE. UU. (Oregón) (us-west-2
). Si utiliza una región diferente, actualice el código de la aplicación, los comandos y los roles de IAM en concordancia.
DataStream Ejemplos de API
Los siguientes ejemplos muestran cómo crear aplicaciones mediante la DataStream API Apache Flink.
Temas
- Ejemplo: ventana giratoria
- Ejemplo: ventana corredera
- Ejemplo: escribir en un bucket de Amazon S3
- Tutorial: Uso de un servicio gestionado para la aplicación Apache Flink para replicar datos de un tema de un clúster de MSK a otro de una VPC
- Ejemplo: utilizar un consumidor de EFO con una transmisión de datos de Kinesis
- Ejemplo: escribir a Firehose
- Ejemplo: leer desde una transmisión de Kinesis en una cuenta diferente
- Tutorial: Uso de una tienda de confianza personalizada con Amazon MSK
Ejemplo: ventana giratoria
nota
Para ver ejemplos actuales, consulteEjemplos para crear aplicaciones de Managed Service for Apache Flink y trabajar con ellas.
En este ejercicio, creará una aplicación de Managed Service para Apache Flink que agrega datos mediante una ventana de salto de tamaño constante. La agregación se encuentra habilitada de manera predeterminada en Flink. Para deshabilitarla, utilice lo siguiente:
sink.producer.aggregation-enabled' = 'false'
nota
Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.
Este tema contiene las siguientes secciones:
Crear recursos dependientes
Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, debe crear los siguientes recursos dependientes:
Dos flujos de datos de Kinesis (
ExampleInputStream
yExampleOutputStream
)Un bucket de Amazon S3 para almacenar el código de la aplicación (
ka-app-code-
)<username>
Puede crear los flujos de Kinesis y el bucket de Amazon S3 usando la consola. Si desea obtener instrucciones para crear estos recursos, consulte los siguientes temas:
Creación y actualización de flujos de datos en la Guía para desarrolladores de Amazon Kinesis Data Streams. Asigne un nombre a los flujos de datos
ExampleInputStream
yExampleOutputStream
.¿Cómo se puede crear un bucket de S3? en la guía de usuario de Amazon Simple Storage Service. Asigne al bucket de Amazon S3 un nombre único globalmente añadiendo su nombre de inicio de sesión, por ejemplo,
ka-app-code-
.<username>
Escriba registros de muestra en el flujo de entrada
En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.
nota
Esta sección requiere AWS SDK for Python (Boto)
-
Cree un archivo denominado
stock.py
con el siguiente contenido:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
-
Ejecute el script
stock.py
:$ python stock.py
Mantenga el script en ejecución mientras completa el resto del tutorial.
Descargue y examine el código de la aplicación
El código de la aplicación Java de este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
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/TumblingWindow
.
El código de la aplicación se encuentra en el archivo TumblingWindowStreamingJob.java
. Tenga en cuenta lo siguiente en relación con el código de la aplicación:
La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de Kinesis:
return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
Añada la siguiente instrucción import:
import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows; //flink 1.13 onward
La aplicación utiliza el operador
timeWindow
para encontrar el recuento de valores de cada símbolo bursátil en una ventana de salto de tamaño constante de 5 segundos. El siguiente código crea el operador y envía los datos agregados a un nuevo receptor de flujo de datos de Kinesis:input.flatMap(new Tokenizer()) // Tokenizer for generating words .keyBy(0) // Logically partition the stream for each word .window(TumblingProcessingTimeWindows.of(Time.seconds(5))) //Flink 1.13 onward .sum(1) // Sum the number of words per partition .map(value -> value.f0 + "," + value.f1.toString() + "\n") .addSink(createSinkFromStaticConfig());
Compila el código de la aplicación
Para compilar la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale Java y Maven. Para obtener más información, consulte Complete los requisitos previos requeridos en el tutorial de Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.
Compile la aplicación con el siguiente comando:
mvn package -Dflink.version=1.15.3
nota
El código fuente proporcionado se basa en bibliotecas de Java 11.
Al compilar la aplicación, se crea el archivo JAR de la aplicación (target/aws-kinesis-analytics-java-apps-1.0.jar
).
Cargue el código Java de streaming de Apache Flink
En esta sección, cargará su código de aplicación en el bucket de Amazon S3 que creó en la sección Crear recursos dependientes.
-
En la consola de Amazon S3, elija el
<username>bucket ka-app-code- y elija Upload.
-
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
aws-kinesis-analytics-java-apps-1.0.jar
que creó en el paso anterior. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.
El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.
Cree y ejecute la aplicación Managed Service for Apache Flink
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Abra la consola de Managed Service para Apache Flink 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
Edite 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-2
que 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.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "logs:DescribeLogGroups", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:logs:us-west-2:
012345678901
:log-group:*", "arn:aws:s3:::ka-app-code-<username>
/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": "logs:DescribeLogStreams", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" }
Configure la aplicación
-
En la MyApplicationpágina, 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.
-
Para el CloudWatch registro, active la casilla Activar.
-
Elija Actualizar.
nota
Si decide habilitar el CloudWatch registro, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros automáticamente. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication
-
Flujo de registro:
kinesis-analytics-log-stream
Este flujo de registro se utiliza para supervisar la aplicación. No es el mismo flujo de registro que utiliza la aplicación para enviar los resultados.
Ejecución de la aplicación
-
En la MyApplicationpágina, seleccione 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.
Puede comprobar las métricas del servicio gestionado para Apache Flink en la CloudWatch consola para comprobar que la aplicación funciona.
Limpieza de recursos de AWS
Esta sección incluye procedimientos para limpiar los AWS recursos creados en el tutorial Tumbling Window.
Este tema contiene las siguientes secciones:
Elimine su aplicación Managed Service for Apache Flink
Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.
en el panel Servicio gestionado para Apache Flink, elija. MyApplication
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Elimine sus transmisiones de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel Kinesis Data Streams, ExampleInputStreamelija.
En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.
En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.
Elimine el objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el
cubo ka-app-code -. <username>
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Elimine 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.
CloudWatch Elimine sus recursos
Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registros MyApplication/aws/kinesis-analytics/.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Ejemplo: ventana corredera
nota
Para ver ejemplos actuales, consulteEjemplos para crear aplicaciones de Managed Service for Apache Flink y trabajar con ellas.
nota
Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.
Este tema contiene las siguientes secciones:
Crear recursos dependientes
Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, debe crear los siguientes recursos dependientes:
Dos flujos de datos de Kinesis (
ExampleInputStream
yExampleOutputStream
).Un bucket de Amazon S3 para almacenar el código de la aplicación (
ka-app-code-
)<username>
Puede crear los flujos de Kinesis y el bucket de Amazon S3 usando la consola. Si desea obtener instrucciones para crear estos recursos, consulte los siguientes temas:
Creación y actualización de flujos de datos en la Guía para desarrolladores de Amazon Kinesis Data Streams. Asigne un nombre a sus flujos de datos
ExampleInputStream
yExampleOutputStream
.¿Cómo se puede crear un bucket de S3? en la guía de usuario de Amazon Simple Storage Service. Asigne al bucket de Amazon S3 un nombre único globalmente añadiendo su nombre de inicio de sesión, por ejemplo,
ka-app-code-
.<username>
Escriba registros de muestra en el flujo de entrada
En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.
nota
Esta sección requiere AWS SDK for Python (Boto)
-
Cree un archivo denominado
stock.py
con el siguiente contenido:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { "EVENT_TIME": datetime.datetime.now().isoformat(), "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]), "PRICE": round(random.random() * 100, 2), } def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey" ) if __name__ == "__main__": generate(STREAM_NAME, boto3.client("kinesis"))
-
Ejecute el script
stock.py
:$ python stock.py
Mantenga el script en ejecución mientras completa el resto del tutorial.
Descargue y examine el código de la aplicación
El código de la aplicación Java de este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
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/SlidingWindow
.
El código de la aplicación se encuentra en el archivo SlidingWindowStreamingJobWithParallelism.java
. Tenga en cuenta lo siguiente en relación con el código de la aplicación:
La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de Kinesis:
return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
La aplicación utiliza al operador
timeWindow
para encontrar el valor mínimo para cada símbolo bursátil en una ventana de 10 segundos que se desliza 5 segundos. El siguiente código crea el operador y envía los datos agregados a un nuevo receptor de flujo de datos de Kinesis:Añada la siguiente instrucción import:
import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows; //flink 1.13 onward
La aplicación utiliza el operador
timeWindow
para encontrar el recuento de valores de cada símbolo bursátil en una ventana de salto de tamaño constante de 5 segundos. El siguiente código crea el operador y envía los datos agregados a un nuevo receptor de flujo de datos de Kinesis:input.flatMap(new Tokenizer()) // Tokenizer for generating words .keyBy(0) // Logically partition the stream for each word .window(TumblingProcessingTimeWindows.of(Time.seconds(5))) //Flink 1.13 onward .sum(1) // Sum the number of words per partition .map(value -> value.f0 + "," + value.f1.toString() + "\n") .addSink(createSinkFromStaticConfig());
Compila el código de la aplicación
Para compilar la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale Java y Maven. Para obtener más información, consulte Complete los requisitos previos requeridos en el tutorial de Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.
Compile la aplicación con el siguiente comando:
mvn package -Dflink.version=1.15.3
nota
El código fuente proporcionado se basa en bibliotecas de Java 11.
Al compilar la aplicación, se crea el archivo JAR de la aplicación (target/aws-kinesis-analytics-java-apps-1.0.jar
).
Cargue el código Java de streaming de Apache Flink
En esta sección, carga el código de aplicación en el bucket de Amazon S3 que creó en la sección Crear recursos dependientes.
-
En la consola de Amazon S3, elija el
<username>bucket ka-app-code- y, a continuación, elija Upload.
-
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
aws-kinesis-analytics-java-apps-1.0.jar
que creó en el paso anterior. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.
El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.
Cree y ejecute la aplicación Managed Service for Apache Flink
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Abra la consola de Managed Service para Apache Flink 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
Edite 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-2
que 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.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "logs:DescribeLogGroups", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:logs:us-west-2:
012345678901
:log-group:*", "arn:aws:s3:::ka-app-code-<username>
/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": "logs:DescribeLogStreams", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" }
Configure la aplicación
-
En la MyApplicationpágina, 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.
-
Para el CloudWatch registro, active la casilla Activar.
-
Elija Actualizar.
nota
Cuando eliges habilitar el CloudWatch registro de Amazon, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros para ti. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication
-
Flujo de registro:
kinesis-analytics-log-stream
Este flujo de registro se utiliza para supervisar la aplicación. No es el mismo flujo de registro que utiliza la aplicación para enviar los resultados.
Configure el paralelismo de la aplicación
En este ejemplo de aplicación se utiliza la ejecución paralela de tareas. El siguiente código de aplicación establece el paralelismo del operador min
:
.setParallelism(3) // Set parallelism for the min operator
El paralelismo de la aplicación no puede ser mayor que el paralelismo provisto, que tiene un valor predeterminado de 1. Para aumentar el paralelismo de la aplicación, realice la siguiente acción: AWS CLI
aws kinesisanalyticsv2 update-application --application-name MyApplication --current-application-version-id <VersionId> --application-configuration-update "{\"FlinkApplicationConfigurationUpdate\": { \"ParallelismConfigurationUpdate\": {\"ParallelismUpdate\": 5, \"ConfigurationTypeUpdate\": \"CUSTOM\" }}}"
Puede recuperar el ID de la versión actual de la aplicación mediante las DescribeApplicationacciones o. ListApplications
Ejecución de la aplicación
Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.
Puede comprobar las métricas del servicio gestionado para Apache Flink en la CloudWatch consola para comprobar que la aplicación funciona.
Limpie los recursos AWS
Esta sección incluye procedimientos para limpiar los AWS recursos creados en el tutorial sobre ventanas corredizas.
Este tema contiene las siguientes secciones:
Elimine su aplicación Managed Service for Apache Flink
Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.
En el panel Servicio gestionado para Apache Flink, elija. MyApplication
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Elimine sus transmisiones de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel Kinesis Data Streams, ExampleInputStreamelija.
En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.
En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.
Elimine el objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el
cubo ka-app-code -. <username>
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Elimine 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.
CloudWatch Elimine sus recursos
Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registros MyApplication/aws/kinesis-analytics/.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Ejemplo: escribir en un bucket de Amazon S3
En este ejercicio, usted deberá crear un Managed Service para Apache Flink con un flujo de datos de Kinesis como origen y un bucket de Amazon S3 como receptor. Con el receptor, puede verificar la salida de la aplicación en la consola de Amazon S3.
nota
Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.
Este tema contiene las siguientes secciones:
- Crear recursos dependientes
- Escriba registros de muestra en el flujo de entrada
- Descargue y examine el código de la aplicación
- Modifique el código de la aplicación
- Compila el código de la aplicación
- Cargue el código Java de streaming de Apache Flink
- Cree y ejecute la aplicación Managed Service for Apache Flink
- Compruebe el resultado de la aplicación
- Opcional: personalice la fuente y el receptor
- Limpia AWS los recursos
Crear recursos dependientes
Antes de crear un Managed Service para Apache Flink para este ejercicio, debe crear los siguientes recursos dependientes:
-
Un flujo de datos de Kinesis (
ExampleInputStream
). -
Un bucket de Amazon S3 para almacenar el código y los resultados de la aplicación (
ka-app-code-
)<username>
nota
Managed Service para Apache Flink no puede escribir datos en Amazon S3 con el cifrado del lado del servidor activado en Managed Service para Apache Flink.
Puede crear el flujo de Kinesis y el bucket de Amazon S3 usando la consola. Si desea obtener instrucciones para crear estos recursos, consulte los siguientes temas:
-
Creación y actualización de flujos de datos en la Guía para desarrolladores de Amazon Kinesis Data Streams. Asigne el nombre
ExampleInputStream
a su flujo de datos. -
¿Cómo se puede crear un bucket de S3? en la guía de usuario de Amazon Simple Storage Service. Asigne al bucket de Amazon S3 un nombre único globalmente añadiendo su nombre de inicio de sesión, por ejemplo,
ka-app-code-
. Cree dos carpetas (<username>
code
ydata
) en el bucket de Amazon S3.
La aplicación crea los siguientes CloudWatch recursos si aún no existen:
-
Un grupo de registro llamado
/AWS/KinesisAnalytics-java/MyApplication
. -
Un flujo de registro llamado
kinesis-analytics-log-stream
.
Escriba registros de muestra en el flujo de entrada
En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.
nota
Esta sección requiere AWS SDK for Python (Boto)
-
Cree un archivo denominado
stock.py
con el siguiente contenido:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
-
Ejecute el script
stock.py
:$ python stock.py
Mantenga el script en ejecución mientras completa el resto del tutorial.
Descargue y examine el código de la aplicación
El código de la aplicación Java de este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
-
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 elStreamingFileSink
, consulte StreamingFileSink
Modifique el código de la aplicación
En esta sección, modificará el código de la aplicación para escribir el resultado en su bucket de Amazon S3.
Actualice la siguiente línea con su nombre de usuario para especificar la ubicación de salida de la aplicación:
private static final String s3SinkPath = "s3a://ka-app-code-
<username>
/data";
Compila el código de la aplicación
Para compilar la aplicación, haga lo siguiente:
-
Si aún no lo ha hecho, instale Java y Maven. Para obtener más información, consulte Complete los requisitos previos requeridos en el tutorial de Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.
-
Compile la aplicación con el siguiente comando:
mvn package -Dflink.version=1.15.3
Al compilar la aplicación, se crea el archivo JAR de la aplicación (target/aws-kinesis-analytics-java-apps-1.0.jar
).
nota
El código fuente proporcionado se basa en bibliotecas de Java 11.
Cargue el código Java de streaming de Apache Flink
En esta sección, cargará su código de aplicación en el bucket de Amazon S3 que creó en la sección Crear recursos dependientes.
-
En la consola de Amazon S3, elija el
<username>bucket ka-app-code-, vaya a la carpeta de códigos y elija Upload.
-
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
aws-kinesis-analytics-java-apps-1.0.jar
que creó en el paso anterior. -
No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.
El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.
Cree y ejecute la aplicación Managed Service for Apache Flink
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Abra la consola de Managed Service para Apache Flink 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
Edite 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-2
que 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" },
Configure la aplicación
-
En la MyApplicationpágina, 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.
-
Para el CloudWatch registro, active la casilla Activar.
-
Elija Actualizar.
nota
Si decide habilitar el CloudWatch registro, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros automáticamente. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication
-
Flujo de registro:
kinesis-analytics-log-stream
Este flujo de registro se utiliza para supervisar la aplicación. No es el mismo flujo de registro que utiliza la aplicación para enviar los resultados.
Ejecución de la aplicación
-
En la MyApplicationpágina, seleccione 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.
Compruebe el resultado de la aplicación
En la consola de Amazon S3, abra la carpeta de datos de su bucket de S3.
Transcurridos unos minutos, aparecerán los objetos que contienen datos agregados de la aplicación.
nota
La agregación se encuentra habilitada de manera predeterminada en Flink. Para deshabilitarla, utilice lo siguiente:
sink.producer.aggregation-enabled' = 'false'
Opcional: personalice la fuente y el receptor
En esta sección, personalizará la configuración de los objetos origen y receptor.
nota
Tras cambiar las secciones de código descritas en las secciones siguientes, haga lo siguiente para volver a cargar el código de la aplicación:
-
Repita los pasos de la sección Compila el código de la aplicación para compilar el código de la aplicación actualizado.
-
Repita los pasos de la sección Cargue el código Java de streaming de Apache Flink para cargar el código de la aplicación actualizado.
-
En la página de la aplicación en la consola, seleccione Configurar y, a continuación, seleccione Actualizar para volver a cargar en la aplicación el código de la aplicación actualizado.
Esta sección contiene lo siguiente:
Configure el particionamiento de datos
En esta sección, configurará los nombres de las carpetas que el receptor de archivos de streaming crea en el bucket de S3. Para ello, añada un asignador de bucket al receptor de archivos de streaming.
Para personalizar los nombres de carpetas creados en el bucket de S3, haga lo siguiente:
-
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 cubos 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
Configura la frecuencia de lectura
En esta sección, se configura la frecuencia de las lecturas en la transmisión de origen.
De forma predeterminada, el consumidor de flujos de Kinesis lee la transmisión de origen cinco veces por segundo. Esta frecuencia provocará problemas si hay más de un cliente leyendo la transmisión o si la aplicación necesita volver a intentar leer un registro. Puede evitar estos problemas configurando la frecuencia de lectura del consumidor.
Para establecer la frecuencia de lectura del consumidor de Kinesis, debe configurar el parámetro SHARD_GETRECORDS_INTERVAL_MILLIS
.
El siguiente ejemplo de código establece el parámetro SHARD_GETRECORDS_INTERVAL_MILLIS
en un segundo:
kinesisConsumerConfig.setProperty(ConsumerConfigConstants.SHARD_GETRECORDS_INTERVAL_MILLIS, "1000");
Configure el búfer de escritura
En esta sección, configurará la frecuencia de escritura y otros ajustes del receptor.
De forma predeterminada, la aplicación escribe en el bucket de destino cada minuto. Puede cambiar este intervalo y otros ajustes configurando el objeto DefaultRollingPolicy
.
nota
El receptor de archivos de streaming de Apache Flink escribe en su bucket de salida cada vez que la aplicación crea un punto de control. De forma predeterminada, la aplicación crea un punto de control cada minuto. Para aumentar el intervalo de escritura del receptor S3, también debe aumentar el intervalo del punto de control.
Para configurar el objeto DefaultRollingPolicy
, haga lo siguiente:
-
Aumente el parámetro
CheckpointInterval
de la aplicación. La siguiente entrada para la UpdateApplicationacción establece el intervalo del punto de control en 10 minutos:{ "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "CheckpointConfigurationUpdate": { "ConfigurationTypeUpdate" : "CUSTOM", "CheckpointIntervalUpdate": 600000 } } }, "ApplicationName": "MyApplication", "CurrentApplicationVersionId":
5
}Para utilizar el código anterior, especifique la versión actual de la aplicación. Puede recuperar la versión de la aplicación mediante la ListApplicationsacción.
-
Añada la siguiente instrucción de importación al principio del archivo
S3StreamingSinkJob.java
:import java.util.concurrent.TimeUnit;
-
Actualice el método
createS3SinkFromStaticConfig
en el archivoS3StreamingSinkJob.java
para que tenga el siguiente aspecto:private static StreamingFileSink<String> createS3SinkFromStaticConfig() { final StreamingFileSink<String> sink = StreamingFileSink .forRowFormat(new Path(s3SinkPath), new SimpleStringEncoder<String>("UTF-8"))
.withBucketAssigner(new DateTimeBucketAssigner("yyyy-MM-dd--HH")) .withRollingPolicy( DefaultRollingPolicy.create() .withRolloverInterval(TimeUnit.MINUTES.toMillis(8)) .withInactivityInterval(TimeUnit.MINUTES.toMillis(5)) .withMaxPartSize(1024 * 1024 * 1024) .build())
.build(); return sink; }El ejemplo de código anterior establece la frecuencia de escrituras en el bucket de Amazon S3 en 8 minutos.
Para obtener más información sobre la configuración del receptor de archivos de streaming de Apache Flink, consulte Row-encoded Formats
Limpia AWS los recursos
En esta sección se incluyen los procedimientos para limpiar AWS los recursos que creó en el tutorial de Amazon S3.
Este tema contiene las siguientes secciones:
Elimine su aplicación Managed Service for Apache Flink
Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.
-
En el panel Servicio gestionado para Apache Flink, elija. MyApplication
-
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Elimine la transmisión de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. -
En el panel Kinesis Data Streams, ExampleInputStreamelija.
-
En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.
Elimine los objetos y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. -
Elija el
cubo ka-app-code -. <username>
-
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Elimine 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.
CloudWatch Elimine sus recursos
Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/
. -
En la barra de navegación, elija Registros.
-
Elija el grupo de registros MyApplication/aws/kinesis-analytics/.
-
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Tutorial: Uso de un servicio gestionado para la aplicación Apache Flink para replicar datos de un tema de un clúster de MSK a otro de una VPC
nota
Para ver ejemplos actuales, consulte. Ejemplos para crear aplicaciones de Managed Service for Apache Flink y trabajar con ellas
El siguiente tutorial muestra cómo crear una Amazon VPC con un clúster de Amazon MSK y dos temas, y cómo crear una aplicación Managed Service para Apache Flink que lee desde un tema de Amazon MSK y escribe en otro.
nota
Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.
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 --create
para crear un tema de destino llamadoAWSKafkaTutorialTopicDestination
:bin/kafka-topics.sh --create --zookeeper
ZooKeeperConnectionString
--replication-factor 3 --partitions 1 --topic AWS KafkaTutorialTopicDestinationRegistre la lista de servidores de arranque de su clúster. Puede obtener la lista de servidores de arranque con el siguiente comando (sustitúyalo por
ClusterArn
el ARN de su clúster de MSK):aws kafka get-bootstrap-brokers --region us-west-2 --cluster-arn
ClusterArn
{... "BootstrapBrokerStringTls": "b-2.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-1.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-3.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094" }Al seguir los pasos de los tutoriales, asegúrate de usar la AWS región seleccionada en el código, los comandos y las entradas de la consola.
Cree el código de la aplicación
En esta sección, descargará y compilará el archivo JAR de la aplicación. Recomendamos utilizar Java 11.
El código de la aplicación Java para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
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
El código de la aplicación se encuentra en el archivo
amazon-kinesis-data-analytics-java-examples/KafkaConnectors/KafkaGettingStartedJob.java
. Puede examinar el código para familiarizarse con la estructura del código de la aplicación Managed Service para Apache Flink.Utilice la herramienta Maven de línea de comandos o el entorno de desarrollo que prefiera para crear el archivo JAR. Para compilar el archivo JAR utilizando la herramienta Maven de línea de comandos, introduzca lo siguiente:
mvn package -Dflink.version=1.15.3
Si la compilación es correcta, se crea el siguiente archivo:
target/KafkaGettingStartedJob-1.0.jar
nota
El código fuente proporcionado se basa en bibliotecas de Java 11. Si está utilizando un entorno de desarrollo,
Cargue el código Java de streaming de Apache Flink
En esta sección, cargará su código de aplicación en el bucket de Amazon S3 que creó en el tutorial Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.
nota
Si ha eliminado el bucket de Amazon S3 del tutorial de Introducción, vuelva a seguir el paso Cargue el JAR archivo de código de la aplicación.
-
En la consola de Amazon S3, elija el
<username>bucket ka-app-code- y elija Upload.
-
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
KafkaGettingStartedJob-1.0.jar
que 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
Abra la consola de Managed Service for Apache Flink 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
Configure la aplicación
-
En la MyApplicationpágina, 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
Cuando especificas los recursos de la aplicación mediante la consola (como CloudWatch Logs o una Amazon VPC), la consola modifica la función de ejecución de la aplicación para conceder permiso de acceso a esos recursos.
-
En Propiedades, elija Añadir grupo. Introduzca las siguientes propiedades:
ID de grupo Clave Valor KafkaSource
tema AWS KafkaTutorialTopic KafkaSource
bootstrap.servers La lista de servidores de arranque que guardó anteriormente
KafkaSource
security.protocol SSL KafkaSource
ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts KafkaSource
ssl.truststore.contraseña changeit nota
El ssl.truststore.password del certificado predeterminado es “changeit”; no necesita cambiar este valor si utiliza el certificado predeterminado.
Vuelva a seleccionar Añadir grupo. Introduzca las siguientes propiedades:
ID de grupo Clave Valor KafkaSink
tema AWS KafkaTutorialTopicDestination KafkaSink
bootstrap.servers La lista de servidores de arranque que guardó anteriormente
KafkaSink
security.protocol SSL KafkaSink
ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts KafkaSink
ssl.truststore.contraseña changeit KafkaSink
transacción.timeout.ms 1 000 El código de la aplicación lee las propiedades de la aplicación anteriores para configurar el origen y el receptor que se utilizan para interactuar con la VPC y el clúster de Amazon MSK. Para obtener más información acerca de las propiedades, consulte Utilice las propiedades de tiempo de ejecución en Managed Service for Apache Flink.
-
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.
-
Para el CloudWatch registro, seleccione la casilla Activar.
-
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
Si decide habilitar el CloudWatch registro, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros automáticamente. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication
-
Flujo de registro:
kinesis-analytics-log-stream
Este flujo de registro se utiliza para supervisar la aplicación.
Ejecución de la aplicación
Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.
Pruebe la aplicación
En esta sección, se escriben los registros en el tema de origen. La aplicación lee los registros del tema de origen y los escribe en el tema de destino. Para comprobar que la aplicación funciona, escriba los registros en el tema de origen y lea los registros del tema de destino.
Para escribir y leer registros de los temas, siga los pasos del Paso 6: producir y consumir datos del tutorial Cómo empezar a utilizar Amazon MSK.
Para leer el tema de destino, utilice el nombre del tema de destino en lugar del tema de origen en la segunda conexión al clúster:
bin/kafka-console-consumer.sh --bootstrap-server
BootstrapBrokerString
--consumer.config client.properties --topic AWS KafkaTutorialTopicDestination --from-beginning
Si no aparece ningún registro en el tema de destino, consulte la sección No se puede acceder a los recursos de un VPC del tema Solucione los problemas del servicio gestionado para Apache Flink.
Ejemplo: utilizar un consumidor de EFO con una transmisión de datos de Kinesis
nota
Para ver ejemplos actuales, consulte. Ejemplos para crear aplicaciones de Managed Service for Apache Flink y trabajar con ellas
En este ejercicio, creará una aplicación de servicio gestionado para Apache Flink que lea de una transmisión de datos de Kinesis mediante un consumidor de fan-out mejorado (EFO). Si un consumidor de Kinesis usa EFO, el servicio Kinesis Data Streams le proporciona su propio ancho de banda dedicado, en lugar de hacer que el consumidor comparta el ancho de banda fijo del flujo con los demás consumidores que leen el flujo.
Para obtener más información sobre el uso de EFO con el consumidor Kinesis, consulte FLIP-128: Enhanced Fan Out for Kinesis Consumers
La aplicación que cree en este ejemplo utiliza el conector AWS Kinesis (flink-connector-kinesis) 1.15.3.
nota
Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.
Este tema contiene las siguientes secciones:
Cree recursos dependientes
Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, debe crear los siguientes recursos dependientes:
Dos flujos de datos de Kinesis (
ExampleInputStream
yExampleOutputStream
)Un bucket de Amazon S3 para almacenar el código de la aplicación (
ka-app-code-
)<username>
Puede crear los flujos de Kinesis y el bucket de Amazon S3 usando la consola. Si desea obtener instrucciones para crear estos recursos, consulte los siguientes temas:
Creación y actualización de flujos de datos en la Guía para desarrolladores de Amazon Kinesis Data Streams. Asigne un nombre a los flujos de datos
ExampleInputStream
yExampleOutputStream
.¿Cómo se puede crear un bucket de S3? en la guía de usuario de Amazon Simple Storage Service. Asigne al bucket de Amazon S3 un nombre único globalmente añadiendo su nombre de inicio de sesión, por ejemplo,
ka-app-code-
.<username>
Escriba registros de muestra en el flujo de entrada
En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.
nota
Esta sección requiere AWS SDK for Python (Boto)
-
Cree un archivo denominado
stock.py
con el siguiente contenido:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
-
Ejecute el script
stock.py
:$ python stock.py
Mantenga el script en ejecución mientras completa el resto del tutorial.
Descargue y examine el código de la aplicación
El código de la aplicación Java de este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
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/EfoConsumer
.
El código de la aplicación se encuentra en el archivo EfoApplication.java
. Tenga en cuenta lo siguiente en relación con el código de la aplicación:
Para activar el consumidor EFO, configure los siguientes parámetros en el consumidor de Kinesis:
RECORD_PUBLISHER_TYPE: defina este parámetro en EFO para que su aplicación utilice un consumidor de EFO para acceder a los datos del flujo de datos de Kinesis.
EFO_CONSUMER_NAME: defina este parámetro en un valor de cadena que sea único entre los consumidores de este flujo. La reutilización de un nombre de consumidor en el mismo flujo de datos de Kinesis provocará la cancelación del consumidor anterior que utilizó ese nombre.
El siguiente ejemplo de código muestra cómo asignar valores a las propiedades de configuración del consumidor para utilizar un consumidor EFO para leer la transmisión de origen:
consumerConfig.putIfAbsent(RECORD_PUBLISHER_TYPE, "EFO"); consumerConfig.putIfAbsent(EFO_CONSUMER_NAME, "basic-efo-flink-app");
Compila el código de la aplicación
Para compilar la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale Java y Maven. Para obtener más información, consulte Complete los requisitos previos requeridos en el tutorial de Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.
Compile la aplicación con el siguiente comando:
mvn package -Dflink.version=1.15.3
nota
El código fuente proporcionado se basa en bibliotecas de Java 11.
Al compilar la aplicación, se crea el archivo JAR de la aplicación (target/aws-kinesis-analytics-java-apps-1.0.jar
).
Cargue el código Java de streaming de Apache Flink
En esta sección, cargará su código de aplicación en el bucket de Amazon S3 que creó en la sección Cree recursos dependientes.
-
En la consola de Amazon S3, elija el
<username>bucket ka-app-code- y elija Upload.
-
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
aws-kinesis-analytics-java-apps-1.0.jar
que creó en el paso anterior. No es necesario cambiar ninguno de los ajustes del objeto, por lo tanto, elija Cargar.
El código de la aplicación ya está almacenado en un bucket de Amazon S3 al que la aplicación puede acceder.
Cree y ejecute la aplicación Managed Service for Apache Flink
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Abra la consola de Managed Service para Apache Flink 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
Edite 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-2
que 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.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "logs:DescribeLogGroups", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:logs:us-west-2:
012345678901
:log-group:*", "arn:aws:s3:::ka-app-code-<username>
/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": "logs:DescribeLogStreams", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "AllStreams", "Effect": "Allow", "Action": [ "kinesis:ListShards", "kinesis:ListStreamConsumers", "kinesis:DescribeStreamSummary" ], "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/*" }, { "Sid": "Stream", "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:RegisterStreamConsumer", "kinesis:DeregisterStreamConsumer" ], "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" }, { "Sid": "Consumer", "Effect": "Allow", "Action": [ "kinesis:DescribeStreamConsumer", "kinesis:SubscribeToShard" ], "Resource": [ "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream/consumer/my-efo-flink-app", "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream/consumer/my-efo-flink-app:*" ] }
Configure la aplicación
-
En la MyApplicationpágina, 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 ConsumerConfigProperties
flink.stream.recordpublisher
EFO
ConsumerConfigProperties
flink.stream.efo.consumername
basic-efo-flink-app
ConsumerConfigProperties
INPUT_STREAM
ExampleInputStream
ConsumerConfigProperties
flink.inputstream.initpos
LATEST
ConsumerConfigProperties
AWS_REGION
us-west-2
-
En Propiedades, elija Crear grupo.
-
Escriba las siguientes propiedades y valores de la aplicación:
ID de grupo Clave Valor ProducerConfigProperties
OUTPUT_STREAM
ExampleOutputStream
ProducerConfigProperties
AWS_REGION
us-west-2
ProducerConfigProperties
AggregationEnabled
false
-
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
Para el CloudWatch registro, active la casilla Activar.
-
Elija Actualizar.
nota
Si decide habilitar el CloudWatch registro, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros automáticamente. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication
-
Flujo de registro:
kinesis-analytics-log-stream
Este flujo de registro se utiliza para supervisar la aplicación. No es el mismo flujo de registro que utiliza la aplicación para enviar los resultados.
Ejecución de la aplicación
Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.
Puede comprobar las métricas del servicio gestionado para Apache Flink en la CloudWatch consola para comprobar que la aplicación funciona.
También puede consultar el nombre de su consumidor basic-efo-flink-app() en la consola de Kinesis Data Streams, en la pestaña desplegable mejorada de la transmisión de datos.
Limpie los recursos AWS
Esta sección incluye procedimientos para limpiar los AWS recursos creados en el tutorial de efo Window.
Este tema contiene las siguientes secciones:
Elimine su aplicación Managed Service for Apache Flink
Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.
en el panel Servicio gestionado para Apache Flink, elija. MyApplication
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Elimine sus transmisiones de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel Kinesis Data Streams, ExampleInputStreamelija.
En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.
En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.
Eliminación del objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el
cubo ka-app-code -. <username>
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Elimine 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.
CloudWatch Elimine sus recursos
Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registros MyApplication/aws/kinesis-analytics/.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Ejemplo: escribir a Firehose
nota
Para ver ejemplos actuales, consulte. Ejemplos para crear aplicaciones de Managed Service for Apache Flink y trabajar con ellas
En este ejercicio, creará una aplicación de Managed Service for Apache Flink que tenga una transmisión de datos de Kinesis como fuente y una transmisión Firehose como sumidero. Con el receptor, puede verificar la salida de la aplicación en un bucket de Amazon S3.
nota
Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.
Esta sección contiene los siguientes pasos:
- Cree recursos dependientes
- Escribe registros de muestra en el flujo de entrada
- Descargue y examine el código Java de streaming de Apache Flink
- Compila el código de la aplicación
- Cargue el código Java de streaming de Apache Flink
- Cree y ejecute la aplicación Managed Service for Apache Flink
- Limpieza de recursos de AWS
Cree recursos dependientes
Antes de crear un Managed Service para Apache Flink para este ejercicio, debe crear los siguientes recursos dependientes:
Un flujo de datos de Kinesis (
ExampleInputStream
)Una secuencia de Firehose en la que la aplicación escribe la salida ()
ExampleDeliveryStream
.Un bucket de Amazon S3 para almacenar el código de la aplicación (
ka-app-code-
)<username>
Puede crear la transmisión de Kinesis, los buckets de Amazon S3 y la transmisión de Firehose mediante la consola. Si desea obtener instrucciones para crear estos recursos, consulte los siguientes temas:
Creación y actualización de flujos de datos en la Guía para desarrolladores de Amazon Kinesis Data Streams. Asigne el nombre
ExampleInputStream
a su flujo de datos.Creación de una transmisión de entrega de Amazon Kinesis Data Firehose en la guía para desarrolladores de Amazon Data Firehose. Ponle un nombre a tu transmisión de Firehose.
ExampleDeliveryStream
Al crear la transmisión Firehose, cree también el destino S3 y la función de IAM de la transmisión Firehose.¿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>
Escribe registros de muestra en el flujo de entrada
En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.
nota
Esta sección requiere AWS SDK for Python (Boto)
-
Cree un archivo denominado
stock.py
con el siguiente contenido:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
-
Ejecute el script
stock.py
:$ python stock.py
Mantenga el script en ejecución mientras completa el resto del tutorial.
Descargue y examine el código Java de streaming de Apache Flink
El código de la aplicación Java para este ejemplo está disponible en. GitHub Para descargar el código de la aplicación, haga lo siguiente:
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/FirehoseSink
.
El código de la aplicación se encuentra en el archivo FirehoseSinkStreamingJob.java
. Tenga en cuenta lo siguiente en relación con el código de la aplicación:
La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de Kinesis:
return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
La aplicación utiliza un sumidero Firehose para escribir datos en una transmisión Firehose. El siguiente fragmento crea el sumidero Firehose:
private static KinesisFirehoseSink<String> createFirehoseSinkFromStaticConfig() { Properties sinkProperties = new Properties(); sinkProperties.setProperty(AWS_REGION, region); return KinesisFirehoseSink.<String>builder() .setFirehoseClientProperties(sinkProperties) .setSerializationSchema(new SimpleStringSchema()) .setDeliveryStreamName(outputDeliveryStreamName) .build(); }
Compila el código de la aplicación
Para compilar la aplicación, haga lo siguiente:
Si aún no lo ha hecho, instale Java y Maven. Para obtener más información, consulte Complete los requisitos previos requeridos en el tutorial de Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.
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.3
nota
El código fuente proporcionado se basa en bibliotecas de Java 11.
Al compilar la aplicación, se crea el archivo JAR de la aplicación (target/aws-kinesis-analytics-java-apps-1.0.jar
).
Cargue el código Java de streaming de Apache Flink
En esta sección, carga el código de aplicación en el bucket de Amazon S3 que creó en la sección Cree recursos dependientes.
Cómo cargar el código de la aplicación
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. -
En la consola, selecciona el compartimento ka-app-code- <username>y
, a continuación, selecciona Cargar.
-
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
java-getting-started-1.0.jar
que 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.
Cree y ejecute la aplicación Managed Service for Apache Flink
Puede crear y ejecutar una aplicación de Managed Service para Apache Flink mediante la consola o la AWS CLI.
nota
Cuando crea la aplicación mediante la consola, sus recursos AWS Identity and Access Management (de IAM) y de Amazon CloudWatch Logs se crean automáticamente. Cuando crea la aplicación con AWS CLI, crea estos recursos por separado.
Cree y ejecute la aplicación (consola)
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Abra la consola de Managed Service para Apache Flink 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
Edite la política de IAM
Edite la política de IAM para añadir permisos de acceso a la transmisión de datos de Kinesis y a la transmisión de Firehose.
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-2
que 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.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-
username
/java-getting-started-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteDeliveryStream", "Effect": "Allow", "Action": "firehose:*", "Resource": "arn:aws:firehose:us-west-2:012345678901
:deliverystream/ExampleDeliveryStream" }
Configure la aplicación
-
En la MyApplicationpágina, 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.
-
Para el CloudWatch registro, active la casilla Activar.
-
Elija Actualizar.
nota
Si decide habilitar el CloudWatch registro, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros automáticamente. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication
-
Flujo de registro:
kinesis-analytics-log-stream
Ejecución de la aplicación
Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.
Detenga la aplicación
En la MyApplicationpágina, selecciona Detener. Confirme la acción.
Actualizar la aplicación
Mediante la consola, puede actualizar la configuración de la aplicación, tal como sus propiedades, ajustes de monitorización y la ubicación o el nombre de archivo JAR de la aplicación.
En la MyApplicationpágina, elija Configurar. Actualice la configuración de la aplicación y elija Actualizar.
nota
Para actualizar el código de la aplicación en la consola, debe cambiar el nombre del objeto del JAR, usar un bucket de S3 diferente o usar el AWS CLI como se describe en la sección Actualización del código de la aplicación. Si el nombre del archivo o el bucket no cambian, el código de la aplicación no se vuelve a cargar al seleccionar Actualizar en la página de Configuración.
Cree y ejecute la aplicación (AWS CLI)
En esta sección, se utiliza AWS CLI para crear y ejecutar la aplicación Managed Service for Apache Flink.
Creación de una política de permisos
En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción read
en el flujo de origen y otra que concede permisos para las acciones write
en el flujo de recepción. A continuación, asocie la política a un rol de IAM (que se crea en la siguiente sección). Por lo tanto, cuando Managed Service para Apache Flink asume el rol, el servicio tiene los permisos necesarios para leer desde el flujo de origen y escribir en el flujo de recepción.
Utilice el siguiente código para crear la política de permisos AKReadSourceStreamWriteSinkStream
. Reemplace el nombre de usuario
por el nombre de usuario que utilizará para crear el bucket de Amazon S3 para almacenar el código de la aplicación. Sustituya el ID de la cuenta en los nombres de recurso de Amazon (ARN) (
) por el ID de su cuenta.012345678901
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": ["arn:aws:s3:::ka-app-code-
username
", "arn:aws:s3:::ka-app-code-username
/*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteDeliveryStream", "Effect": "Allow", "Action": "firehose:*", "Resource": "arn:aws:firehose:us-west-2:012345678901
:deliverystream/ExampleDeliveryStream" } ] }
Para step-by-step obtener instrucciones sobre cómo crear una política de permisos, consulte el tutorial: Cómo crear y adjuntar su primera política gestionada por el cliente en la Guía del usuario de IAM.
nota
Para acceder a otros servicios de Amazon, puede usar AWS SDK for Java. Managed Service para Apache Flink establece automáticamente las credenciales requeridas por el SDK con las del rol de IAM de ejecución del servicio asociada a su aplicación. No hace falta realizar ningún otro paso.
Creación de un rol de IAM
En esta sección, creará un rol de IAM que la aplicación de Managed Service para Apache Flink pueda asumir para leer un flujo de origen y escribir en el flujo de recepción.
Managed Service para Apache Flink no puede acceder a su transmisión si no tiene permisos. Estos permisos se conceden a través del rol de IAM. Cada rol de IAM tiene dos políticas asociadas. La política de confianza otorga permiso a Managed Service para Apache Flink para asumir el rol. La política de permisos determina qué puede hacer Managed Service para Apache Flink después de asumir el rol.
Usted deberá asociar la política de permisos que ha creado en la sección anterior a este rol.
Cómo crear un rol de IAM
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-role
como Nombre de rol. Elija Crear rol.Ahora ha creado un nuevo rol de IAM llamado
MF-stream-rw-role
. A continuación, actualice las políticas de confianza y permisos del rol. -
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 ReadSourceStreamWriteSinkStream política AK y elija Adjuntar política.
-
Ahora ha creado el rol de ejecución de servicio que utilizará la aplicación para obtener acceso a los recursos. Anote el ARN del nuevo rol.
Para step-by-step obtener instrucciones sobre cómo crear un rol, consulte Creación de un rol de IAM (consola) en la Guía del usuario de IAM.
Cree la aplicación Managed Service para Apache Flink
-
Guarde el siguiente código JSON en un archivo denominado
create_request.json
. Cambie el ARN del rol de ejemplo por el ARN del rol que ha creado antes. Reemplace el sufijo del ARN del bucket por el sufijo que eligió en la sección Cree recursos dependientes (ka-app-code-
). 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
CreateApplication
con la solicitud anterior para crear la aplicación:aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
Se ha creado la aplicación. Puede iniciar la aplicación en el siguiente paso.
Inicie la aplicación
En esta sección, se utiliza la acción StartApplication
para iniciar la aplicación.
Cómo iniciar la aplicación
-
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
StartApplication
con la solicitud anterior para iniciar la aplicación:aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
Ya se debe estar ejecutando la aplicación. Puedes comprobar las métricas de Managed Service for Apache Flink en la CloudWatch consola de Amazon para comprobar que la aplicación funciona.
Detenga la aplicación
En esta sección, se utiliza la acción StopApplication
para detener la aplicación.
Cómo detener la aplicación
-
Guarde el siguiente código JSON en un archivo denominado
stop_request.json
.{ "ApplicationName": "test" }
-
Ejecute la acción
StopApplication
con la siguiente solicitud para detener la aplicación:aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
La aplicación se habrá detenido.
Añada una opción de CloudWatch registro
Puedes usar el AWS CLI para añadir un flujo de CloudWatch registro de Amazon a tu aplicación. Para obtener información sobre el uso CloudWatch de Logs con su aplicación, consulteConfigurar el registro de aplicaciones en Managed Service for Apache Flink.
Actualización del código de la aplicación
Cuando necesite actualizar el código de la aplicación con una nueva versión del paquete de códigos, utilice la UpdateApplication
AWS CLI acción.
Para usarlo AWS CLI, elimine el paquete de códigos anterior de su bucket de Amazon S3, cargue la nueva versión y llame UpdateApplication
especificando el mismo nombre de objeto y bucket de Amazon S3.
En el siguiente ejemplo de solicitud de la acción UpdateApplication
, se vuelve a cargar el código de la aplicación y se reinicia la aplicación. Actualice la CurrentApplicationVersionId
a la versión actual de la aplicación. Puede comprobar la versión actual de la aplicación mediante las acciones ListApplications
o DescribeApplication
. Actualice el sufijo del nombre del bucket (<username>
) con el sufijo que haya elegido en la sección Cree recursos dependientes.
{ "ApplicationName": "test", "CurrentApplicationVersionId":
1
, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username
", "FileKeyUpdate": "java-getting-started-1.0.jar" } } } } }
Limpieza de recursos de AWS
En esta sección se incluyen los procedimientos para limpiar AWS los recursos creados en el tutorial de introducción.
Este tema contiene las siguientes secciones:
Elimine su aplicación Managed Service for Apache Flink
Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.
En el panel Servicio gestionado 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.
Elimine la transmisión de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel Kinesis Data Streams, ExampleInputStreamelija.
En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.
Elimina tu transmisión de Firehose
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel Firehose, elige. ExampleDeliveryStream
En la ExampleDeliveryStreampágina, selecciona Eliminar la transmisión de Firehose y, a continuación, confirma la eliminación.
Elimine el objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el
cubo ka-app-code -. <username>
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Si has creado un bucket de Amazon S3 para el destino de tu transmisión de Firehose, elimínalo también.
Elimine sus recursos de IAM
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 has creado una nueva política para tu transmisión de Firehose, elimínala 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 has creado un nuevo rol para tu transmisión de Firehose, elimínalo también.
Elimina tus recursos CloudWatch
Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registros MyApplication/aws/kinesis-analytics/.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Ejemplo: leer desde una transmisión de Kinesis en una cuenta diferente
nota
Para ver ejemplos actuales, consulteEjemplos para crear aplicaciones de Managed Service for Apache Flink y trabajar con ellas.
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: Comience a utilizar el servicio DataStream API gestionado para Apache Flink antes de continuar.
Necesita dos AWS cuentas para completar este tutorial: una para la transmisión de origen y otra para la transmisión de aplicación y la transmisión de destino. Utilice la AWS cuenta que utilizó en el tutorial de introducción para la aplicación y para la transmisión secundaria. Use una cuenta AWS diferente para el flujo de origen.
Configuración
Accederá a sus dos AWS cuentas mediante perfiles con nombre. Modifique sus AWS credenciales y los archivos de configuración para incluir dos perfiles que contengan la información de región y conexión de sus dos cuentas.
El siguiente archivo de credenciales de ejemplo contiene dos perfiles con nombre, ka-source-stream-account-profile
y ka-sink-stream-account-profile
. Utilice la cuenta que utilizó en el tutorial de Introducción para la cuenta del flujo del receptor.
[ka-source-stream-account-profile] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY [ka-sink-stream-account-profile] aws_access_key_id=AKIAI44QH8DHBEXAMPLE aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
El siguiente archivo de configuración de ejemplo contiene perfiles con el mismo nombre e información sobre la región y el formato de salida.
[profile ka-source-stream-account-profile] region=us-west-2 output=json [profile ka-sink-stream-account-profile] region=us-west-2 output=json
nota
En este tutorial no se utiliza el ka-sink-stream-account-profile
. Se incluye como ejemplo de cómo acceder a dos AWS cuentas diferentes mediante perfiles.
Para obtener más información sobre el uso de perfiles con nombre AWS CLI asignado, consulte Perfiles con nombre en la AWS Command Line Interfacedocumentación.
Crear transmisión de Kinesis de origen
En esta sección, creará el flujo de Kinesis en la cuenta de origen.
Ingrese el siguiente comando para crear el flujo de Kinesis que la aplicación utilizará como entrada. Tenga en cuenta que el parámetro --profile
especifica qué perfil de cuenta utilizar.
$ aws kinesis create-stream \ --stream-name SourceAccountExampleInputStream \ --shard-count 1 \ --profile ka-source-stream-account-profile
Cree y actualice las funciones y políticas de IAM
Para permitir el acceso a los objetos en todas AWS las cuentas, debe crear una función y una política de IAM en la cuenta de origen. A continuación, modifique la política de IAM en la cuenta del receptor. Para obtener más información sobre cómo crear y administrar roles y políticas de IAM, consulte los siguientes temas en la Guía del usuario de AWS Identity and Access Management :
Funciones y políticas de la cuenta Sink
Edite la política
kinesis-analytics-service-MyApplication-us-west-2
desde el tutorial de Introducción. Esta política permite asumir el rol en la cuenta de origen para leer la transmisión de origen.nota
Al usar la consola para crear la aplicación, la consola crea una política llamada
kinesis-analytics-service-
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.{ "Version": "2012-10-17", "Statement": [
{ "Sid": "AssumeRoleInSourceAccount", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::SOURCE01234567:role/KA-Source-Stream-Role" },
{ "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-username
/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:SINK012345678
:log-group:*" ] }, { "Sid": "ListCloudwatchLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:SINK012345678
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutCloudwatchLogs", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:SINK012345678
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] } ] }Abra el rol
kinesis-analytics-MyApplication-us-west-2
y anote su nombre de recurso de Amazon (ARN). Lo necesitará en la sección siguiente. El rol de ARN tiene el siguiente aspecto:arn:aws:iam::
SINK012345678
:role/service-role/kinesis-analytics-MyApplication-us-west-2
Funciones y políticas de la cuenta de origen
Cree una política en la cuenta de origen denominada
KA-Source-Stream-Policy
. Utilice el siguiente JSON para la política. Sustituya el número de cuenta de muestra por el número de cuenta de la cuenta de origen.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadInputStream", "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetRecords", "kinesis:GetShardIterator", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:us-west-2:
SOURCE123456784
:stream/SourceAccountExampleInputStream" } ] }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 AWS Servicio. 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-Policy
que 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-2
de la cuenta receptor a la relación de confianza del rolKA-Source-Stream-Role
en la cuenta de origen:Abra
KA-Source-Stream-Role
en 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
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
:role/service-role/kinesis-analytics-MyApplication-us-west-2" }, "Action": "sts:AssumeRole" } ] }SINK012345678
Actualizar el script de Python
En esta sección, actualizará el script de Python que genera datos de muestra para usar el perfil de la cuenta de origen.
Actualice el script stock.py
con los siguientes cambios resaltados.
import json import boto3 import random import datetime
import os os.environ['AWS_PROFILE'] ='ka-source-stream-account-profile' os.environ['AWS_DEFAULT_REGION'] = 'us-west-2'
kinesis = boto3.client('kinesis') def getReferrer(): data = {} now = datetime.datetime.now() str_now = now.isoformat() data['event_time'] = str_now data['ticker'] = random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']) price = random.random() * 100 data['price'] = round(price, 2) return data while True: data = json.dumps(getReferrer()) print(data) kinesis.put_record( StreamName="SourceAccountExampleInputStream
", Data=data, PartitionKey="partitionkey")
Actualice la aplicación Java
En esta sección, se actualiza el código de la aplicación Java para que asuma el rol de cuenta de origen al leer el flujo de origen.
Realice los siguientes cambios en el archivo BasicStreamingJob.java
. Sustituya el número de cuenta de origen del ejemplo (SOURCE01234567
) por su número de cuenta de origen.
package com.amazonaws.services.managed-flink; import com.amazonaws.services.managed-flink.runtime.KinesisAnalyticsRuntime; import org.apache.flink.api.common.serialization.SimpleStringSchema; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.streaming.connectors.kinesis.FlinkKinesisConsumer; import org.apache.flink.streaming.connectors.kinesis.FlinkKinesisProducer; import org.apache.flink.streaming.connectors.kinesis.config.ConsumerConfigConstants;
import org.apache.flink.streaming.connectors.kinesis.config.AWSConfigConstants;
import java.io.IOException; import java.util.Map; import java.util.Properties; /** * A basic Managed Service for Apache Flink for Java application with Kinesis data streams * as source and sink. */ public class BasicStreamingJob { private static final String region = "us-west-2"; private static final String inputStreamName ="SourceAccountExampleInputStream";
private static final String outputStreamName = ExampleOutputStream;private static final String roleArn = "arn:aws:iam::SOURCE01234567:role/KA-Source-Stream-Role"; private static final String roleSessionName = "ksassumedrolesession";
private static DataStream<String> createSourceFromStaticConfig(StreamExecutionEnvironment env) { Properties inputProperties = new Properties();inputProperties.setProperty(AWSConfigConstants.AWS_CREDENTIALS_PROVIDER, "ASSUME_ROLE"); inputProperties.setProperty(AWSConfigConstants.AWS_ROLE_ARN, roleArn); inputProperties.setProperty(AWSConfigConstants.AWS_ROLE_SESSION_NAME, roleSessionName);
inputProperties.setProperty(ConsumerConfigConstants.AWS_REGION, region); inputProperties.setProperty(ConsumerConfigConstants.STREAM_INITIAL_POSITION, "LATEST"); return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties)); } private static KinesisStreamsSink<String> createSinkFromStaticConfig() { Properties outputProperties = new Properties(); outputProperties.setProperty(AWSConfigConstants.AWS_REGION, region); return KinesisStreamsSink.<String>builder() .setKinesisClientProperties(outputProperties) .setSerializationSchema(new SimpleStringSchema()) .setStreamName(outputProperties.getProperty("OUTPUT_STREAM", "ExampleOutputStream")) .setPartitionKeyGenerator(element -> String.valueOf(element.hashCode())) .build(); } public static void main(String[] args) throws Exception { // set up the streaming execution environment final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); DataStream<String> input = createSourceFromStaticConfig(env); input.addSink(createSinkFromStaticConfig()); env.execute("Flink Streaming Java API Skeleton"); } }
Cree, cargue y ejecute la aplicación
Puede hacer lo siguiente para actualizar y ejecutar la aplicación:
Compile la aplicación nuevamente ejecutando el siguiente comando en el directorio con el archivo
pom.xml
.mvn package -Dflink.version=1.15.3
Elimine el archivo JAR anterior del bucket de Amazon Simple Storage Service (Amazon S3) y, a continuación, cargue el archivo
aws-kinesis-analytics-java-apps-1.0.jar
nuevo en el bucket de S3.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.py
para enviar los datos a la transmisión de origen.python stock.py
La aplicación ahora lee los datos de la transmisión de Kinesis en la otra cuenta.
Puede comprobar que la aplicación funciona verificando la métrica PutRecords.Bytes
del flujo ExampleOutputStream
. Si hay actividad en la transmisión de salida, la aplicación funciona correctamente.
Tutorial: Uso de una tienda de confianza personalizada con Amazon MSK
nota
Para ver ejemplos actuales, consulte. Ejemplos para crear aplicaciones de Managed Service for Apache Flink y trabajar con ellas
API de origen de datos actual
Si utiliza las API de fuentes de datos actuales, su aplicación puede aprovechar la utilidad Amazon MSK Config Providers que se describe aquí
... // define names of config providers: builder.setProperty("config.providers", "secretsmanager,s3import"); // provide implementation classes for each provider: builder.setProperty("config.providers.secretsmanager.class", "com.amazonaws.kafka.config.providers.SecretsManagerConfigProvider"); builder.setProperty("config.providers.s3import.class", "com.amazonaws.kafka.config.providers.S3ImportConfigProvider"); String region = appProperties.get(Helpers.S3_BUCKET_REGION_KEY).toString(); String keystoreS3Bucket = appProperties.get(Helpers.KEYSTORE_S3_BUCKET_KEY).toString(); String keystoreS3Path = appProperties.get(Helpers.KEYSTORE_S3_PATH_KEY).toString(); String truststoreS3Bucket = appProperties.get(Helpers.TRUSTSTORE_S3_BUCKET_KEY).toString(); String truststoreS3Path = appProperties.get(Helpers.TRUSTSTORE_S3_PATH_KEY).toString(); String keystorePassSecret = appProperties.get(Helpers.KEYSTORE_PASS_SECRET_KEY).toString(); String keystorePassSecretField = appProperties.get(Helpers.KEYSTORE_PASS_SECRET_FIELD_KEY).toString(); // region, etc.. builder.setProperty("config.providers.s3import.param.region", region); // properties builder.setProperty("ssl.truststore.location", "${s3import:" + region + ":" + truststoreS3Bucket + "/" + truststoreS3Path + "}"); builder.setProperty("ssl.keystore.type", "PKCS12"); builder.setProperty("ssl.keystore.location", "${s3import:" + region + ":" + keystoreS3Bucket + "/" + keystoreS3Path + "}"); builder.setProperty("ssl.keystore.password", "${secretsmanager:" + keystorePassSecret + ":" + keystorePassSecretField + "}"); builder.setProperty("ssl.key.password", "${secretsmanager:" + keystorePassSecret + ":" + keystorePassSecretField + "}"); ...
Puede encontrar más detalles y un tutorial aquí
API heredadas SourceFunction
Si utiliza las SourceFunction API heredadas, su aplicación utilizará esquemas de serialización y deserialización personalizados que anularán el open
método para cargar el almacén de confianza personalizado. Esto hace que el almacén de confianza esté disponible para la aplicación después de que la aplicación se reinicie o sustituya los subprocesos.
El almacén de confianza personalizado se recupera y almacena mediante el siguiente código:
public static void initializeKafkaTruststore() { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); URL inputUrl = classLoader.getResource("kafka.client.truststore.jks"); File dest = new File("/tmp/kafka.client.truststore.jks"); try { FileUtils.copyURLToFile(inputUrl, dest); } catch (Exception ex) { throw new FlinkRuntimeException("Failed to initialize Kakfa truststore", ex); } }
nota
Apache Flink requiere que el almacén de confianza esté en formato JKS.
nota
Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.
El siguiente tutorial muestra cómo conectarse de forma segura (cifrado en tránsito) a un clúster de Kafka que utiliza certificados de servidor emitidos por una autoridad de certificación (Certificate Authority, CA) personalizada, privada o incluso autohospedada.
Para conectar cualquier cliente de Kafka de forma segura mediante TLS a un clúster de Kafka, el cliente de Kafka (como la aplicación Flink de ejemplo) debe confiar en toda la cadena de confianza que representan los certificados de servidor del clúster de Kafka (desde la CA emisora hasta la CA raíz). Como ejemplo de un almacén de confianza personalizado, utilizaremos un clúster de Amazon MSK con la autenticación TLS mutua (MTLS) habilitada. Esto implica que los nodos del clúster de MSK utilizan certificados de servidor emitidos por una Autoridad de AWS Certificación Privada de Certificate Manager (ACM Private CA) que es privada para su cuenta y región y, por lo tanto, el almacén de confianza predeterminado de la máquina virtual Java (JVM) que ejecuta la aplicación Flink no confía en él.
nota
-
Un almacén de claves se utiliza para almacenar las claves privadas y los certificados de identidad que una aplicación debe presentar tanto al servidor como al cliente para su verificación.
-
Un almacén de confianza se utiliza para almacenar los certificados de las autoridades certificadas (CA) que verifican el certificado presentado por el servidor en una conexión SSL.
También puede usar la técnica de este tutorial para las interacciones entre una aplicación de Managed Service para Apache Flink y otras fuentes de Apache Kafka, como:
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:
Cree una VPC con un clúster de Amazon MSK
Para crear una muestra de VPC y un clúster de Amazon MSK al que acceder desde la aplicación de Managed Service para Apache Flink, siga el tutorial Introducción al uso de Amazon MSK.
Cuando complete el tutorial, también haga lo siguiente:
En el Paso 3: crear un tema, repita el comando
kafka-topics.sh --create
para crear un tema de destino llamadoAWS KafkaTutorialTopicDestination
:bin/kafka-topics.sh --create --bootstrap-server
ZooKeeperConnectionString
--replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopicDestinationnota
Si el
kafka-topics.sh
comando devuelve unZooKeeperClientTimeoutException
, compruebe que el grupo de seguridad del clúster de Kafka tenga una regla de entrada que permita todo el tráfico procedente de la dirección IP privada de la instancia del cliente.Registre la lista de servidores de arranque de su clúster. Puede obtener la lista de servidores de arranque con el siguiente comando (sustitúyalo por
ClusterArn
el ARN de su clúster de MSK):aws kafka get-bootstrap-brokers --region us-west-2 --cluster-arn
ClusterArn
{... "BootstrapBrokerStringTls": "b-2.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-1.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-3.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094" }Al seguir los pasos de este tutorial y los tutoriales de requisitos previos, asegúrese de utilizar la AWS región seleccionada en el código, los comandos y las entradas de la consola.
Cree un almacén de confianza personalizado y aplíquelo a su clúster
En esta sección, debe crear una entidad de certificación (Certificate Authority, CA) personalizada, utilizarla para generar un almacén de confianza personalizado y aplicarla a su clúster de MSK.
Para crear y aplicar su almacén de confianza personalizado, siga el tutorial sobre autenticación de clientes de la Guía para desarrolladores de Amazon Managed Streaming para Apache Kafka.
Cree el código de la aplicación
En esta sección, descargará y compilará el archivo JAR de la aplicación.
El código de la aplicación Java para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
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
El código de la aplicación se encuentra en los
amazon-kinesis-data-analytics-java-examples/CustomKeystore
. Puede examinar el código para familiarizarse con la estructura del código de Managed Service para Apache Flink.Utilice la herramienta Maven de línea de comandos o el entorno de desarrollo que prefiera para crear el archivo JAR. Para compilar el archivo JAR utilizando la herramienta Maven de línea de comandos, introduzca lo siguiente:
mvn package -Dflink.version=1.15.3
Si la compilación es correcta, se crea el siguiente archivo:
target/flink-app-1.0-SNAPSHOT.jar
nota
El código fuente proporcionado se basa en bibliotecas de Java 11.
Cargue el código Java de streaming de Apache Flink
En esta sección, cargará su código de aplicación en el bucket de Amazon S3 que creó en el tutorial Tutorial: Comience a utilizar el servicio DataStream API gestionado para Apache Flink.
nota
Si ha eliminado el bucket de Amazon S3 del tutorial de Introducción, vuelva a seguir el paso Cargue el JAR archivo de código de la aplicación.
-
En la consola de Amazon S3, elija el
<username>bucket ka-app-code- y elija Upload.
-
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
flink-app-1.0-SNAPSHOT.jar
que 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
Abra la consola de Managed Service para Apache Flink 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
Configure la aplicación
-
En la MyApplicationpágina, 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 KafkaSource
tema AWS KafkaTutorialTopic KafkaSource
bootstrap.servers La lista de servidores de arranque que guardó anteriormente
KafkaSource
security.protocol SSL KafkaSource
ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts KafkaSource
ssl.truststore.contraseña changeit nota
El ssl.truststore.password del certificado predeterminado es “changeit”; no necesita cambiar este valor si utiliza el certificado predeterminado.
Vuelva a seleccionar Añadir grupo. Introduzca las siguientes propiedades:
ID de grupo Clave Valor KafkaSink
tema AWS KafkaTutorialTopicDestination KafkaSink
bootstrap.servers La lista de servidores de arranque que guardó anteriormente
KafkaSink
security.protocol SSL KafkaSink
ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts KafkaSink
ssl.truststore.contraseña changeit KafkaSink
transacción.timeout.ms 1 000 El código de la aplicación lee las propiedades de la aplicación anteriores para configurar el origen y el receptor que se utilizan para interactuar con la VPC y el clúster de Amazon MSK. Para obtener más información acerca de las propiedades, consulte Utilice las propiedades de tiempo de ejecución en Managed Service for Apache Flink.
-
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.
-
Para el CloudWatch registro, active la casilla Activar.
-
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
Si decide habilitar el CloudWatch registro, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros automáticamente. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication
-
Flujo de registro:
kinesis-analytics-log-stream
Este flujo de registro se utiliza para supervisar la aplicación.
Ejecución de la aplicación
Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.
Pruebe la aplicación
En esta sección, se escriben los registros en el tema de origen. La aplicación lee los registros del tema de origen y los escribe en el tema de destino. Para comprobar que la aplicación funciona, escriba los registros en el tema de origen y lea los registros del tema de destino.
Para escribir y leer registros de los temas, siga los pasos del Paso 6: producir y consumir datos del tutorial Cómo empezar a utilizar Amazon MSK.
Para leer el tema de destino, utilice el nombre del tema de destino en lugar del tema de origen en la segunda conexión al clúster:
bin/kafka-console-consumer.sh --bootstrap-server
BootstrapBrokerString
--consumer.config client.properties --topic AWS KafkaTutorialTopicDestination --from-beginning
Si no aparece ningún registro en el tema de destino, consulte la sección No se puede acceder a los recursos de un VPC del tema Solucione los problemas del servicio gestionado para Apache Flink.
Ejemplos de Python
En los siguientes ejemplos se muestra cómo crear aplicaciones usando Python mediante la API de Tabla de Apache Flink.
Temas
Ejemplo: Crear una ventana giratoria en Python
nota
Para ver ejemplos actuales, consulteEjemplos para crear aplicaciones de Managed Service for Apache Flink y trabajar con ellas.
En este ejercicio, creará una aplicación de Python Managed Service para Apache Flink que agrega datos mediante una ventana de salto de tamaño constante.
nota
Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Cómo empezar a usar Python en Managed Service for Apache Flink.
Este tema contiene las siguientes secciones:
Crear recursos dependientes
Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, debe crear los siguientes recursos dependientes:
Dos flujos de datos de Kinesis (
ExampleInputStream
yExampleOutputStream
)Un bucket de Amazon S3 para almacenar el código de la aplicación (
ka-app-code-
)<username>
Puede crear los flujos de Kinesis y el bucket de Amazon S3 usando la consola. Si desea obtener instrucciones para crear estos recursos, consulte los siguientes temas:
Creación y actualización de flujos de datos en la Guía para desarrolladores de Amazon Kinesis Data Streams. Asigne un nombre a sus flujos de datos
ExampleInputStream
yExampleOutputStream
.¿Cómo se puede crear un bucket de S3? en la guía de usuario de Amazon Simple Storage Service. Asigne al bucket de Amazon S3 un nombre único globalmente añadiendo su nombre de inicio de sesión, por ejemplo,
ka-app-code-
.<username>
Escriba registros de muestra en el flujo de entrada
En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.
nota
Esta sección requiere AWS SDK for Python (Boto)
nota
El script de Python en esta sección usa AWS CLI. Debe configurarlas AWS CLI para usar las credenciales de su cuenta y su región predeterminada. Para configurar la suya AWS CLI, introduzca lo siguiente:
aws configure
-
Cree un archivo denominado
stock.py
con el siguiente contenido:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
-
Ejecute el script
stock.py
:$ python stock.py
Mantenga el script en ejecución mientras completa el resto del tutorial.
Descargue y examine el código de la aplicación
El código de la aplicación Python para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
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/python/TumblingWindow
.
El código de la aplicación se encuentra en el archivo tumbling-windows.py
. Tenga en cuenta lo siguiente en relación con el código de la aplicación:
La aplicación utiliza un origen de tabla de Kinesis para leer del flujo de origen. El siguiente fragmento llama a la función
create_table
para crear el origen de la tabla de Kinesis:table_env.execute_sql( create_input_table(input_table_name, input_stream, input_region, stream_initpos) )
La función
create_table
utiliza un comando SQL para crear una tabla respaldada por el origen de streaming:def create_input_table(table_name, stream_name, region, stream_initpos): return """ CREATE TABLE {0} ( ticker VARCHAR(6), price DOUBLE, event_time TIMESTAMP(3), WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND ) PARTITIONED BY (ticker) WITH ( 'connector' = 'kinesis', 'stream' = '{1}', 'aws.region' = '{2}', 'scan.stream.initpos' = '{3}', 'format' = 'json', 'json.timestamp-format.standard' = 'ISO-8601' ) """.format(table_name, stream_name, region, stream_initpos)
La aplicación utiliza el operador
Tumble
para agregar registros dentro de una ventana de saltos de tamaño constante específica y devolver los registros agregados como un objeto de tabla:tumbling_window_table = ( input_table.window( Tumble.over("10.seconds").on("event_time").alias("ten_second_window") ) .group_by("ticker, ten_second_window") .select("ticker, price.min as price, to_string(ten_second_window.end) as event_time")
La aplicación utiliza el conector Kinesis Flink, del
flink-sql-connector-kinesis-1.15.2.jar
.
Comprima y cargue el código Python de streaming de Apache Flink
En esta sección, cargará su código de aplicación en el bucket de Amazon S3 que creó en la sección Crear recursos dependientes.
Utilice la aplicación de compresión que prefiera para comprimir los archivos
tumbling-windows.py
yflink-sql-connector-kinesis-1.15.2.jar
. Dé nombre al archivomyapp.zip
.-
En la consola de Amazon S3, elija el
<username>bucket ka-app-code- y elija Upload.
-
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
myapp.zip
que 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.
Cree y ejecute la aplicación Managed Service for Apache Flink
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Abra la consola de Managed Service para Apache Flink 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
Configure la aplicación
-
En la MyApplicationpágina, 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.0
input.stream.name
ExampleInputStream
consumer.config.0
aws.region
us-west-2
consumer.config.0
scan.stream.initpos
LATEST
Seleccione Guardar.
En Propiedades, elija Añadir grupo nuevamente.
Introduzca lo siguiente:
ID de grupo Clave Valor producer.config.0
output.stream.name
ExampleOutputStream
producer.config.0
aws.region
us-west-2
producer.config.0
shard.count
1
En Propiedades, elija Añadir grupo nuevamente. En Nombre de grupo, introduzca
kinesis.analytics.flink.run.options
. Este grupo de propiedades especiales le indica a su aplicación dónde encontrar sus recursos de código. Para obtener más información, consulte Especifique sus archivos de código.Introduzca lo siguiente:
ID de grupo Clave Valor kinesis.analytics.flink.run.options
python
tumbling-windows.py
kinesis.analytics.flink.run.options
jarfile
flink-sql-connector-kinesis-1.15.2.jar
-
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
Para el CloudWatch registro, active la casilla Activar.
-
Elija Actualizar.
nota
Si decide habilitar el CloudWatch registro, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros automáticamente. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication
-
Flujo de registro:
kinesis-analytics-log-stream
Este flujo de registro se utiliza para supervisar la aplicación. No es el mismo flujo de registro que utiliza la aplicación para enviar los resultados.
Edite la política de IAM
Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.
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-2
que 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.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "logs:DescribeLogGroups", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:logs:us-west-2:
012345678901
:log-group:*", "arn:aws:s3:::ka-app-code-<username>
/myapp.zip" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": "logs:DescribeLogStreams", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" }
Ejecución de la aplicación
Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.
Puede comprobar las métricas del servicio gestionado de Apache Flink en la CloudWatch consola para comprobar que la aplicación funciona.
Limpie los recursos AWS
Esta sección incluye procedimientos para limpiar los AWS recursos creados en el tutorial Tumbling Window.
Este tema contiene las siguientes secciones:
Elimine su aplicación Managed Service for Apache Flink
Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.
en el panel Servicio gestionado para Apache Flink, elija. MyApplication
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Elimine sus transmisiones de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel Kinesis Data Streams, ExampleInputStreamelija.
En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.
En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.
Elimine el objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el
cubo ka-app-code -. <username>
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Elimine 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.
CloudWatch Elimine sus recursos
Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registros MyApplication/aws/kinesis-analytics/.
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, consulteEjemplos para crear aplicaciones de Managed Service for Apache Flink y trabajar con ellas.
nota
Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Cómo empezar a usar Python en Managed Service for Apache Flink.
Este tema contiene las siguientes secciones:
Crear recursos dependientes
Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, debe crear los siguientes recursos dependientes:
Dos flujos de datos de Kinesis (
ExampleInputStream
yExampleOutputStream
)Un bucket de Amazon S3 para almacenar el código de la aplicación (
ka-app-code-
)<username>
Puede crear los flujos de Kinesis y el bucket de Amazon S3 usando la consola. Si desea obtener instrucciones para crear estos recursos, consulte los siguientes temas:
Creación y actualización de flujos de datos en la Guía para desarrolladores de Amazon Kinesis Data Streams. Asigne un nombre a sus flujos de datos
ExampleInputStream
yExampleOutputStream
.¿Cómo se puede crear un bucket de S3? en la guía de usuario de Amazon Simple Storage Service. Asigne al bucket de Amazon S3 un nombre único globalmente añadiendo su nombre de inicio de sesión, por ejemplo,
ka-app-code-
.<username>
Escriba registros de muestra en el flujo de entrada
En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.
nota
Esta sección requiere AWS SDK for Python (Boto)
nota
El script de Python en esta sección usa AWS CLI. Debe configurarlas AWS CLI para usar las credenciales de su cuenta y su región predeterminada. Para configurar la suya AWS CLI, introduzca lo siguiente:
aws configure
-
Cree un archivo denominado
stock.py
con el siguiente contenido:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
-
Ejecute el script
stock.py
:$ python stock.py
Mantenga el script en ejecución mientras completa el resto del tutorial.
Descargue y examine el código de la aplicación
El código de la aplicación Python para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
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-examples
Vaya al directorio
amazon-kinesis-data-analytics-java-examples/python/SlidingWindow
.
El código de la aplicación se encuentra en el archivo sliding-windows.py
. Tenga en cuenta lo siguiente en relación con el código de la aplicación:
La aplicación utiliza un origen de tabla de Kinesis para leer del flujo de origen. El siguiente fragmento llama a la función
create_input_table
para crear el origen de la tabla de Kinesis:table_env.execute_sql( create_input_table(input_table_name, input_stream, input_region, stream_initpos) )
La función
create_input_table
utiliza un comando SQL para crear una tabla respaldada por el origen de streaming:def create_input_table(table_name, stream_name, region, stream_initpos): return """ CREATE TABLE {0} ( ticker VARCHAR(6), price DOUBLE, event_time TIMESTAMP(3), WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND ) PARTITIONED BY (ticker) WITH ( 'connector' = 'kinesis', 'stream' = '{1}', 'aws.region' = '{2}', 'scan.stream.initpos' = '{3}', 'format' = 'json', 'json.timestamp-format.standard' = 'ISO-8601' ) """.format(table_name, stream_name, region, stream_initpos) }
La aplicación utiliza el operador
Slide
para agregar registros dentro de una ventana deslizante específica y devolver los registros agregados como un objeto de tabla:sliding_window_table = ( input_table .window( Slide.over("10.seconds") .every("5.seconds") .on("event_time") .alias("ten_second_window") ) .group_by("ticker, ten_second_window") .select("ticker, price.min as price, to_string(ten_second_window.end) as event_time") )
Comprima y cargue el código Python de streaming de Apache Flink
En esta sección, cargará su código de aplicación en el bucket de Amazon S3 que creó en la sección Crear recursos dependientes.
En esta sección, se describe cómo empaquetar la aplicación de Python.
Utilice la aplicación de compresión que prefiera para comprimir los archivos
sliding-windows.py
yflink-sql-connector-kinesis-1.15.2.jar
. Dé nombre al archivomyapp.zip
.-
En la consola de Amazon S3, elija el
<username>bucket ka-app-code- y elija Upload.
-
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
myapp.zip
que 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.
Cree y ejecute la aplicación Managed Service for Apache Flink
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Abra la consola de Managed Service para Apache Flink 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
Configure la aplicación
-
En la MyApplicationpágina, 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.0
input.stream.name
ExampleInputStream
consumer.config.0
aws.region
us-west-2
consumer.config.0
scan.stream.initpos
LATEST
Seleccione 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.0
output.stream.name
ExampleOutputStream
producer.config.0
aws.region
us-west-2
producer.config.0
shard.count
1
En Propiedades, elija Añadir grupo nuevamente. En Nombre de grupo, introduzca
kinesis.analytics.flink.run.options
. Este grupo de propiedades especiales le indica a su aplicación dónde encontrar sus recursos de código. Para obtener más información, consulte Especifique sus archivos de código.Escriba las siguientes propiedades y valores de la aplicación:
ID de grupo Clave Valor kinesis.analytics.flink.run.options
python
sliding-windows.py
kinesis.analytics.flink.run.options
jarfile
flink-sql-connector-kinesis_1.15.2.jar
-
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
Para el CloudWatch registro, active la casilla Activar.
-
Elija Actualizar.
nota
Si decide habilitar el CloudWatch registro, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros automáticamente. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication
-
Flujo de registro:
kinesis-analytics-log-stream
Este flujo de registro se utiliza para supervisar la aplicación. No es el mismo flujo de registro que utiliza la aplicación para enviar los resultados.
Edite la política de IAM
Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.
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-2
que 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.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "logs:DescribeLogGroups", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:logs:us-west-2:
012345678901
:log-group:*", "arn:aws:s3:::ka-app-code-<username>
/myapp.zip" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": "logs:DescribeLogStreams", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" }
Ejecución de la aplicación
Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.
Puede comprobar las métricas del servicio gestionado de Apache Flink en la CloudWatch consola para comprobar que la aplicación funciona.
Limpie los recursos AWS
Esta sección incluye procedimientos para limpiar los AWS recursos creados en el tutorial sobre ventanas corredizas.
Este tema contiene las siguientes secciones:
Elimine su aplicación Managed Service for Apache Flink
Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.
en el panel Servicio gestionado para Apache Flink, elija. MyApplication
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Elimine sus transmisiones de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel Kinesis Data Streams, ExampleInputStreamelija.
En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.
En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.
Elimine el objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el
cubo ka-app-code -. <username>
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Elimine 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.
CloudWatch Elimine sus recursos
Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registros MyApplication/aws/kinesis-analytics/.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Ejemplo: enviar datos de streaming a Amazon S3 en Python
nota
Para ver ejemplos actuales, consulteEjemplos para crear aplicaciones de Managed Service for Apache Flink y trabajar con ellas.
En este ejercicio, creará una aplicación de Python Managed Service para Apache Flink que transmita datos a un receptor de Amazon Simple Storage Service.
nota
Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Tutorial: Cómo empezar a usar Python en Managed Service for Apache Flink.
Este tema contiene las siguientes secciones:
Crear recursos dependientes
Antes de crear una aplicación de Managed Service para Apache Flink para este ejercicio, debe crear los siguientes recursos dependientes:
Un flujo de datos de Kinesis (
ExampleInputStream
)Un bucket de Amazon S3 para almacenar el código y los resultados de la aplicación (
ka-app-code-
)<username>
nota
Managed Service para Apache Flink no puede escribir datos en Amazon S3 con el cifrado del lado del servidor activado en Managed Service para Apache Flink.
Puede crear el flujo de Kinesis y el bucket de Amazon S3 usando la consola. Si desea obtener instrucciones para crear estos recursos, consulte los siguientes temas:
Creación y actualización de flujos de datos en la Guía para desarrolladores de Amazon Kinesis Data Streams. Asigne el nombre
ExampleInputStream
a su flujo de datos.¿Cómo se puede crear un bucket de S3? en la guía de usuario de Amazon Simple Storage Service. Asigne al bucket de Amazon S3 un nombre único globalmente añadiendo su nombre de inicio de sesión, por ejemplo,
ka-app-code-
.<username>
Escriba registros de muestra en el flujo de entrada
En esta sección, se utiliza un script de Python para escribir registros de muestra en el flujo para que la aplicación los procese.
nota
Esta sección requiere AWS SDK for Python (Boto)
nota
El script de Python en esta sección usa AWS CLI. Debe configurarlas AWS CLI para usar las credenciales de su cuenta y su región predeterminada. Para configurar la suya AWS CLI, introduzca lo siguiente:
aws configure
-
Cree un archivo denominado
stock.py
con el siguiente contenido:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
-
Ejecute el script
stock.py
:$ python stock.py
Mantenga el script en ejecución mientras completa el resto del tutorial.
Descargue y examine el código de la aplicación
El código de la aplicación Python para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
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/python/S3Sink
.
El código de la aplicación se encuentra en el archivo streaming-file-sink.py
. Tenga en cuenta lo siguiente en relación con el código de la aplicación:
La aplicación utiliza un origen de tabla de Kinesis para leer del flujo de origen. El siguiente fragmento llama a la función
create_source_table
para crear el origen de la tabla de Kinesis:table_env.execute_sql( create_source_table(input_table_name, input_stream, input_region, stream_initpos) )
La función
create_source_table
utiliza un comando SQL para crear una tabla respaldada por el origen de 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
filesystem
para enviar registros a un bucket de Amazon S3:def create_sink_table(table_name, bucket_name): return """ CREATE TABLE {0} ( ticker VARCHAR(6), price DOUBLE, event_time VARCHAR(64) ) PARTITIONED BY (ticker) WITH ( 'connector'='filesystem', 'path'='s3a://{1}/', 'format'='json', 'sink.partition-commit.policy.kind'='success-file', 'sink.partition-commit.delay' = '1 min' ) """.format(table_name, bucket_name)
Comprima y cargue el código Python de streaming de Apache Flink
En esta sección, cargará su código de aplicación en el bucket de Amazon S3 que creó en la sección Crear recursos dependientes.
Utilice la aplicación de compresión que prefiera para comprimir los archivos -1.15.2.jar
streaming-file-sink.py
y los archivos flink-sql-connector-kinesis-1.15.2.jar. Dé nombre al archivo myapp.zip
.-
En la consola de Amazon S3, elija el
<username>bucket ka-app-code- y elija Upload.
-
En el paso Seleccionar archivos, elija Añadir archivos. Vaya al archivo
myapp.zip
que 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.
Cree y ejecute la aplicación Managed Service for Apache Flink
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Abra la consola de Managed Service para Apache Flink 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
Configure la aplicación
-
En la MyApplicationpágina, 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.0
input.stream.name
ExampleInputStream
consumer.config.0
aws.region
us-west-2
consumer.config.0
scan.stream.initpos
LATEST
Seleccione 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 Especifique sus archivos de código.Escriba las siguientes propiedades y valores de la aplicación:
ID de grupo Clave Valor kinesis.analytics.flink.run.options
python
streaming-file-sink.py
kinesis.analytics.flink.run.options
jarfile
S3Sink/lib/flink-sql-connector-kinesis-1.15.2.jar
En Propiedades, elija Añadir grupo nuevamente. En Nombre de grupo, introduzca
sink.config.0
. Este grupo de propiedades especiales le indica a su aplicación dónde encontrar sus recursos de código. Para obtener más información, consulte Especifique sus archivos de código.Introduzca las siguientes propiedades y valores de la aplicación: (sustituya
bucket-name
por el nombre real de su bucket de Amazon S3).ID de grupo Clave Valor sink.config.0
output.bucket.name
bucket-name
-
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
Para el CloudWatch registro, active la casilla Activar.
-
Elija Actualizar.
nota
Si decide habilitar el CloudWatch registro, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros automáticamente. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication
-
Flujo de registro:
kinesis-analytics-log-stream
Este flujo de registro se utiliza para supervisar la aplicación. No es el mismo flujo de registro que utiliza la aplicación para enviar los resultados.
Edite la política de IAM
Edite la política de IAM para agregar permisos de acceso a los flujos de datos de Kinesis.
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-2
que 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.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "logs:DescribeLogGroups", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:logs:us-west-2:
012345678901
:log-group:*", "arn:aws:s3:::ka-app-code-<username>
/myapp.zip" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": "logs:DescribeLogStreams", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteObjects", "Effect": "Allow", "Action": [ "s3:Abort*", "s3:DeleteObject*", "s3:GetObject*", "s3:GetBucket*", "s3:List*", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::ka-app-code-<username>", "arn:aws:s3:::ka-app-code-<username>/*" ] }
Ejecución de la aplicación
Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.
Puede comprobar las métricas del servicio gestionado de Apache Flink en la CloudWatch consola para comprobar que la aplicación funciona.
Limpie los recursos AWS
Esta sección incluye procedimientos para limpiar los AWS recursos creados en el tutorial sobre ventanas corredizas.
Este tema contiene las siguientes secciones:
Elimine su aplicación Managed Service for Apache Flink
Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.
en el panel Servicio gestionado para Apache Flink, elija. MyApplication
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Elimine la transmisión de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel Kinesis Data Streams, ExampleInputStreamelija.
En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.
Elimine los objetos y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el
cubo ka-app-code -. <username>
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Elimine 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.
CloudWatch Elimine sus recursos
Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registros MyApplication/aws/kinesis-analytics/.
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: Crear una ventana abatible en Scala
nota
Para ver ejemplos actuales, consulte. Ejemplos para crear aplicaciones de Managed Service for Apache Flink y trabajar con ellas
nota
A partir de la versión 1.15, Flink es gratuito para Scala. Las aplicaciones ahora pueden usar la API de Java desde cualquier versión de Scala. Flink sigue utilizando Scala internamente en algunos componentes clave, pero no lo expone al cargador de clases del código de usuario. Por eso, los usuarios deben agregar las dependencias de Scala a sus archivos jar.
Para obtener más información sobre los cambios de Scala en Flink 1.15, consulte Scala Free in One Fifteen
En este ejercicio, creará una aplicación de streaming sencilla que utiliza Scala 3.2.0 y la API Java de Flink. DataStream La aplicación lee los datos de la transmisión de Kinesis, los agrega mediante ventanas deslizantes y escribe los resultados para generar la transmisión de Kinesis.
nota
Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Introducción (Scala).
Este tema contiene las siguientes secciones:
Descargue y examine el código de la aplicación
El código de la aplicación Python para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
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/scala/TumblingWindow
.
Tenga en cuenta lo siguiente en relación con el código de la aplicación:
Un archivo
build.sbt
contiene información sobre la configuración y las dependencias de la aplicación, incluidas las bibliotecas de Managed Service para Apache Flink.El archivo
BasicStreamingJob.scala
contiene el método principal que define la funcionalidad de la aplicación.La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de Kinesis:
private def createSource: FlinkKinesisConsumer[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val inputProperties = applicationProperties.get("ConsumerConfigProperties") new FlinkKinesisConsumer[String](inputProperties.getProperty(streamNameKey, defaultInputStreamName), new SimpleStringSchema, inputProperties) }
La aplicación también utiliza un receptor de Kinesis para escribir en el flujo de resultado. El siguiente fragmento crea el receptor de Kinesis:
private def createSink: KinesisStreamsSink[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val outputProperties = applicationProperties.get("ProducerConfigProperties") KinesisStreamsSink.builder[String] .setKinesisClientProperties(outputProperties) .setSerializationSchema(new SimpleStringSchema) .setStreamName(outputProperties.getProperty(streamNameKey, defaultOutputStreamName)) .setPartitionKeyGenerator((element: String) => String.valueOf(element.hashCode)) .build }
La aplicación utiliza el operador ventana para encontrar el recuento de valores de cada símbolo de cotización en una ventana de salto de tamaño constante de 5 segundos. El siguiente código crea el operador y envía los datos agregados a un nuevo receptor de flujo de datos de Kinesis:
environment.addSource(createSource) .map { value => val jsonNode = jsonParser.readValue(value, classOf[JsonNode]) new Tuple2[String, Int](jsonNode.get("ticker").toString, 1) } .returns(Types.TUPLE(Types.STRING, Types.INT)) .keyBy(v => v.f0) // Logically partition the stream for each ticker .window(TumblingProcessingTimeWindows.of(Time.seconds(10))) .sum(1) // Sum the number of tickers per partition .map { value => value.f0 + "," + value.f1.toString + "\n" } .sinkTo(createSink)
La aplicación crea conectores de origen y receptor para acceder a recursos externos mediante un StreamExecutionEnvironment objeto.
La aplicación crea conectores de origen y recepción mediante las propiedades dinámicas de la aplicación. Las propiedades de tiempo de ejecución de la aplicación se leen para configurar los conectores. Para obtener más información sobre las propiedades de tiempo de ejecución, consulte Runtime Properties.
Compilación y carga del código de la aplicación
En esta sección, compilará y cargará el código de su aplicación a un bucket de Amazon S3.
Compilación del código de la aplicación
Utilice la herramienta de creación SBT
Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Puede compilar y empaquetar su código con SBT:
sbt assembly
-
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.jar
que 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.
Cree y ejecute la aplicación (consola)
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Abra la consola de Managed Service para Apache Flink 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
Configure la aplicación
Utilice el siguiente procedimiento para configurar la aplicación.
Cómo configurar la aplicación
-
En la MyApplicationpágina, 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 ConsumerConfigProperties
input.stream.name
ExampleInputStream
ConsumerConfigProperties
aws.region
us-west-2
ConsumerConfigProperties
flink.stream.initpos
LATEST
Seleccione Guardar.
En Propiedades, elija Añadir grupo nuevamente.
Introduzca lo siguiente:
ID de grupo Clave Valor ProducerConfigProperties
output.stream.name
ExampleOutputStream
ProducerConfigProperties
aws.region
us-west-2
-
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
Para el CloudWatch registro, active la casilla Activar.
-
Elija Actualizar.
nota
Cuando eliges habilitar el CloudWatch registro de Amazon, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros para ti. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication
-
Flujo de registro:
kinesis-analytics-log-stream
Edite la política de IAM
Edite la política de IAM para añadir los permisos para acceder al bucket de Amazon S3.
Cómo editar la política de IAM para añadir los permisos para el bucket de S3
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-2
que 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.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-
username
/tumbling-window-scala-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" } ] }
Ejecución de la aplicación
Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.
Detenga la aplicación
Para detener la aplicación, en la MyApplicationpágina, seleccione Detener. Confirme la acción.
Creación y ejecución de la aplicación (CLI)
En esta sección, se utiliza AWS Command Line Interface para crear y ejecutar la aplicación Managed Service for Apache Flink. Utilice el AWS CLI comando kinesisanalyticsv2 para crear aplicaciones de Managed Service for Apache Flink e interactuar con ellas.
Creación de una política de permisos
nota
Debe crear una política de permisos y un rol para su aplicación. Si no crea estos recursos de IAM, la aplicación no podrá acceder a sus flujos de datos y de registro.
En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción de lectura en el flujo de origen y otra que concede permisos para las acciones de escritura en el flujo de recepción. A continuación, asocie la política a un rol de IAM (que se crea en la siguiente sección). Por lo tanto, cuando Managed Service para Apache Flink asume el rol, el servicio tiene los permisos necesarios para leer desde el flujo de origen y escribir en el flujo de recepción.
Utilice el siguiente código para crear la política de permisos AKReadSourceStreamWriteSinkStream
. Reemplace username
por el nombre de usuario que se utilizó para crear el bucket de Amazon S3 para almacenar el código de la aplicación. Reemplace el ID de la cuenta en el nombre de recurso de Amazon (ARN) (012345678901)
por el ID de su cuenta. El rol de ejecución del servicio MF-stream-rw-role
debe adaptarse al rol específico del cliente.
{ "ApplicationName": "tumbling_window", "ApplicationDescription": "Scala tumbling window application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/
MF-stream-rw-role
", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username
", "FileKey": "tumbling-window-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901
:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }
Para step-by-step obtener instrucciones sobre cómo crear una política de permisos, consulte el tutorial: Cómo crear y adjuntar su primera política gestionada por el cliente en la Guía del usuario de IAM.
Creación de un rol de IAM
En esta sección, creará un rol de IAM que la aplicación de Managed Service para Apache Flink pueda asumir para leer un flujo de origen y escribir en el flujo de recepción.
Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se conceden a través del rol de IAM. Cada rol de IAM tiene dos políticas asociadas. La política de confianza concede a Managed Service para Apache Flink permiso para asumir el rol, y la política de permisos determina lo que Managed Service para Apache Flink puede hacer después de asumir el rol.
Usted deberá asociar la política de permisos que ha creado en la sección anterior a este rol.
Cómo crear un rol de IAM
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-role
como Nombre de rol. Elija Crear rol.Ahora ha creado un nuevo rol de IAM llamado
MF-stream-rw-role
. A continuación, actualice las políticas de confianza y permisos para el 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
AKReadSourceStreamWriteSinkStream
y, a continuación, elija Asociar política.
Ahora ha creado el rol de ejecución de servicio que utiliza la aplicación para obtener acceso a los recursos. Anote el ARN del nuevo rol.
Para step-by-step obtener instrucciones sobre cómo crear un rol, consulte Creación de un rol de IAM (consola) en la Guía del usuario de IAM.
Creación de la aplicación
Guarde el siguiente código JSON en un archivo denominado create_request.json
. Cambie el ARN del rol de ejemplo por el ARN del rol que ha creado antes. Reemplace el sufijo del ARN del bucket (nombre de usuario) por el sufijo que eligió en la sección anterior. Reemplace el ID de la cuenta de muestra (012345678901) en el rol de ejecución del servicio por el ID de su cuenta. El ServiceExecutionRole
debe incluir el rol de usuario de IAM que creó en la sección anterior.
"ApplicationName": "tumbling_window", "ApplicationDescription": "Scala getting started application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-
username
", "FileKey": "tumbling-window-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901
:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }
CreateApplicationEjecútelo con la siguiente solicitud para crear la aplicación:
aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
Se ha creado la aplicación. Puede iniciar la aplicación en el siguiente paso.
Inicie la aplicación
En esta sección, se utiliza la StartApplicationacción para iniciar la aplicación.
Cómo iniciar la aplicación
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
StartApplication
con la solicitud anterior para iniciar la aplicación:aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
Ya se debe estar ejecutando la aplicación. Puedes comprobar las métricas de Managed Service for Apache Flink en la CloudWatch consola de Amazon para comprobar que la aplicación funciona.
Detenga la aplicación
En esta sección, se utiliza la StopApplicationacción para detener la aplicación.
Cómo detener la aplicación
Guarde el siguiente código JSON en un archivo denominado
stop_request.json
.{ "ApplicationName": "tumbling_window" }
Ejecute la acción
StopApplication
con la solicitud anterior para detener la aplicación:aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
La aplicación se habrá detenido.
Añada una opción de CloudWatch registro
Puedes usar el AWS CLI para añadir un flujo de CloudWatch registro de Amazon a tu aplicación. Para obtener información sobre el uso de CloudWatch registros con su aplicación, consulte Configuración del registro de aplicaciones.
Actualice las propiedades del entorno
En esta sección, se utiliza la UpdateApplicationacción para cambiar las propiedades del entorno de la aplicación sin volver a compilar el código de la aplicación. En este ejemplo, deberá cambiar la región de los flujos de origen y destino.
Cómo actualizar las propiedades de entorno de la aplicación
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
UpdateApplication
con la solicitud anterior para actualizar las propiedades del entorno:aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Actualización del código de la aplicación
Cuando necesite actualizar el código de la aplicación con una nueva versión del paquete de códigos, utilice la acción UpdateApplicationCLI.
nota
Para cargar una nueva versión del código de la aplicación con el mismo nombre de archivo, debe especificar la nueva versión del objeto. Para obtener más información sobre el uso de versiones de objetos de Amazon S3, consulte Enabling or Disabling Versioning.
Para usarlo AWS CLI, elimine el paquete de códigos anterior de su bucket de Amazon S3, cargue la nueva versión y llameUpdateApplication
, especificando el mismo nombre de bucket y objeto de Amazon S3 y la nueva versión del objeto. La aplicación se reiniciará con el nuevo paquete de código.
En el siguiente ejemplo de solicitud de la acción UpdateApplication
, se vuelve a cargar el código de la aplicación y se reinicia la aplicación. Actualice la CurrentApplicationVersionId
a la versión actual de la aplicación. Puede comprobar la versión actual de la aplicación mediante las acciones ListApplications
o DescribeApplication
. Actualice el sufijo del nombre del bucket (<username>) con el sufijo que haya elegido en la sección Cree recursos dependientes.
{ "ApplicationName": "tumbling_window", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-
username
", "FileKeyUpdate": "tumbling-window-scala-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU" } } } } }
Limpie AWS los recursos
Esta sección incluye procedimientos para limpiar los AWS recursos creados en el tutorial de Tumbling Window.
Este tema contiene las siguientes secciones:
Elimine su aplicación Managed Service for Apache Flink
Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.
en el panel Servicio gestionado para Apache Flink, elija. MyApplication
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Elimine sus transmisiones de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel Kinesis Data Streams, ExampleInputStreamelija.
En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.
En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.
Elimine el objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el
cubo ka-app-code -. <username>
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Elimine 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.
CloudWatch Elimine sus recursos
Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registros MyApplication/aws/kinesis-analytics/.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Ejemplo: crear una ventana corredera en Scala
nota
Para ver ejemplos actuales, consulteEjemplos para crear aplicaciones de Managed Service for Apache Flink y trabajar con ellas.
nota
A partir de la versión 1.15, Flink es gratuito para Scala. Las aplicaciones ahora pueden usar la API de Java desde cualquier versión de Scala. Flink sigue utilizando Scala internamente en algunos componentes clave, pero no lo expone al cargador de clases del código de usuario. Por eso, los usuarios deben agregar las dependencias de Scala a sus archivos jar.
Para obtener más información sobre los cambios de Scala en Flink 1.15, consulte Scala Free in One Fifteen
En este ejercicio, creará una aplicación de streaming sencilla que utiliza Scala 3.2.0 y la API Java de Flink. DataStream La aplicación lee los datos de la transmisión de Kinesis, los agrega mediante ventanas deslizantes y escribe los resultados para generar la transmisión de Kinesis.
nota
Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Introducción (Scala).
Este tema contiene las siguientes secciones:
Descargue y examine el código de la aplicación
El código de la aplicación Python para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
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/scala/SlidingWindow
.
Tenga en cuenta lo siguiente en relación con el código de la aplicación:
Un archivo
build.sbt
contiene información sobre la configuración y las dependencias de la aplicación, incluidas las bibliotecas de Managed Service para Apache Flink.El archivo
BasicStreamingJob.scala
contiene el método principal que define la funcionalidad de la aplicación.La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de Kinesis:
private def createSource: FlinkKinesisConsumer[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val inputProperties = applicationProperties.get("ConsumerConfigProperties") new FlinkKinesisConsumer[String](inputProperties.getProperty(streamNameKey, defaultInputStreamName), new SimpleStringSchema, inputProperties) }
La aplicación también utiliza un receptor de Kinesis para escribir en el flujo de resultado. El siguiente fragmento crea el receptor de Kinesis:
private def createSink: KinesisStreamsSink[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val outputProperties = applicationProperties.get("ProducerConfigProperties") KinesisStreamsSink.builder[String] .setKinesisClientProperties(outputProperties) .setSerializationSchema(new SimpleStringSchema) .setStreamName(outputProperties.getProperty(streamNameKey, defaultOutputStreamName)) .setPartitionKeyGenerator((element: String) => String.valueOf(element.hashCode)) .build }
La aplicación utiliza el operador ventana para encontrar el conteo de valores para cada símbolo de cotización en una ventana de 10 segundos que se desliza 5 segundos. El siguiente código crea el operador y envía los datos agregados a un nuevo receptor de flujo de datos de Kinesis:
environment.addSource(createSource) .map { value => val jsonNode = jsonParser.readValue(value, classOf[JsonNode]) new Tuple2[String, Double](jsonNode.get("ticker").toString, jsonNode.get("price").asDouble) } .returns(Types.TUPLE(Types.STRING, Types.DOUBLE)) .keyBy(v => v.f0) // Logically partition the stream for each word .window(SlidingProcessingTimeWindows.of(Time.seconds(10), Time.seconds(5))) .min(1) // Calculate minimum price per ticker over the window .map { value => value.f0 + String.format(",%.2f", value.f1) + "\n" } .sinkTo(createSink)
La aplicación crea conectores de origen y receptor para acceder a recursos externos mediante un StreamExecutionEnvironment objeto.
La aplicación crea conectores de origen y recepción mediante las propiedades dinámicas de la aplicación. Las propiedades de tiempo de ejecución de la aplicación se leen para configurar los conectores. Para obtener más información sobre las propiedades de tiempo de ejecución, consulte Runtime Properties.
Compilación y carga del código de la aplicación
En esta sección, compilará y cargará el código de su aplicación a un bucket de Amazon S3.
Compilación del código de la aplicación
Utilice la herramienta de creación SBT
Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Puede compilar y empaquetar su código con SBT:
sbt assembly
-
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.jar
que 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.
Cree y ejecute la aplicación (consola)
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Abra la consola de Managed Service para Apache Flink 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
Configure la aplicación
Utilice el siguiente procedimiento para configurar la aplicación.
Cómo configurar la aplicación
-
En la MyApplicationpágina, 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 ConsumerConfigProperties
input.stream.name
ExampleInputStream
ConsumerConfigProperties
aws.region
us-west-2
ConsumerConfigProperties
flink.stream.initpos
LATEST
Seleccione Guardar.
En Propiedades, elija Añadir grupo nuevamente.
Introduzca lo siguiente:
ID de grupo Clave Valor ProducerConfigProperties
output.stream.name
ExampleOutputStream
ProducerConfigProperties
aws.region
us-west-2
-
En Monitorización, asegúrese de que el Nivel de métricas de monitorización se ha establecido en Aplicación.
-
Para el CloudWatch registro, active la casilla Activar.
-
Elija Actualizar.
nota
Cuando eliges habilitar el CloudWatch registro de Amazon, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros para ti. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication
-
Flujo de registro:
kinesis-analytics-log-stream
Edite la política de IAM
Edite la política de IAM para añadir los permisos para acceder al bucket de Amazon S3.
Cómo editar la política de IAM para añadir los permisos para el bucket de S3
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-2
que 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.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-
username
/sliding-window-scala-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" } ] }
Ejecución de la aplicación
Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.
Detenga la aplicación
Para detener la aplicación, en la MyApplicationpágina, seleccione Detener. Confirme la acción.
Creación y ejecución de la aplicación (CLI)
En esta sección, se utiliza AWS Command Line Interface para crear y ejecutar la aplicación Managed Service for Apache Flink. Utilice el AWS CLI comando kinesisanalyticsv2 para crear aplicaciones de Managed Service for Apache Flink e interactuar con ellas.
Creación de una política de permisos
nota
Debe crear una política de permisos y un rol para su aplicación. Si no crea estos recursos de IAM, la aplicación no podrá acceder a sus flujos de datos y de registro.
En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción de lectura en el flujo de origen y otra que concede permisos para las acciones de escritura en el flujo de recepción. A continuación, asocie la política a un rol de IAM (que se crea en la siguiente sección). Por lo tanto, cuando Managed Service para Apache Flink asume el rol, el servicio tiene los permisos necesarios para leer desde el flujo de origen y escribir en el flujo de recepción.
Utilice el siguiente código para crear la política de permisos AKReadSourceStreamWriteSinkStream
. Reemplace username
por el nombre de usuario que se utilizó para crear el bucket de Amazon S3 para almacenar el código de la aplicación. Reemplace el ID de la cuenta en el nombre de recurso de Amazon (ARN) (012345678901)
por el ID de su cuenta.
{ "ApplicationName": "sliding_window", "ApplicationDescription": "Scala sliding window application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-
username
", "FileKey": "sliding-window-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901
:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }
Para step-by-step obtener instrucciones sobre cómo crear una política de permisos, consulte el tutorial: Cómo crear y adjuntar su primera política gestionada por el cliente en la Guía del usuario de IAM.
Creación de un rol de IAM
En esta sección, creará un rol de IAM que la aplicación de Managed Service para Apache Flink pueda asumir para leer un flujo de origen y escribir en el flujo de recepción.
Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se conceden a través del rol de IAM. Cada rol de IAM tiene dos políticas asociadas. La política de confianza concede a Managed Service para Apache Flink permiso para asumir el rol, y la política de permisos determina lo que Managed Service para Apache Flink puede hacer después de asumir el rol.
Usted deberá asociar la política de permisos que ha creado en la sección anterior a este rol.
Cómo crear un rol de IAM
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-role
como Nombre de rol. Elija Crear rol.Ahora ha creado un nuevo rol de IAM llamado
MF-stream-rw-role
. A continuación, actualice las políticas de confianza y permisos para el 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
AKReadSourceStreamWriteSinkStream
y, a continuación, elija Asociar política.
Ahora ha creado el rol de ejecución de servicio que utiliza la aplicación para obtener acceso a los recursos. Anote el ARN del nuevo rol.
Para step-by-step obtener instrucciones sobre cómo crear un rol, consulte Creación de un rol de IAM (consola) en la Guía del usuario de IAM.
Creación de la aplicación
Guarde el siguiente código JSON en un archivo denominado create_request.json
. Cambie el ARN del rol de ejemplo por el ARN del rol que ha creado antes. Reemplace el sufijo del ARN del bucket (nombre de usuario) por el sufijo que eligió en la sección anterior. Reemplace el ID de la cuenta de muestra (012345678901) en el rol de ejecución del servicio por el ID de su cuenta.
{ "ApplicationName": "sliding_window", "ApplicationDescription": "Scala sliding_window application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-
username
", "FileKey": "sliding-window-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901
:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }
CreateApplicationEjecútelo con la siguiente solicitud para crear la aplicación:
aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
Se ha creado la aplicación. Puede iniciar la aplicación en el siguiente paso.
Inicie la aplicación
En esta sección, se utiliza la StartApplicationacción para iniciar la aplicación.
Cómo iniciar la aplicación
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
StartApplication
con la solicitud anterior para iniciar la aplicación:aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
Ya se debe estar ejecutando la aplicación. Puedes comprobar las métricas de Managed Service for Apache Flink en la CloudWatch consola de Amazon para comprobar que la aplicación funciona.
Detenga la aplicación
En esta sección, se utiliza la StopApplicationacción para detener la aplicación.
Cómo detener la aplicación
Guarde el siguiente código JSON en un archivo denominado
stop_request.json
.{ "ApplicationName": "sliding_window" }
Ejecute la acción
StopApplication
con la solicitud anterior para detener la aplicación:aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
La aplicación se habrá detenido.
Añada una opción de CloudWatch registro
Puedes usar el AWS CLI para añadir un flujo de CloudWatch registro de Amazon a tu aplicación. Para obtener información sobre el uso de CloudWatch registros con su aplicación, consulte Configuración del registro de aplicaciones.
Actualice las propiedades del entorno
En esta sección, se utiliza la UpdateApplicationacción para cambiar las propiedades del entorno de la aplicación sin volver a compilar el código de la aplicación. En este ejemplo, deberá cambiar la región de los flujos de origen y destino.
Cómo actualizar las propiedades de entorno de la aplicación
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
UpdateApplication
con la solicitud anterior para actualizar las propiedades del entorno:aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Actualización del código de la aplicación
Cuando necesite actualizar el código de la aplicación con una nueva versión del paquete de códigos, utilice la acción UpdateApplicationCLI.
nota
Para cargar una nueva versión del código de la aplicación con el mismo nombre de archivo, debe especificar la nueva versión del objeto. Para obtener más información sobre el uso de versiones de objetos de Amazon S3, consulte Enabling or Disabling Versioning.
Para usarlo AWS CLI, elimine el paquete de códigos anterior de su bucket de Amazon S3, cargue la nueva versión y llameUpdateApplication
, especificando el mismo nombre de bucket y objeto de Amazon S3 y la nueva versión del objeto. La aplicación se reiniciará con el nuevo paquete de código.
En el siguiente ejemplo de solicitud de la acción UpdateApplication
, se vuelve a cargar el código de la aplicación y se reinicia la aplicación. Actualice la CurrentApplicationVersionId
a la versión actual de la aplicación. Puede comprobar la versión actual de la aplicación mediante las acciones ListApplications
o DescribeApplication
. Actualice el sufijo del nombre del bucket (<username>) con el sufijo que haya elegido en la sección Cree recursos dependientes.
{ "ApplicationName": "sliding_window", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-
username
", "FileKeyUpdate": "-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU" } } } } }
Limpie AWS los recursos
Esta sección incluye procedimientos para limpiar AWS los recursos creados en el tutorial sobre ventanas deslizantes.
Este tema contiene las siguientes secciones:
Elimine su aplicación Managed Service for Apache Flink
Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.
en el panel Servicio gestionado para Apache Flink, elija. MyApplication
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Elimine sus transmisiones de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel Kinesis Data Streams, ExampleInputStreamelija.
En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.
En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.
Elimine el objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el
cubo ka-app-code -. <username>
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Elimine 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.
CloudWatch Elimine sus recursos
Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registros MyApplication/aws/kinesis-analytics/.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.
Ejemplo: enviar datos de streaming a Amazon S3 en Scala
nota
Para ver ejemplos actuales, consulteEjemplos para crear aplicaciones de Managed Service for Apache Flink y trabajar con ellas.
nota
A partir de la versión 1.15, Flink es gratuito para Scala. Las aplicaciones ahora pueden usar la API de Java desde cualquier versión de Scala. Flink sigue utilizando Scala internamente en algunos componentes clave, pero no lo expone al cargador de clases del código de usuario. Por eso, los usuarios deben agregar las dependencias de Scala a sus archivos jar.
Para obtener más información sobre los cambios de Scala en Flink 1.15, consulte Scala Free in One Fifteen
En este ejercicio, creará una aplicación de streaming sencilla que utiliza Scala 3.2.0 y la API Java de Flink. DataStream La aplicación lee los datos de la transmisión de Kinesis, los agrega mediante ventanas deslizantes y escribe los resultados en S3.
nota
Para configurar los requisitos previos necesarios para este ejercicio, primero complete el ejercicio Introducción (Scala). Solo necesita crear una carpeta adicional data/
en el bucket de Amazon S3 ka-app-code-<username>.
Este tema contiene las siguientes secciones:
Descargue y examine el código de la aplicación
El código de la aplicación Python para este ejemplo está disponible en GitHub. Para descargar el código de la aplicación, haga lo siguiente:
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/scala/S3Sink
.
Tenga en cuenta lo siguiente en relación con el código de la aplicación:
Un archivo
build.sbt
contiene información sobre la configuración y las dependencias de la aplicación, incluidas las bibliotecas de Managed Service para Apache Flink.El archivo
BasicStreamingJob.scala
contiene el método principal que define la funcionalidad de la aplicación.La aplicación utiliza un origen de Kinesis para leer datos del flujo de origen. El siguiente fragmento crea el origen de Kinesis:
private def createSource: FlinkKinesisConsumer[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val inputProperties = applicationProperties.get("ConsumerConfigProperties") new FlinkKinesisConsumer[String](inputProperties.getProperty(streamNameKey, defaultInputStreamName), new SimpleStringSchema, inputProperties) }
La aplicación también utiliza un StreamingFileSink para escribir en un bucket de Amazon S3: `
def createSink: StreamingFileSink[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val s3SinkPath = applicationProperties.get("ProducerConfigProperties").getProperty("s3.sink.path") StreamingFileSink .forRowFormat(new Path(s3SinkPath), new SimpleStringEncoder[String]("UTF-8")) .build() }
La aplicación crea conectores de origen y receptor para acceder a recursos externos mediante un StreamExecutionEnvironment objeto.
La aplicación crea conectores de origen y recepción mediante las propiedades dinámicas de la aplicación. Las propiedades de tiempo de ejecución de la aplicación se leen para configurar los conectores. Para obtener más información sobre las propiedades de tiempo de ejecución, consulte Runtime Properties.
Compilación y carga del código de la aplicación
En esta sección, compilará y cargará el código de su aplicación a un bucket de Amazon S3.
Compilación del código de la aplicación
Utilice la herramienta de creación SBT
Para utilizar el código de la aplicación, compile y empaquete el código en un archivo JAR. Puede compilar y empaquetar su código con SBT:
sbt assembly
-
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.jar
que 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.
Cree y ejecute la aplicación (consola)
Siga estos pasos para crear, configurar, actualizar y ejecutar la aplicación mediante la consola.
Creación de la aplicación
Abra la consola de Managed Service para Apache Flink 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
Configure la aplicación
Utilice el siguiente procedimiento para configurar la aplicación.
Cómo configurar la aplicación
-
En la MyApplicationpágina, 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 ConsumerConfigProperties
input.stream.name
ExampleInputStream
ConsumerConfigProperties
aws.region
us-west-2
ConsumerConfigProperties
flink.stream.initpos
LATEST
Seleccione Guardar.
-
En Propiedades, elija Añadir grupo.
-
Introduzca lo siguiente:
ID de grupo Clave Valor ProducerConfigProperties
s3.sink.path
s3a://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.
-
Para el CloudWatch registro, active la casilla Activar.
-
Elija Actualizar.
nota
Cuando eliges habilitar el CloudWatch registro de Amazon, Managed Service for Apache Flink crea un grupo de registros y un flujo de registros para ti. Los nombres de estos recursos son los siguientes:
-
Grupo de registro:
/aws/kinesis-analytics/MyApplication
-
Flujo de registro:
kinesis-analytics-log-stream
Edite la política de IAM
Edite la política de IAM para añadir los permisos para acceder al bucket de Amazon S3.
Cómo editar la política de IAM para añadir los permisos para el bucket de S3
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-2
que 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.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:Abort*", "s3:DeleteObject*", "s3:GetObject*", "s3:GetBucket*", "s3:List*", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::ka-app-code-<username>", "arn:aws:s3:::ka-app-code-<username>/*" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:
012345678901
:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" } ] }
Ejecución de la aplicación
Para ver el gráfico de trabajos de Flink, ejecute la aplicación, abra el panel de Apache Flink y elija el trabajo de Flink que desee.
Detenga la aplicación
Para detener la aplicación, en la MyApplicationpágina, seleccione Detener. Confirme la acción.
Creación y ejecución de la aplicación (CLI)
En esta sección, se utiliza AWS Command Line Interface para crear y ejecutar la aplicación Managed Service for Apache Flink. Utilice el AWS CLI comando kinesisanalyticsv2 para crear aplicaciones de Managed Service for Apache Flink e interactuar con ellas.
Creación de una política de permisos
nota
Debe crear una política de permisos y un rol para su aplicación. Si no crea estos recursos de IAM, la aplicación no podrá acceder a sus flujos de datos y de registro.
En primer lugar, debe crear una política de permisos con dos instrucciones: una que concede permisos para la acción de lectura en el flujo de origen y otra que concede permisos para las acciones de escritura en el flujo de recepción. A continuación, asocie la política a un rol de IAM (que se crea en la siguiente sección). Por lo tanto, cuando Managed Service para Apache Flink asume el rol, el servicio tiene los permisos necesarios para leer desde el flujo de origen y escribir en el flujo de recepción.
Utilice el siguiente código para crear la política de permisos AKReadSourceStreamWriteSinkStream
. Reemplace username
por el nombre de usuario que se utilizó para crear el bucket de Amazon S3 para almacenar el código de la aplicación. Reemplace el ID de la cuenta en el nombre de recurso de Amazon (ARN) (012345678901)
por el ID de su cuenta.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-
username
/getting-started-scala-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" } ] }
Para step-by-step obtener instrucciones sobre cómo crear una política de permisos, consulte el tutorial: Cómo crear y adjuntar su primera política gestionada por el cliente en la Guía del usuario de IAM.
Creación de un rol de IAM
En esta sección, creará un rol de IAM que la aplicación de Managed Service para Apache Flink pueda asumir para leer un flujo de origen y escribir en el flujo de recepción.
Managed Service para Apache Flink no puede acceder a su flujo sin permisos. Estos permisos se conceden a través del rol de IAM. Cada rol de IAM tiene dos políticas asociadas. La política de confianza concede a Managed Service para Apache Flink permiso para asumir el rol, y la política de permisos determina lo que Managed Service para Apache Flink puede hacer después de asumir el rol.
Usted deberá asociar la política de permisos que ha creado en la sección anterior a este rol.
Cómo crear un rol de IAM
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-role
como Nombre de rol. Elija Crear rol.Ahora ha creado un nuevo rol de IAM llamado
MF-stream-rw-role
. A continuación, actualice las políticas de confianza y permisos para el 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
AKReadSourceStreamWriteSinkStream
y, a continuación, elija Asociar política.
Ahora ha creado el rol de ejecución de servicio que utiliza la aplicación para obtener acceso a los recursos. Anote el ARN del nuevo rol.
Para step-by-step obtener instrucciones sobre cómo crear un rol, consulte Creación de un rol de IAM (consola) en la Guía del usuario de IAM.
Creación de la aplicación
Guarde el siguiente código JSON en un archivo denominado create_request.json
. Cambie el ARN del rol de ejemplo por el ARN del rol que ha creado antes. Reemplace el sufijo del ARN del bucket (nombre de usuario) por el sufijo que eligió en la sección anterior. Reemplace el ID de la cuenta de muestra (012345678901) en el rol de ejecución del servicio por el ID de su cuenta.
{ "ApplicationName": "s3_sink", "ApplicationDescription": "Scala tumbling window application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-
username
", "FileKey": "s3-sink-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "s3.sink.path" : "s3a://ka-app-code-<username>/data" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901
:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }
CreateApplicationEjecútelo con la siguiente solicitud para crear la aplicación:
aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
Se ha creado la aplicación. Puede iniciar la aplicación en el siguiente paso.
Inicie la aplicación
En esta sección, se utiliza la StartApplicationacción para iniciar la aplicación.
Cómo iniciar la aplicación
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
StartApplication
con la solicitud anterior para iniciar la aplicación:aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
Ya se debe estar ejecutando la aplicación. Puedes comprobar las métricas de Managed Service for Apache Flink en la CloudWatch consola de Amazon para comprobar que la aplicación funciona.
Detenga la aplicación
En esta sección, se utiliza la StopApplicationacción para detener la aplicación.
Cómo detener la aplicación
Guarde el siguiente código JSON en un archivo denominado
stop_request.json
.{ "ApplicationName": "s3_sink" }
Ejecute la acción
StopApplication
con la solicitud anterior para detener la aplicación:aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
La aplicación se habrá detenido.
Añada una opción de CloudWatch registro
Puedes usar el AWS CLI para añadir un flujo de CloudWatch registro de Amazon a tu aplicación. Para obtener información sobre el uso de CloudWatch registros con su aplicación, consulte Configuración del registro de aplicaciones.
Actualice las propiedades del entorno
En esta sección, se utiliza la UpdateApplicationacción para cambiar las propiedades del entorno de la aplicación sin volver a compilar el código de la aplicación. En este ejemplo, deberá cambiar la región de los flujos de origen y destino.
Cómo actualizar las propiedades de entorno de la aplicación
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
UpdateApplication
con la solicitud anterior para actualizar las propiedades del entorno:aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Actualización del código de la aplicación
Cuando necesite actualizar el código de la aplicación con una nueva versión del paquete de códigos, utilice la acción UpdateApplicationCLI.
nota
Para cargar una nueva versión del código de la aplicación con el mismo nombre de archivo, debe especificar la nueva versión del objeto. Para obtener más información sobre el uso de versiones de objetos de Amazon S3, consulte Enabling or Disabling Versioning.
Para usarlo AWS CLI, elimine el paquete de códigos anterior de su bucket de Amazon S3, cargue la nueva versión y llameUpdateApplication
, especificando el mismo nombre de bucket y objeto de Amazon S3 y la nueva versión del objeto. La aplicación se reiniciará con el nuevo paquete de código.
En el siguiente ejemplo de solicitud de la acción UpdateApplication
, se vuelve a cargar el código de la aplicación y se reinicia la aplicación. Actualice la CurrentApplicationVersionId
a la versión actual de la aplicación. Puede comprobar la versión actual de la aplicación mediante las acciones ListApplications
o DescribeApplication
. Actualice el sufijo del nombre del bucket (<username>) con el sufijo que haya elegido en la sección Cree recursos dependientes.
{ "ApplicationName": "s3_sink", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-
username
", "FileKeyUpdate": "s3-sink-scala-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU" } } } } }
Limpie AWS los recursos
Esta sección incluye procedimientos para limpiar los AWS recursos creados en el tutorial Tumbling Window.
Este tema contiene las siguientes secciones:
Elimine su aplicación Managed Service for Apache Flink
Abra la consola de Managed Service para Apache Flink en https://console.aws.amazon.com/flink.
en el panel Servicio gestionado para Apache Flink, elija. MyApplication
En la página de la aplicación, seleccione Eliminar y, a continuación, confirme la eliminación.
Elimine sus transmisiones de datos de Kinesis
Abra la consola de Kinesis en https://console.aws.amazon.com/kinesis
. En el panel Kinesis Data Streams, ExampleInputStreamelija.
En la ExampleInputStreampágina, elija Eliminar Kinesis Stream y, a continuación, confirme la eliminación.
En la página de transmisiones de Kinesis, elija, elija Acciones ExampleOutputStream, elija Eliminar y, a continuación, confirme la eliminación.
Elimine el objeto y el bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. Elija el
cubo ka-app-code -. <username>
Elija Eliminar y luego ingrese el nombre del bucket para confirmar la eliminación.
Elimine 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.
CloudWatch Elimine sus recursos
Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/
. En la barra de navegación, elija Registros.
Elija el grupo de registros MyApplication/aws/kinesis-analytics/.
Elija Eliminar grupo de registro y, a continuación, confirme la eliminación.