

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.

# Comience a utilizar Amazon Managed Service para Apache Flink (DataStream API)
<a name="getting-started"></a>

En esta sección, se presentan los conceptos fundamentales del servicio gestionado para Apache Flink y la implementación de una aplicación en Java mediante 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. 

**Topics**
+ [

## Revisión de los componentes de la aplicación de Managed Service para Apache Flink
](#getting-started-components)
+ [

## Cumplimiento de los requisitos previos para realizar los ejercicios
](#setting-up-prerequisites)
+ [

# Configure una AWS cuenta y cree un usuario administrador
](setting-up.md)
+ [

# Configure el AWS Command Line Interface ()AWS CLI
](setup-awscli.md)
+ [

# Crear y ejecutar una aplicación de Managed Service para Apache Flink
](get-started-exercise.md)
+ [

# Limpie los recursos AWS
](getting-started-cleanup.md)
+ [

# Exploración de recursos adicionales
](getting-started-next-steps.md)

## Revisión de los componentes de la aplicación de Managed Service para Apache Flink
<a name="getting-started-components"></a>

**nota**  
Amazon Managed Service for Apache Flink es compatible con todos los lenguajes Apache Flink APIs y, potencialmente, con todos los lenguajes de JVM. [Para obtener más información, consulte Flink's. APIs](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/concepts/overview/#flinks-apis)  
Según la API que se elija, la estructura de la aplicación y la implementación son ligeramente diferentes. Este tutorial de introducción cubre la implementación de las aplicaciones mediante la DataStream API en Java.

Para procesar los datos, su aplicación de Managed Service para Apache Flink utiliza una aplicación Python 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 típica tiene los siguientes componentes:
+ **Propiedades de tiempo de ejecución:** puede usar las *propiedades de tiempo de ejecución* para pasar los parámetros de configuración a su aplicación y cambiarlos sin modificar ni volver a publicar el código. 
+ **Fuentes:** la aplicación consume datos de una o más *fuentes*. Una fuente utiliza un [conector](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/connectors/table/overview/) para leer datos de un sistema externo, como un flujo de datos de Kinesis o un bucket de Kafka. Para obtener más información, consulte [Agregación de orígenes de datos de streaming](how-sources.md).
+ **Operadores:** la aplicación procesa los datos mediante uno o más *operadores*. Un operador puede transformar, enriquecer o agregar datos. Para obtener más información, consulte [Operadores](how-operators.md).
+ **Receptores:** la aplicación envía los datos a fuentes externas a través de los *receptores.* Un recepción utiliza un [conector](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/connectors/table/overview/)v para enviar datos a un flujo de datos de Kinesis, un flujo de datos de Kinesis, un flujo de Kafka, Amazon S3 o una base de datos relacional. También se puede utilizar un conector especial para imprimir la salida únicamente con fines de desarrollo. Para obtener más información, consulte [Escritura de datos mediante receptores](how-sinks.md).

La aplicación requiere algunas *dependencias externas*, como los conectores Flink que utiliza la aplicación o, posiblemente, una biblioteca Java. Para ejecutarse en Amazon Managed Service para Apache Flink, la aplicación debe empaquetarse junto con las dependencias en un *fat-jar* y cargarse en un bucket de Amazon S3. Luego debe crear la aplicación de Managed Service para Apache Flink. Debe pasar la ubicación del paquete de códigos, junto con cualquier otro parámetro de configuración del tiempo de ejecución. 

En este tutorial se muestra cómo usar Apache Maven para empaquetar la aplicación y cómo ejecutarla localmente en el IDE que se elija.

## Cumplimiento de los requisitos previos para realizar los ejercicios
<a name="setting-up-prerequisites"></a>

Para completar los pasos de esta guía, debe disponer de lo siguiente:
+ [Cliente Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). Si aún no lo ha hecho, instale el cliente Git.
+ [Kit de desarrollo de Java (JDK) versión 11](https://www.oracle.com/java/technologies/downloads/#java11). Instale un Java JDK 11 y establezca la variable de entorno `JAVA_HOME` para señalar la ubicación de la instalación del JDK. Si no tiene un JDK 11, se puede usar [Amazon Coretto 11](https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/what-is-corretto-11.html) o cualquier otro JDK estándar de su elección. 
  + Para comprobar que JDK se haya instalado correctamente, ejecute el siguiente comando. El resultado será diferente si utiliza un JDK que no sea Amazon Corretto. Asegúrese de que la versión sea 11.x.

    ```
    $ java --version
    
    openjdk 11.0.23 2024-04-16 LTS
    OpenJDK Runtime Environment Corretto-11.0.23.9.1 (build 11.0.23+9-LTS)
    OpenJDK 64-Bit Server VM Corretto-11.0.23.9.1 (build 11.0.23+9-LTS, mixed mode)
    ```
+ [Apache Maven](https://maven.apache.org/). Instale Apache Maven si aún no lo ha hecho. Para obtener información sobre cómo instalarlo, consulte [Instalación de Apache Maven](https://maven.apache.org/install.html).
  + Para probar la instalación de Apache Maven, introduzca lo siguiente:

  ```
  $ mvn -version
  ```
+ IDE para desarrollo local Se recomienda utilizar un entorno de desarrollo, como [Eclipse Java Neon](https://www.eclipse.org/downloads/packages/release/neon/3) o [IntelliJ Idea](https://www.jetbrains.com/idea/) para desarrollar y compilar su aplicación.
  + 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](setting-up.md).

# Configure una AWS cuenta y cree un usuario administrador
<a name="setting-up"></a>

Antes de utilizar Managed Service para Apache Flink por primera vez, complete las siguientes tareas:

## Inscríbase en una Cuenta de AWS
<a name="sign-up-for-aws"></a>

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

**Para suscribirse a una Cuenta de AWS**

1. Abrir [https://portal.aws.amazon.com/billing/registro](https://portal.aws.amazon.com/billing/signup).

1. Siga las instrucciones que se le indiquen.

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

   Cuando te registras en un Cuenta de AWS, *Usuario raíz de la cuenta de AWS*se crea un. El usuario raíz tendrá acceso a todos los Servicios de AWS y recursos de esa cuenta. Como práctica recomendada de seguridad, asigne acceso administrativo a un usuario y utilice únicamente el usuario raíz para realizar [Tareas que requieren acceso de usuario raíz](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS te envía un correo electrónico de confirmación una vez finalizado el proceso de registro. En cualquier momento, puede ver la actividad de su cuenta actual y administrarla accediendo a [https://aws.amazon.com/](https://aws.amazon.com/)y seleccionando **Mi cuenta**.

## Creación de un usuario con acceso administrativo
<a name="create-an-admin"></a>

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

**Proteja su Usuario raíz de la cuenta de AWS**

1.  Inicie sesión [Consola de administración de AWS](https://console.aws.amazon.com/)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](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) en la *Guía del usuario de AWS Sign-In *.

1. 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)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) en la Guía del usuario de *IAM*.

**Creación de un usuario con acceso administrativo**

1. Activar IAM Identity Center.

   Consulte las instrucciones en [Activar AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) en la *Guía del usuario de AWS IAM Identity Center *.

1. 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](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) Guía del *AWS IAM Identity Center usuario*.

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

  Para obtener ayuda para iniciar sesión con un usuario del Centro de identidades de IAM, consulte [Iniciar sesión en el portal de AWS acceso](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) en la *Guía del AWS Sign-In usuario*.

**Concesión de acceso a usuarios adicionales**

1. En IAM Identity Center, cree un conjunto de permisos que siga la práctica recomendada de aplicar permisos de privilegios mínimos.

   Para conocer las instrucciones, consulte [Create a permission set](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) en la *Guía del usuario de AWS IAM Identity Center *.

1. 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](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) en la *Guía del usuario de AWS IAM Identity Center *.

## Conceder acceso programático
<a name="setting-up-access"></a>

Los usuarios necesitan acceso programático si quieren interactuar con personas AWS ajenas a. Consola de administración de AWS 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 | 
| --- | --- | --- | 
| IAM | (Recomendado) Utilice las credenciales de la consola como credenciales temporales para firmar las solicitudes programáticas dirigidas al AWS CLI AWS SDKs, o. AWS APIs |  Siga las instrucciones de la interfaz que desea utilizar: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/managed-flink/latest/java/setting-up.html)  | 
|  Identidad del personal (Usuarios administrados en el IAM Identity Center)  | Utilice credenciales temporales para firmar las solicitudes programáticas dirigidas al AWS CLI, AWS SDKs, o AWS APIs. |  Siga las instrucciones de la interfaz que desea utilizar: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/managed-flink/latest/java/setting-up.html)  | 
| IAM | Utilice credenciales temporales para firmar las solicitudes programáticas dirigidas al AWS CLI AWS SDKs, o. AWS APIs | Siga las instrucciones de [Uso de credenciales temporales con AWS recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) de la Guía del usuario de IAM. | 
| IAM | (No recomendado)Utilice credenciales de larga duración para firmar las solicitudes programáticas dirigidas al AWS CLI, AWS SDKs, o. AWS APIs |  Siga las instrucciones de la interfaz que desea utilizar: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/managed-flink/latest/java/setting-up.html)  | 

## Paso siguiente
<a name="setting-up-next-step-2"></a>

[Configure el AWS Command Line Interface ()AWS CLI](setup-awscli.md)

# Configure el AWS Command Line Interface ()AWS CLI
<a name="setup-awscli"></a>

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](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) en la *Guía del usuario de AWS Command Line Interface *. Para comprobar la versión de AWS CLI, ejecute el siguiente comando:  

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

```
aws-cli/1.16.63
```

**Para configurar el AWS CLI**

1. Descargue y configure la AWS CLI. Para obtener instrucciones, consulte los siguientes temas en la *Guía del usuario de la AWS Command Line Interface *: 
   + [Instalación de la AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)
   + [Configuración de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)

1. Añada un perfil con nombre para el usuario administrador en el AWS CLI `config` archivo. Se puede utilizar este perfil cuando ejecute los comandos de la AWS CLI . Para obtener más información sobre los perfiles con nombre, consulte [Perfiles con nombre](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html) 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](https://docs.aws.amazon.com/general/latest/gr/rande.html) en la *Referencia general de Amazon Web Services*.
**nota**  
El código y los comandos de ejemplo de este tutorial utilizan la región us-east-1 Este de EE. UU. (Norte de Virginia). 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.

1. 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
<a name="setup-awscli-next-step-3"></a>

[Crear y ejecutar una aplicación de Managed Service para Apache Flink](get-started-exercise.md)

# Crear y ejecutar una aplicación de Managed Service para Apache Flink
<a name="get-started-exercise"></a>

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

**Topics**
+ [

## Creación de recursos dependientes
](#get-started-exercise-0)
+ [

## Configuración de su entorno de desarrollo local
](#get-started-exercise-2)
+ [

## Descargar y consultar el código de Java de streaming de Apache Flink
](#get-started-exercise-5)
+ [

## Escritura de registros de muestra en el flujo de entrada
](#get-started-exercise-5-4)
+ [

## Ejecución de la aplicación a nivel local
](#get-started-exercise-5-run)
+ [

## Observación de los datos de entrada y salida en las transmisiones de Kinesis
](#get-started-exercise-input-output)
+ [

## Detención de la ejecución de la aplicación de forma local
](#get-started-exercise-stop)
+ [

## Compilación y empaquetado del código de la aplicación
](#get-started-exercise-5-5)
+ [

## Carga del archivo JAR del código de la aplicación
](#get-started-exercise-6)
+ [

## Creación y ejecución de la aplicación de Managed Service para Apache Flink
](#get-started-exercise-7)
+ [

## Siguiente paso
](#get-started-exercise-next-step-4)

## Creación de recursos dependientes
<a name="get-started-exercise-0"></a>

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 para entrada y salida.
+ Un bucket de Amazon S3 para almacenar el código de la aplicación
**nota**  
En este tutorial se supone que está implementando su aplicación en la región us-east-1 Este de EE. UU. (Norte de Virginia). Si se utiliza otra región, adapte todos los pasos en consecuencia.

### Crear dos Amazon Kinesis Data Streams
<a name="get-started-exercise-1"></a>

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 estas transmisiones mediante la consola de Amazon Kinesis o el siguiente AWS CLI comando. Para obtener instrucciones sobre la consola, consulte [Creating and Updating Data Streams](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) en la *Guía para desarrolladores de Amazon Kinesis Data Streams*. Para crear las transmisiones mediante el AWS CLI, utilice los siguientes comandos, ajustándolos a la región que utilice para su aplicación.

**Cómo crear flujos de datos (AWS CLI)**

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

   ```
   $ aws kinesis create-stream \
   --stream-name ExampleInputStream \
   --shard-count 1 \
   --region us-east-1 \
   ```

1. Para crear la segunda transmisión que la aplicación utiliza para escribir el resultado, ejecute el mismo comando y cambie el nombre de la transmisión a`ExampleOutputStream`:

   ```
   $ aws kinesis create-stream \
   --stream-name ExampleOutputStream \
   --shard-count 1 \
   --region us-east-1 \
   ```

### Creación de un bucket de Amazon S3 para el código de la aplicación
<a name="get-started-exercise-1-5"></a>

Se puede crear el bucket de Amazon S3 usando la consola. Para aprender a crear un bucket de Amazon S3, consulte [Creación de un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) en la [Guía de usuario Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/). Asigne al bucket de Amazon S3 un nombre único globalmente, por ejemplo, mediante el agregado de su nombre de inicio de sesión.

**nota**  
 Asegúrese de crear el bucket en la región que utilice para este tutorial (us-east-1).

### Otros recursos de
<a name="get-started-exercise-1-6"></a>

Al crear la aplicación, Managed Service for Apache Flink crea automáticamente los siguientes CloudWatch recursos de Amazon si aún no existen:
+ Un grupo de registro llamado `/AWS/KinesisAnalytics-java/<my-application>`
+ Un flujo de registro llamado `kinesis-analytics-log-stream`

## Configuración de su entorno de desarrollo local
<a name="get-started-exercise-2"></a>

Para el desarrollo y la depuración, se puede ejecutar la aplicación Apache Flink en su máquina directamente desde el IDE que prefiera. Todas las dependencias de Apache Flink se administran como las dependencias normales de Java con Apache Maven. 

**nota**  
En su máquina de desarrollo, debe tener instalados Java JDK 11, Maven y Git. Se recomienda utilizar un entorno de desarrollo como [Eclipse Java Neon](https://www.eclipse.org/downloads/packages/release/neon/3) o [IntelliJ IDEA](https://www.jetbrains.com/idea/). Para verificar que cumple con todos los requisitos previos, consulte. [Cumplimiento de los requisitos previos para realizar los ejercicios](getting-started.md#setting-up-prerequisites) **No** se necesita instalar un clúster de Apache Flink en su máquina. 

### Autentica tu sesión AWS
<a name="get-started-exercise-2-5"></a>

La aplicación utiliza los flujos de datos de Kinesis para publicar datos. Si se ejecuta de forma local, debe tener una sesión AWS autenticada válida con permisos para escribir en la transmisión de datos de Kinesis. Siga los pasos siguientes para autenticar su sesión:

1. Si no tiene configurado el AWS CLI perfil con un nombre específico con una credencial válida, consulte. [Configure el AWS Command Line Interface ()AWS CLI](setup-awscli.md)

1. Compruebe que AWS CLI está correctamente configurado y que sus usuarios tienen permisos para escribir en la transmisión de datos de Kinesis publicando el siguiente registro de prueba:

   ```
   $ aws kinesis put-record --stream-name ExampleOutputStream --data TEST --partition-key TEST
   ```

1. Si su IDE tiene un complemento con el que integrarse AWS, puede usarlo para pasar las credenciales a la aplicación que se ejecuta en el IDE. Para obtener más información, consulte [AWS Toolkit for IntelliJ IDEA](https://aws.amazon.com/intellij/) y [AWS Toolkit for Eclipse.](https://docs.aws.amazon.com/toolkit-for-eclipse/v1/user-guide/welcome.html)

## Descargar y consultar el código de Java de streaming de Apache Flink
<a name="get-started-exercise-5"></a>

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

1. Clone el repositorio remoto con el siguiente comando:

   ```
   git clone https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples.git
   ```

1. Vaya al directorio `amazon-managed-service-for-apache-flink-examples/tree/main/java/GettingStarted`.

### Revisión de los componentes de la aplicación
<a name="get-started-exercise-5-1"></a>

La aplicación está completamente implementada en la clase `com.amazonaws.services.msf.BasicStreamingJob`. El método `main()` define el flujo de datos para procesar los datos de flujo y ejecutarlos. 

**nota**  
Para una experiencia de desarrollador optimizada, la aplicación está diseñada para ejecutarse sin cambios de código tanto en Amazon Managed Service para Apache Flink como de forma local, para el desarrollo en su IDE.
+ Para leer la configuración del tiempo de ejecución para que funcione cuando se ejecute en Amazon Managed Service para Apache Flink y en su IDE, la aplicación detecta de manera automática si se ejecuta de forma independiente de forma local en el IDE. En ese caso, la aplicación carga la configuración del tiempo de ejecución de forma diferente:

  1. Cuando la aplicación detecte que se está ejecutando en modo independiente en tu IDE, crea el archivo `application_properties.json` incluido en la carpeta de **recursos** del proyecto. El contenido del archivo es el siguiente.

  1. Cuando la aplicación se ejecuta en Amazon Managed Service para Apache Flink, el comportamiento predeterminado carga la configuración de la aplicación desde las propiedades de tiempo de ejecución que se defina en la aplicación Amazon Managed Service para Apache Flink. Consulte [Creación y ejecución de la aplicación de Managed Service para Apache Flink](#get-started-exercise-7).

     ```
     private static Map<String, Properties> loadApplicationProperties(StreamExecutionEnvironment env) throws IOException {
         if (env instanceof LocalStreamEnvironment) {
             LOGGER.info("Loading application properties from '{}'", LOCAL_APPLICATION_PROPERTIES_RESOURCE);
             return KinesisAnalyticsRuntime.getApplicationProperties(
                     BasicStreamingJob.class.getClassLoader()
                             .getResource(LOCAL_APPLICATION_PROPERTIES_RESOURCE).getPath());
         } else {
             LOGGER.info("Loading application properties from Amazon Managed Service for Apache Flink");
             return KinesisAnalyticsRuntime.getApplicationProperties();
         }
     }
     ```
+ El método `main()` define el flujo de datos de la aplicación y lo ejecuta. 
  + Inicializa los entornos de streaming predeterminados. En este ejemplo, mostramos cómo crear tanto la `StreamExecutionEnvironment` que se utilizará con la DataSteam API como la `StreamTableEnvironment` que se utilizará con SQL y la API de tablas. Los dos objetos de entorno son dos referencias independientes al mismo entorno de ejecución, para utilizarlos de forma diferente APIs. 

    ```
    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    ```
  + Cargue los parámetros de configuración de la aplicación. Esto los cargará de manera automática desde el lugar correcto, según el lugar en el que se ejecute la aplicación:

    ```
    Map<String, Properties> applicationParameters = loadApplicationProperties(env);
    ```
  + La aplicación define una fuente mediante el conector [Kinesis Consumer](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/connectors/datastream/kinesis/#kinesis-consumer) para leer los datos del flujo de entrada. La configuración del flujo de entrada está definida en `PropertyGroupId`=`InputStream0`. El nombre y la región del flujo se encuentran en las propiedades denominadas `stream.name` y `aws.region`, respectivamente. Para simplificar, esta fuente lee los registros como una cadena. 

    ```
    private static FlinkKinesisConsumer<String> createSource(Properties inputProperties) {
        String inputStreamName = inputProperties.getProperty("stream.name");
        return new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties);
    }
    ...
    
    public static void main(String[] args) throws Exception { 
       ...
       SourceFunction<String> source = createSource(applicationParameters.get("InputStream0"));
       DataStream<String> input = env.addSource(source, "Kinesis Source");  
       ...
    }
    ```
  + A continuación, la aplicación define un receptor mediante el conector del [receptor de Kinesis Streams](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/connectors/datastream/kinesis/#kinesis-streams-sink) para enviar datos al flujo de salida. El nombre y la región del flujo de salida se definen en `PropertyGroupId` =`OutputStream0`, de forma semejante al flujo de entrada. El receptor está conectado directamente al `DataStream` interno que recibe los datos de la fuente. En una aplicación real, hay transformación entre la fuente y el receptor. 

    ```
    private static KinesisStreamsSink<String> createSink(Properties outputProperties) {
        String outputStreamName = outputProperties.getProperty("stream.name");
        return KinesisStreamsSink.<String>builder()
                .setKinesisClientProperties(outputProperties)
                .setSerializationSchema(new SimpleStringSchema())
                .setStreamName(outputStreamName)
                .setPartitionKeyGenerator(element -> String.valueOf(element.hashCode()))
                .build();
    }
    ...
    public static void main(String[] args) throws Exception { 
       ...
       Sink<String> sink = createSink(applicationParameters.get("OutputStream0"));
       input.sinkTo(sink);
       ...
    }
    ```
  + Por último, se ejecuta el flujo de datos que se acaba de definir. Esta debe ser la última instrucción del método `main()`, después de definir todos los operadores que requiere el flujo de datos:

    ```
    env.execute("Flink streaming Java API skeleton");
    ```

### Uso del archivo pom.xml
<a name="get-started-exercise-5-2"></a>

El archivo pom.xml define todas las dependencias requeridas por la aplicación y configura el complemento Maven Shade para crear el fat-jar que contiene todas las dependencias exigidas por Flink. 
+ Algunas dependencias tienen alcance `provided`. Estas dependencias están disponibles de manera automática cuando la aplicación se ejecuta en Amazon Managed Service para Apache Flink. Son necesarias para compilar la aplicación o para ejecutarla de manera local en el IDE. Para obtener más información, consulte [Ejecución de la aplicación a nivel local](#get-started-exercise-5-run). Asegúrese de utilizar la misma versión de Flink que el tiempo de ejecución que usará en Amazon Managed Service para Apache Flink.

  ```
  <dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-clients</artifactId>
      <version>${flink.version}</version>
      <scope>provided</scope>
  </dependency>
  <dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-streaming-java</artifactId>
      <version>${flink.version}</version>
      <scope>provided</scope>
  </dependency>
  ```
+ Se deben añadir dependencias adicionales de Apache Flink al pom con el ámbito predeterminado, como el [conector Kinesis](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/kinesis/) que utiliza esta aplicación. Para obtener más información, consulte [Uso de conectores de Apache Flink](how-flink-connectors.md). También se puede añadir cualquier dependencia de Java adicional que necesite su aplicación. 

  ```
  <dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-connector-kinesis</artifactId>
      <version>${aws.connector.version}</version>
  </dependency>
  ```
+ El complemento Maven Java Compiler garantiza que el código esté compilado en Java 11, la versión de JDK actualmente compatible con Apache Flink. 
+ El complemento Maven Shade empaqueta el fat-jar, y excluye algunas bibliotecas que proporciona el tiempo de ejecución. También especifica dos transformadores: `ServicesResourceTransformer` y `ManifestResourceTransformer`. Este último configura la clase que contiene el método `main` para iniciar la aplicación. Si se cambia el nombre de la clase principal, no olvide actualizar este transformador.
+ 

  ```
  <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      ...
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
              <mainClass>com.amazonaws.services.msf.BasicStreamingJob</mainClass>
          </transformer>
      ...
  </plugin>
  ```

## Escritura de registros de muestra en el flujo de entrada
<a name="get-started-exercise-5-4"></a>

En esta sección, se envían registros de muestra al flujo para que los procese la aplicación. Tiene dos opciones para generar datos de muestra: mediante un script de Python o el [generador de datos de Kinesis](https://github.com/awslabs/amazon-kinesis-data-generator).

### Generación de datos de muestra mediante un script de Python
<a name="get-started-exercise-5-4-1"></a>

Se puede utilizar un script de Python para enviar registros de muestra al flujo.

**nota**  
Para ejecutar este script de Python, debe usar Python 3.x y tener instalada la biblioteca [AWS SDK para Python (Boto)](https://aws.amazon.com/developer/language/python/).

**Para empezar a enviar datos de prueba al flujo de entrada de Kinesis:**

1. Descargue el script de `stock.py` Python del generador de [datos del GitHub repositorio del generador](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/python/data-generator) de datos.

1. Ejecute el script `stock.py`:

   ```
   $ python stock.py
   ```

Mantenga el script en ejecución mientras completa el resto del tutorial. Ahora se puede ejecutar la aplicación Apache Flink.

### Genere datos de muestra con Kinesis Data Generator
<a name="get-started-exercise-5-4-2"></a>

Como alternativa a la secuencia de comandos de Python, se puede utilizar el [Generador de datos de Kinesis](https://github.com/awslabs/amazon-kinesis-data-generator), también disponible en una [versión alojada](https://awslabs.github.io/amazon-kinesis-data-generator/web/producer.html), para enviar datos de muestra al azar al flujo. Kinesis Data Generator se ejecuta en su navegador y no se necesita instalar nada en su máquina. 

**Para configurar y ejecutar Kinesis Data Generator:**

1. Siga las instrucciones de la [documentación de Kinesis Data Generator](https://awslabs.github.io/amazon-kinesis-data-generator/web/help.html) para configurar el acceso a la herramienta. Ejecutará una CloudFormation plantilla que configurará un usuario y una contraseña. 

1. Acceda a Kinesis Data Generator a través de la URL generada por la CloudFormation plantilla. Encontrará la URL en la pestaña Resultados **una** vez que haya completado la CloudFormation plantilla. 

1. Configure el generador de datos:
   + **Región:** seleccione la región que está utilizando para este tutorial: us-east-1
   + **Flujo de flujo/entrega:** seleccione el flujo de entrada que utilizará la aplicación: `ExampleInputStream`
   + **Registros por segundo:** 100
   + **Plantilla de registro:** copie y pegue la siguiente plantilla:

     ```
     {
       "event_time" : "{{date.now("YYYY-MM-DDTkk:mm:ss.SSSSS")}},
       "ticker" : "{{random.arrayElement(
             ["AAPL", "AMZN", "MSFT", "INTC", "TBV"]
         )}}",
       "price" : {{random.number(100)}}          
     }
     ```

1. Pruebe la plantilla: elija la **plantilla de prueba** y compruebe que el registro generado es semejante al siguiente:

   ```
   { "event_time" : "2024-06-12T15:08:32.04800, "ticker" : "INTC", "price" : 7 }
   ```

1. Inicie el generador de datos: elija **Seleccionar enviar datos**.

Kinesis Data Generator ahora envía datos al `ExampleInputStream`. 

## Ejecución de la aplicación a nivel local
<a name="get-started-exercise-5-run"></a>

Se puede ejecutar y depurar la aplicación Flink de forma local en su IDE.

**nota**  
Antes de continuar, compruebe que las secuencias de entrada y salida estén disponibles. Consulte [Crear dos Amazon Kinesis Data Streams](#get-started-exercise-1). Además, compruebe que tiene permiso para leer y escribir en ambas secuencias. Consulte [Autentica tu sesión AWS](#get-started-exercise-2-5).   
La configuración del entorno de desarrollo local requiere el JDK de Java 11, Apache Maven y un IDE para el desarrollo de Java. Verifique que cumple los requisitos previos requeridos. Consulte [Cumplimiento de los requisitos previos para realizar los ejercicios](getting-started.md#setting-up-prerequisites).

### Importación del proyecto Java a su IDE
<a name="get-started-exercise-5-run-1"></a>

Para empezar a trabajar en la aplicación en su IDE, debe importarla como un proyecto Java. 

El repositorio que ha clonado contiene varios ejemplos. Cada ejemplo es un proyecto independiente. Para este tutorial, importe el contenido del subdirectorio`./java/GettingStarted` a su IDE. 

Inserte el código como un proyecto Java existente con Maven.

**nota**  
El proceso exacto para importar un nuevo proyecto de Java varía según el IDE que se utilice.

### Compruebe la configuración de la aplicación local
<a name="get-started-exercise-5-run-2"></a>

Cuando se ejecuta localmente, la aplicación utiliza la configuración del archivo `application_properties.json` de la carpeta de recursos del proyecto en `./src/main/resources`. Se puede editar este archivo para usar diferentes regiones o nombres de flujo de Kinesis.

```
[
  {
    "PropertyGroupId": "InputStream0",
    "PropertyMap": {
      "stream.name": "ExampleInputStream",
      "flink.stream.initpos": "LATEST",
      "aws.region": "us-east-1"
    }
  },
  {
    "PropertyGroupId": "OutputStream0",
    "PropertyMap": {
      "stream.name": "ExampleOutputStream",
      "aws.region": "us-east-1"
    }
  }
]
```

### Establecimiento de la configuración de ejecución del IDE
<a name="get-started-exercise-5-run-3"></a>

Se puede ejecutar y depurar la aplicación Flink desde su IDE directamente al ejecutar la clase principal `com.amazonaws.services.msf.BasicStreamingJob`, como lo haría con cualquier aplicación Java. Antes de ejecutar la aplicación, se debe configurar la configuración de ejecución. La configuración depende del IDE que se utilice. Por ejemplo, consulte [Ejecutar/depurar configuraciones](https://www.jetbrains.com/help/idea/run-debug-configuration.html) en la documentación de IntelliJ IDEA. Es especialmente importante que se configure lo siguiente:

1. **Añada las dependencias `provided` a la ruta de clases**. Esto es necesario para garantizar que las dependencias con alcance `provided` se transfieran a la aplicación cuando se ejecuta localmente. Sin esta configuración, la aplicación muestra un error `class not found` de inmediato. 

1. **Pase las AWS credenciales para acceder a las transmisiones de Kinesis a la aplicación**. La forma más rápida es utilizar el [Kit de herramientas de AWS para IntelliJ IDEA](https://aws.amazon.com/intellij/). Con este complemento IDE en la configuración de ejecución, puede seleccionar un AWS perfil específico. AWS la autenticación se realiza con este perfil. No es necesario transmitir las credenciales AWS directamente. 

1. Compruebe que el IDE ejecute la aplicación mediante el **JDK 11**.

### Ejecución la aplicación en su IDE
<a name="get-started-exercise-5-run-4"></a>

Tras establecer la configuración de ejecución para el `BasicStreamingJob`, se lo puede ejecutar o depurar como una aplicación Java normal. 

**nota**  
No se puede ejecutar el fat-jar generado por Maven directamente con `java -jar ...` desde la línea de comandos. Este contenedor no contiene las dependencias principales de Flink necesarias para ejecutar la aplicación de forma independiente.

Cuando la aplicación se inicia correctamente, registra cierta información sobre el minicluster independiente y la inicialización de los conectores. A esto le siguen varios registros INFO y WARN que Flink por lo común emite cuando se inicia la aplicación.

```
13:43:31,405 INFO  com.amazonaws.services.msf.BasicStreamingJob                 [] - Loading application properties from 'flink-application-properties-dev.json'
13:43:31,549 INFO  org.apache.flink.streaming.connectors.kinesis.FlinkKinesisConsumer [] - Flink Kinesis Consumer is going to read the following streams: ExampleInputStream, 
13:43:31,676 INFO  org.apache.flink.runtime.taskexecutor.TaskExecutorResourceUtils [] - The configuration option taskmanager.cpu.cores required for local execution is not set, setting it to the maximal possible value.
13:43:31,676 INFO  org.apache.flink.runtime.taskexecutor.TaskExecutorResourceUtils [] - The configuration option taskmanager.memory.task.heap.size required for local execution is not set, setting it to the maximal possible value.
13:43:31,676 INFO  org.apache.flink.runtime.taskexecutor.TaskExecutorResourceUtils [] - The configuration option taskmanager.memory.task.off-heap.size required for local execution is not set, setting it to the maximal possible value.
13:43:31,676 INFO  org.apache.flink.runtime.taskexecutor.TaskExecutorResourceUtils [] - The configuration option taskmanager.memory.network.min required for local execution is not set, setting it to its default value 64 mb.
13:43:31,676 INFO  org.apache.flink.runtime.taskexecutor.TaskExecutorResourceUtils [] - The configuration option taskmanager.memory.network.max required for local execution is not set, setting it to its default value 64 mb.
13:43:31,676 INFO  org.apache.flink.runtime.taskexecutor.TaskExecutorResourceUtils [] - The configuration option taskmanager.memory.managed.size required for local execution is not set, setting it to its default value 128 mb.
13:43:31,677 INFO  org.apache.flink.runtime.minicluster.MiniCluster             [] - Starting Flink Mini Cluster
....
```

Una vez completada la inicialización, la aplicación no emite más entradas de registro. **Mientras los datos fluyen, no se emite ningún registro.**

Para verificar si la aplicación procesa los datos de manera correcta, puede inspeccionar las transmisiones de Kinesis de entrada y salida, tal y como se describe en la siguiente sección.

**nota**  
 No emitir registros sobre el flujo de datos es lo normal en una aplicación de Flink. Emitir registros en cada registro puede ser conveniente para la depuración, pero puede suponer una sobrecarga considerable cuando se ejecuta en producción. 

## Observación de los datos de entrada y salida en las transmisiones de Kinesis
<a name="get-started-exercise-input-output"></a>

Se pueden observar los registros enviados al flujo de entrada por el (que genera un ejemplo de Python) o el generador de datos de Kinesis (enlace) mediante el **visor de datos** de la consola de Amazon Kinesis. 

**Observación de los registros**

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

1. Compruebe que la región es la misma en la que está ejecutando este tutorial, que es us-east-1 Este de EE. UU. (Norte de Virginia) de forma predeterminada. Cambie la región si no coincide. 

1. Elija **Flujos de datos**. 

1. Selección del flujo que desee observar, `ExampleInputStream` o `ExampleOutputStream.`

1. Seleccione la pestaña **Visor de datos**. 

1. Elija cualquier **partición**, mantenga el valor **Último** como **posición inicial** y, a continuación, seleccione **Obtener registros**. Es posible que aparezca el error “No se ha encontrado ningún registro para esta solicitud”. Si es así, seleccione **Volver a intentar obtener los registros**. Se muestran los registros más recientes publicados en el flujo. 

1. Elija el valor de la columna Datos para inspeccionar el contenido del registro en formato JSON.

## Detención de la ejecución de la aplicación de forma local
<a name="get-started-exercise-stop"></a>

Detenga la aplicación que se está ejecutando en el IDE. El IDE normalmente ofrece una opción de “parada”. La ubicación y el método exactos dependen del IDE que se utilice. 

## Compilación y empaquetado del código de la aplicación
<a name="get-started-exercise-5-5"></a>

En esta sección, se utilizará Apache Maven para compilar el código Java y empaquetarlo en un archivo JAR. Se puede compilar y empaquetar su código con la herramienta de línea de comandos de Maven o su IDE.

**Compilación y empaquetado con la línea de comandos de Maven:**

Diríjase al directorio que contiene el GettingStarted proyecto Java y ejecute el siguiente comando:

```
$ mvn package
```

**Compilación y empaquetado mediante su IDE:**

Ejecute `mvn package` desde su integración de IDE con Maven.

En ambos casos, se crea el siguiente archivo JAR: `target/amazon-msf-java-stream-app-1.0.jar`.

**nota**  
 Al ejecutar un “proyecto de compilación” desde su IDE, es posible que no se cree el archivo JAR.

## Carga del archivo JAR del código de la aplicación
<a name="get-started-exercise-6"></a>

En esta sección, cargará el archivo JAR que creó en la sección anterior en el bucket de Amazon Simple Storage Service (Amazon S3) que creó al principio de este tutorial. Si no se ha completado este paso, consulte (enlace).

**Cómo cargar el archivo JAR del código de la aplicación**

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

1. Elija el bucket que creó anteriormente para el código de la aplicación.

1. Seleccione **Cargar**.

1. Elija **Add files**.

1. Navegue hasta el archivo JAR generado en el paso anterior: `target/amazon-msf-java-stream-app-1.0.jar`. 

1. Elija **Cargar** sin cambiar ninguna otra configuración.

**aviso**  
Asegúrese de seleccionar el archivo JAR correcto en `<repo-dir>/java/GettingStarted/target/amazon-msf-java-stream-app-1.0.jar`.   
El directorio `target` también contiene otros archivos JAR que no necesita cargar.

## Creación y ejecución de la aplicación de Managed Service para Apache Flink
<a name="get-started-exercise-7"></a>

Se puede crear y ejecutar una aplicación de Managed Service para Apache Flink mediante la consola o la AWS CLI. En este tutorial, se utiliza la consola. 

**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.

**Topics**
+ [

### Creación de la aplicación
](#get-started-exercise-7-console-create)
+ [

### Modificar la política de IAM
](#get-started-exercise-7-console-iam)
+ [

### Configurar la aplicación
](#get-started-exercise-7-console-configure)
+ [

### Ejecución de la aplicación
](#get-started-exercise-7-console-run)
+ [

### Observación de las métricas de la aplicación en ejecución
](#get-started-exercise-7-console-stop)
+ [

### Observación de los datos de salida en los flujos de Kinesis
](#get-started-exercise-7-console-output)
+ [

### Detener la aplicación
](#get-started-exercise-stop)

### Creación de la aplicación
<a name="get-started-exercise-7-console-create"></a>

**Para crear la aplicación**

1. Inicie sesión en y abra la Consola de administración de AWS consola de Amazon MSF en https://console.aws.amazon.com /flink.

1. Compruebe que ha seleccionado la región correcta: us-east-1 Este de EE. UU. (Norte de Virginia)

1. Abra el menú de la derecha y seleccione **Aplicaciones de Apache Flink** y luego **Crear aplicación de streaming**. También puede elegir **Crear aplicación de streaming** en el contenedor Introducción de la página inicial. 

1. En la página **Crear aplicación de streaming**:
   + **Elija un método para configurar la aplicación de procesamiento de transmisiones:** elija **Crear desde cero**.
   + **Configuración de Apache Flink, versión de Application Flink:** elija **Apache Flink 1.20**.

1. Configuración de la aplicación
   + **Nombre de aplicación:** escriba **MyApplication**.
   + **Descripción:** escriba **My java test app**
   + **Acceso a los recursos de la aplicación:** elija **Crear o actualizar el rol de IAM `kinesis-analytics-MyApplication-us-east-1` con las políticas requeridas**.

1. Configuración de la **plantilla para los ajustes de la aplicación**
   + **Plantillas:** elija **Desarrollo**.

1. Elija **Crear aplicación de streaming** en la parte inferior de la página.

**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-east-1`
Rol: `kinesisanalytics-MyApplication-us-east-1`
Amazon Managed Service para Apache Flink Amazon se denominaba anteriormente Kinesis Data Analytics. El nombre de los recursos que se crean de manera automática lleva un prefijo `kinesis-analytics-` por motivos de compatibilidad con versiones anteriores.

### Modificar la política de IAM
<a name="get-started-exercise-7-console-iam"></a>

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

**Edición de la política**

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

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

1. Elija **Editar política** y, a continuación, elija la pestaña **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::my-bucket/kinesis-analytics-placeholder-s3-object"
               ]
           },
           {
               "Sid": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-east-1:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "ListCloudwatchLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-east-1:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutCloudwatchLogs",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-east-1:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-east-1:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-east-1:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

1.  Seleccione **Siguiente** en la parte inferior de la página y, a continuación, seleccione **Guardar cambios**.

### Configurar la aplicación
<a name="get-started-exercise-7-console-configure"></a>

Edite la configuración de la aplicación para establecer el artefacto del código de la aplicación.

**Edición de la configuración**

1. En la **MyApplication**página, selecciona **Configurar**.

1. En la sección **Ubicación del código de la aplicación**:
   + En **Bucket de Amazon S3**, seleccione el bucket que creó anteriormente para el código de la aplicación. Elija **Examinar** y seleccione el bucket correcto y, a continuación, seleccione **Elegir**. No haga clic en el nombre del bucket.
   + En **Ruta al objeto de Amazon S3**, introduzca **amazon-msf-java-stream-app-1.0.jar**.

1. Para los **permisos de acceso**, seleccione **Crear o actualizar el rol de IAM `kinesis-analytics-MyApplication-us-east-1` con las políticas requeridas**. 

1. En la sección **Propiedades del tiempo de ejecución**, añada las siguientes propiedades.

1. Seleccione **Añadir nuevo elemento** y añada cada uno de los siguientes parámetros:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/managed-flink/latest/java/get-started-exercise.html)

1. No modifique ninguna de las demás secciones.

1. Seleccione **Save changes (Guardar cambios)**.

**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
<a name="get-started-exercise-7-console-run"></a>

La aplicación ya está configurada y lista para ejecutarse.

**Cómo ejecutar la aplicación**

1. En la consola de Amazon Managed Service para Apache Flink, seleccione **Mi aplicación** y, a continuación, **Ejecutar**.

1. En la página siguiente, la página de configuración de restauración de la aplicación, seleccione **Ejecutar con la última instantánea** y, a continuación, seleccione **Ejecutar**. 

   El **estado** en **Detalles de la aplicación** cambia de `Ready` a `Starting` y luego a `Running` cuando se ha iniciado la aplicación.

Cuando la aplicación esté en el estado `Running`, se puede abrir el panel de control de Flink. 

**Para abrir el panel de**

1. Seleccione **Abrir el panel de control de Apache Flink**. El panel se abre en una nueva página.

1. En la lista **Trabajos en ejecución**, elija el único trabajo que pueda ver. 
**nota**  
Si se configuran las propiedades de Runtime o se editan las políticas de IAM de forma incorrecta, el estado de la solicitud podría cambiar a `Running`, pero el panel de control de Flink muestra que el trabajo se reinicia continuamente. Este es un escenario de error común si la aplicación está mal configurada o carece de permisos para acceder a los recursos externos.   
Cuando esto suceda, consulte la pestaña **Excepciones** en el panel de control de Flink para ver la causa del problema.

### Observación de las métricas de la aplicación en ejecución
<a name="get-started-exercise-7-console-stop"></a>

En la **MyApplication**página, en la sección de ** CloudWatch métricas de Amazon**, puedes ver algunas de las métricas fundamentales de la aplicación en ejecución. 

**Visualización de las métricas**

1. Junto al botón **Actualizar**, seleccione **10 segundos** en la lista desplegable.

1. Cuando la aplicación está en ejecución y en buen estado, se puede ver que la métrica de **tiempo de actividad** aumenta continuamente.

1. La métrica **fullrestarts** debe ser cero. Si aumenta, es posible que la configuración tenga problemas. Para investigar el problema, consulte la pestaña **Excepciones** del panel de control de Flink.

1. La métrica **Número de puntos de control fallidos** debe ser cero en una aplicación en buen estado. 
**nota**  
En este panel se muestra un conjunto fijo de métricas con una granularidad de 5 minutos. Puedes crear un panel de aplicaciones personalizado con cualquier métrica del CloudWatch panel.

### Observación de los datos de salida en los flujos de Kinesis
<a name="get-started-exercise-7-console-output"></a>

Asegúrese de seguir publicando datos en la entrada, ya sea mediante el script de Python o el generador de datos de Kinesis. 

Ahora puede observar el resultado de la aplicación que se ejecuta en Managed Service for Apache Flink mediante el visor de datos del servidor [https://console.aws.amazon.com/kinesis/](https://console.aws.amazon.com/kinesis/), de forma similar a como lo hacía anteriormente. 

**Visualización del resultado**

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

1. Compruebe que la región es la misma que la que está utilizando para ejecutar este tutorial. Por defecto, es us-east-1 Este de EE. UU. (Norte de Virginia). De ser necesario, cambie la región.

1. Elija **Flujos de datos**. 

1. Seleccione el flujo que desea observar. Para este tutorial, escriba `ExampleOutputStream`. 

1.  Seleccione la pestaña **Visor de datos**. 

1. Seleccione cualquier **partición**, mantenga el valor **Último** como **Posición inicial** y, a continuación, elija **Obtener registros**. Es posible que aparezca el error “no se ha encontrado ningún registro para esta solicitud”. Si es así, seleccione **Volver a intentar obtener los registros**. Se muestran los registros más recientes publicados en el flujo.

1. Seleccione el valor en la columna Datos para inspeccionar el contenido del registro en formato JSON.

### Detener la aplicación
<a name="get-started-exercise-stop"></a>

Para detener la aplicación, vaya a la página de la consola de la aplicación de Managed Service para Apache Flink denominada `MyApplication`.

**Cómo detener la aplicación**

1. En la lista desplegable **Acciones**, seleccione **Detener**.

1. El **estado** en **Detalles de la aplicación** cambia de `Running` a `Stopping` y después a `Ready` cuando se ha detenido totalmente la aplicación. 
**nota**  
No olvide que también debe dejar de enviar datos al flujo de entrada desde el script de Python o el generador de datos de Kinesis.

## Siguiente paso
<a name="get-started-exercise-next-step-4"></a>

[Limpie los recursos AWS](getting-started-cleanup.md)

# Limpie los recursos AWS
<a name="getting-started-cleanup"></a>

Esta sección incluye procedimientos para limpiar AWS los recursos creados en este tutorial de introducción (DataStream API).

**Topics**
+ [

## Eliminación de su aplicación de Managed Service para Apache Flink
](#getting-started-cleanup-app)
+ [

## Eliminación de sus flujos de datos de Kinesis
](#getting-started-cleanup-stream)
+ [

## Eliminación de objetos y el bucket de Amazon S3
](#getting-started-cleanup-s3)
+ [

## Eliminación de sus recursos de IAM
](#getting-started-cleanup-iam)
+ [

## CloudWatch Elimine sus recursos
](#getting-started-cleanup-cw)
+ [

## Exploración de recursos adicionales para Apache Flink
](#getting-started-cleanup-next-step-5)

## Eliminación de su aplicación de Managed Service para Apache Flink
<a name="getting-started-cleanup-app"></a>

Utilice el siguiente procedimiento para eliminar la aplicación.

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

1. En el panel Managed Service for Apache Flink, elija. **MyApplication**

1. En la lista desplegable **Acciones**, seleccione **Eliminar** y, a continuación, confirme la eliminación.

## Eliminación de sus flujos de datos de Kinesis
<a name="getting-started-cleanup-stream"></a>

1. Inicie sesión en y abra la Consola de administración de AWS consola de Amazon MSF en https://console.aws.amazon.com /flink..

1. Elija **Flujos de datos**.

1. Seleccione los flujos que creó, `ExampleInputStream` y `ExampleOutputStream`. 

1. En la lista desplegable **Acciones**, seleccione **Eliminar** y, a continuación, confirme la eliminación.

## Eliminación de objetos y el bucket de Amazon S3
<a name="getting-started-cleanup-s3"></a>

Siga el siguiente procedimiento para eliminar los objetos y el bucket de Amazon S3.

**Eliminación de objetos de un bucket de S3**

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

1. Elija el bucket de S3 que ha creado para el artefacto de la aplicación.

1. Seleccione el artefacto de la aplicación que ha cargado, denominado. `amazon-msf-java-stream-app-1.0.jar`

1. Para confirmar la eliminación, seleccione **Eliminar**.

**Para eliminar el bucket de S3**

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

1. Seleccione el bucket que ha creado para los artefactos.

1. Para confirmar la eliminación, seleccione **Eliminar**.
**nota**  
El bucket de S3 tiene que estar vacío para eliminarlo.

## Eliminación de sus recursos de IAM
<a name="getting-started-cleanup-iam"></a>

**Cómo eliminar sus recursos de IAM**

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

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

1. En el control de filtros, introduzca **kinesis**.

1. Elija la política **kinesis-analytics-service- MyApplication -us-east-1**.

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

1. En la barra de navegación, seleccione **Roles**.

1. Elija la función **kinesis-analytics- MyApplication** -us-east-1.

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

## CloudWatch Elimine sus recursos
<a name="getting-started-cleanup-cw"></a>

1. Abre la CloudWatch consola en [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. En la barra de navegación, elija **Registros**.

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

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

## Exploración de recursos adicionales para Apache Flink
<a name="getting-started-cleanup-next-step-5"></a>

[Exploración de recursos adicionales](getting-started-next-steps.md)

# Exploración de recursos adicionales
<a name="getting-started-next-steps"></a>

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.
+ **[Taller de Amazon Managed Service para Apache Flink](https://catalog.workshops.aws/managed-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.
+ **[Ejemplos de cómo crear y utilizar aplicaciones en Managed Service para Apache Flink](examples-collapsibles.md):** En esta sección de esta Guía para desarrolladores se proporcionan ejemplos de cómo crear y trabajar con 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.
+ **[Aprenda Flink: formación práctica](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/learn-flink/overview/):** 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.