

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Criar e executar uma aplicação do Managed Service for Apache Flink
<a name="get-started-exercise"></a>

Neste exercício, será criado um aplicativo Managed Service for Apache Flink com fluxos de dados como origem e coletor.

**Topics**
+ [Criar dois fluxos de dados do Amazon Kinesis](#get-started-exercise-1)
+ [Gravação de registros de amostra no fluxo de entrada](#get-started-exercise-2)
+ [Baixar e examinar o código Java de fluxo do Apache Flink](#get-started-exercise-5)
+ [Compilar o código da aplicação](#get-started-exercise-5.5)
+ [Upload do código Java de fluxo do Apache Flink](#get-started-exercise-6)
+ [Criar e executar a aplicação do Managed Service for Apache Flink](#get-started-exercise-7)

## Criar dois fluxos de dados do Amazon Kinesis
<a name="get-started-exercise-1"></a>

Antes de criar uma aplicação do Amazon Managed Service for Apache Flink para este exercício, crie dois fluxos de dados do Kinesis (`ExampleInputStream` e `ExampleOutputStream`). O aplicativo usa esses fluxos para os fluxos de origem e de destino do aplicativo.

É possível criar esses fluxos usando o console do Amazon Kinesis ou o comando da AWS CLI a seguir. Para instruções do console, consulte [Criar e atualizar fluxos de dados](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html). 

**Como criar os fluxos de dados (AWS CLI)**

1. Para criar o primeiro stream (`ExampleInputStream`), use o seguinte comando do Amazon Kinesis `create-stream` AWS CLI .

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

1. Para criar o segundo fluxo que o aplicativo usa para gravar a saída, execute o mesmo comando, alterando o nome da transmissão para `ExampleOutputStream`.

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

## Gravação de registros de amostra no fluxo de entrada
<a name="get-started-exercise-2"></a>

Nesta seção, será usado um script Python para gravar registros de amostra no fluxo para o aplicativo processar.

**nota**  
Essa seção requer [AWS SDK para Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

1. Crie um arquivo denominado `stock.py` com o conteúdo a seguir:

   ```
    
   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"))
   ```

1. Mais adiante neste tutorial, será executado o script `stock.py` para enviar dados para o aplicativo. 

   ```
   $ python stock.py
   ```

## Baixar e examinar o código Java de fluxo do Apache Flink
<a name="get-started-exercise-5"></a>

O código do aplicativo Java para esses exemplos está disponível em GitHub. Para fazer download do código do aplicativo, faça o seguinte:

1. Duplique o repositório remoto com o seguinte comando:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-java-examples.git
   ```

1. Navegue até o diretório `GettingStarted`.

O código do aplicativo está localizado nos arquivos `CustomSinkStreamingJob.java` e `CloudWatchLogSink.java`. Observe o seguinte sobre o código do aplicativo:
+ A aplicação usa uma origem do Kinesis para ler o fluxo de origem. O trecho a seguir cria o coletor do Kinesis:

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```

## Compilar o código da aplicação
<a name="get-started-exercise-5.5"></a>

Nesta seção, será usado o compilador do Apache Maven para criar o código Java para o aplicativo. Para obter informações sobre como instalar o Apache Maven e o Java Development Kit (JDK), consulte [Pré-requisitos para concluir os exercícios](tutorial-stock-data.md#setting-up-prerequisites).

Seu aplicativo Java requer os seguintes componentes:
+ Um arquivo [Project Object Model (pom.xml)](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html). este arquivo contém informações sobre a configuração e as dependências da aplicação, incluindo as bibliotecas do Amazon Managed Service for Apache Flink.
+ Um método `main` que contém a lógica do aplicativo.

**nota**  
**Para usar o conector do Kinesis para a aplicação a seguir, você precisa baixar o código-fonte do conector e compilá-lo como descrito na [documentação do Apache Flink](https://ci.apache.org/projects/flink/flink-docs-release-1.6/dev/connectors/kinesis.html).**

**Como criar e compilar o código do aplicativo**

1. Crie um Java/Maven aplicativo em seu ambiente de desenvolvimento. Para obter informações sobre como criar um aplicativo, consulte a documentação do seu ambiente de desenvolvimento:
   + [Como criar seu primeiro projeto Java (Eclipse Java Neon)](https://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-3.htm)
   + [Como criar, executar e empacotar seu primeiro aplicativo Java (IntelliJ Idea)](https://www.jetbrains.com/help/idea/creating-and-running-your-first-java-application.html)

1. Use o código a seguir para um arquivo chamado `StreamingJob.java`. 

   ```
    
   package com.amazonaws.services.kinesisanalytics;
   
   import com.amazonaws.services.kinesisanalytics.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 java.io.IOException;
   import java.util.Map;
   import java.util.Properties;
   
   public class StreamingJob {
   
       private static final String region = "us-east-1";
       private static final String inputStreamName = "ExampleInputStream";
       private static final String outputStreamName = "ExampleOutputStream";
   
       private static DataStream<String> createSourceFromStaticConfig(StreamExecutionEnvironment env) {
           Properties inputProperties = new Properties();
           inputProperties.setProperty(ConsumerConfigConstants.AWS_REGION, region);
           inputProperties.setProperty(ConsumerConfigConstants.STREAM_INITIAL_POSITION, "LATEST");
   
           return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
       }
   
       private static DataStream<String> createSourceFromApplicationProperties(StreamExecutionEnvironment env)
               throws IOException {
           Map<String, Properties> applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties();
           return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(),
                   applicationProperties.get("ConsumerConfigProperties")));
       }
   
       private static FlinkKinesisProducer<String> createSinkFromStaticConfig() {
           Properties outputProperties = new Properties();
           outputProperties.setProperty(ConsumerConfigConstants.AWS_REGION, region);
           outputProperties.setProperty("AggregationEnabled", "false");
   
           FlinkKinesisProducer<String> sink = new FlinkKinesisProducer<>(new SimpleStringSchema(), outputProperties);
           sink.setDefaultStream(outputStreamName);
           sink.setDefaultPartition("0");
           return sink;
       }
   
       private static FlinkKinesisProducer<String> createSinkFromApplicationProperties() throws IOException {
           Map<String, Properties> applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties();
           FlinkKinesisProducer<String> sink = new FlinkKinesisProducer<>(new SimpleStringSchema(),
                   applicationProperties.get("ProducerConfigProperties"));
   
           sink.setDefaultStream(outputStreamName);
           sink.setDefaultPartition("0");
           return sink;
       }
   
       public static void main(String[] args) throws Exception {
           // set up the streaming execution environment
           final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
   
           /*
            * if you would like to use runtime configuration properties, uncomment the
            * lines below
            * DataStream<String> input = createSourceFromApplicationProperties(env);
            */
   
           DataStream<String> input = createSourceFromStaticConfig(env);
   
           /*
            * if you would like to use runtime configuration properties, uncomment the
            * lines below
            * input.addSink(createSinkFromApplicationProperties())
            */
   
           input.addSink(createSinkFromStaticConfig());
   
           env.execute("Flink Streaming Java API Skeleton");
       }
   }
   ```

   Observe o seguinte sobre o exemplo de código anterior:
   + Este arquivo contém o método `main` que define a funcionalidade do aplicativo.
   + Seu aplicativo cria conectores de origem e de destino para acessar recursos externos usando um objeto `StreamExecutionEnvironment`. 
   + O aplicativo cria conectores de origem e de destino usando propriedades estáticas. Para usar as propriedades dinâmicas do aplicativo, use os métodos `createSourceFromApplicationProperties` e `createSinkFromApplicationProperties` para criar os conectores. Esses métodos leem as propriedades do aplicativo para configurar os conectores.

1. Para usar o seu código de aplicativo, compile-o e empacote-o em um arquivo JAR. Há duas formas de compilar e empacotar o código:
   + Use a ferramenta de linha de comando do Maven. Crie seu arquivo JAR executando o seguinte comando no diretório que contém o arquivo `pom.xml`:

     ```
     mvn package
     ```
   + Use o ambiente de desenvolvimento. Consulte a documentação de seu ambiente de desenvolvimento para obter mais detalhes.

   É possível carregar o pacote como um arquivo JAR, ou pode compactar o pacote e carregá-lo como um arquivo ZIP. Se você criar seu aplicativo usando o AWS CLI, especifique o tipo de conteúdo do código (JAR ou ZIP).

1. Se houver erros durante a compilação, verifique se sua variável de ambiente `JAVA_HOME` está definida corretamente.

Se o aplicativo for compilado com êxito, o arquivo a seguir é criado:

`target/java-getting-started-1.0.jar`

## Upload do código Java de fluxo do Apache Flink
<a name="get-started-exercise-6"></a>

Nesta seção, será criado um bucket do Amazon Simple Storage Service (Amazon S3) e realizado o upload do código do aplicativo.

**Para fazer upload do código do aplicativo**

1. Abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Selecione **Criar bucket**.

1. Insira **ka-app-code-*<username>*** no campo **Nome do bucket**. Adicione um sufixo para o nome do bucket, como o nome do usuário, para torná-lo globalmente exclusivo. Selecione **Next** (Próximo).

1. Na etapa **Configurar opções**, mantenha as configurações como estão e selecione **Próximo**.

1. Na etapa **Definir permissões**, mantenha as configurações como estão e selecione **Próximo**.

1. Selecione **Criar bucket**.

1. **No console do Amazon S3, escolha o **ka-app-code- *<username>*** bucket e escolha Upload.**

1. Na etapa **Selecionar arquivos**, selecione **Adicionar arquivos**. Navegue até o arquivo `java-getting-started-1.0.jar`, criado na etapa anterior. Escolha **Próximo**.

1. Na etapa **Definir permissões**, mantenha as configurações como estão. Escolha **Próximo**.

1. Na etapa **Definir propriedades**, mantenha as configurações como estão. Escolha **Carregar**.

O código passa a ser armazenado em um bucket do Amazon S3 que pode ser acessado pelo aplicativo.

## Criar e executar a aplicação do Managed Service for Apache Flink
<a name="get-started-exercise-7"></a>

É possível criar e executar um aplicativo Managed Service for Apache Flink usando o console ou a AWS CLI.

**nota**  
Quando você cria o aplicativo usando o console, seus recursos AWS Identity and Access Management (IAM) e do Amazon CloudWatch Logs são criados para você. Ao criar o aplicativo usando o AWS CLI, você cria esses recursos separadamente.

**Topics**
+ [Criar e executar a aplicação (console)](#get-started-exercise-7-console)
+ [Criar e executar a aplicação (AWS CLI)](#get-started-exercise-7-cli)

### Criar e executar a aplicação (console)
<a name="get-started-exercise-7-console"></a>

Siga estas etapas para criar, configurar, atualizar e executar o aplicativo usando o console.

#### Criar a aplicação
<a name="get-started-exercise-7-console-create"></a>

1. [Abra o console do Kinesis em https://console.aws.amazon.com /kinesis.](https://console.aws.amazon.com/kinesis)

1. No painel do Amazon Kinesis, escolha **Criar aplicativo de analytics**.

1. Na página **Kinesis Analytics – Criar aplicativo**, forneça os detalhes do aplicativo da seguinte forma:
   + Em **Nome do aplicativo**, insira **MyApplication**.
   + Em **Descrição**, insira **My java test app**.
   + Em **Runtime**, escolha **Apache Flink 1.6**.

1. Em **Permissões de acesso**, escolha **Criar/atualizar o perfil do IAM `kinesis-analytics-MyApplication-us-west-2`**.

1. Selecione **Criar aplicativo**.

**nota**  
Ao criar uma aplicação do Amazon Managed Service for Apache Flink usando o console, você tem a opção de ter um perfil do IAM e uma política criados para sua aplicação. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses recursos do IAM são nomeados usando o nome do aplicativo e a região da seguinte forma:  
Política: `kinesis-analytics-service-MyApplication-us-west-2`
Função: `kinesis-analytics-MyApplication-us-west-2`

#### Editar a política do IAM
<a name="get-started-exercise-7-console-iam"></a>

Edite a política do IAM para adicionar permissões de acesso aos fluxos de dados do Kinesis.

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Selecione **Políticas**. Selecione a política **`kinesis-analytics-service-MyApplication-us-west-2`** que o console criou na seção anterior. 

1. Na página **Resumo**, selecione **Editar política**. Selecione a guia **JSON**.

1. Adicione a seção destacada do exemplo de política a seguir à política. Substitua a conta de amostra IDs (*012345678901*) pelo ID da sua conta.

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

****  

   ```
   {
       "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": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "ListCloudwatchLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutCloudwatchLogs",
               "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 o aplicativo
<a name="get-started-exercise-7-console-configure"></a>

1. Na **MyApplication**página, escolha **Configurar**.

1. Na página **Configurar aplicativo**, forneça o **Local do código**:
   + Em **Bucket do Amazon S3**, insira **ka-app-code-*<username>***.
   + Em **Caminho do objeto do Amazon S3**, insira **java-getting-started-1.0.jar**.

1. Na seção **‭Acesso aos recursos do aplicativo**‭‬, em **‭‬Permissões de acesso**‭, selecione ‭**Criar/atualizar o perfil do IAM ‭`kinesis-analytics-MyApplication-us-west-2`**.

1. Em **Propriedades**, **ID do grupo**, insira **ProducerConfigProperties**.

1. Insira as seguintes propriedades e valores de aplicativo:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/streams/latest/dev/get-started-exercise.html)

1. Em **Monitoramento**, confirme se **Nível de monitoramento de métricas** está definido como **Aplicativo**.

1. Para **CloudWatch registrar**, marque a caixa de seleção **Ativar**.

1. Selecione **Atualizar**.

**nota**  
Quando você opta por ativar o CloudWatch registro, o Managed Service for Apache Flink cria um grupo de registros e um fluxo de registros para você. Os nomes desses recursos são os seguintes:   
Grupo de logs: `/aws/kinesis-analytics/MyApplication`
Fluxo de logs: `kinesis-analytics-log-stream`

#### Execute o aplicativo
<a name="get-started-exercise-7-console-run"></a>

1. Na **MyApplication**página, escolha **Executar**. Confirme a ação.

1. Quando o aplicativo estiver em execução, atualize a página. O console mostra o **Gráfico do aplicativo**.

#### Interromper a aplicação
<a name="get-started-exercise-7-console-stop"></a>

Na **MyApplication**página, escolha **Parar**. Confirme a ação.

#### Atualizar o aplicativo
<a name="get-started-exercise-7-console-update"></a>

Usando o console, é possível atualizar configurações do aplicativo, como as propriedades do aplicativo, as configurações de monitoramento e a localização ou o nome do arquivo JAR do aplicativo. Também é possível recarregar o JAR do aplicativo do bucket do Amazon S3 se for necessário atualizar o código do aplicativo.

Na **MyApplication**página, escolha **Configurar**. Atualize as configurações do aplicativo e selecione **Atualizar**.

### Criar e executar a aplicação (AWS CLI)
<a name="get-started-exercise-7-cli"></a>

Nesta seção, você usa o AWS CLI para criar e executar o aplicativo Managed Service for Apache Flink. O Managed Service for Apache Flink usa o `kinesisanalyticsv2` AWS CLI comando para criar e interagir com o Managed Service for Apache Flink aplicativos.

#### Criar uma política de permissões
<a name="get-started-exercise-7-cli-policy"></a>

Primeiro, crie uma política de permissões com duas instruções: uma que concede permissões para a ação `read` no fluxo de origem, e outra que concede permissões para ações `write` no fluxo de destino. Em seguida, anexe a política a um perfil do IAM (que será criado na próxima seção). Assim, ao assumir o perfil, o serviço Managed Service for Apache Flink terá as permissões necessárias para ler o fluxo de origem e gravar no fluxo de coleta.

Use o código a seguir para criar a política de permissões `KAReadSourceStreamWriteSinkStream`. Substitua `username` pelo nome de usuário usado para criar o bucket do Amazon S3 e armazenar o código do aplicativo. Substitua o ID da conta nos nomes de recursos da Amazon (ARNs) (`012345678901`) pelo ID da sua conta.

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

****  

```
{
    "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 obter instruções sobre como criar uma política de permissões, consulte [Tutorial: Criar e anexar sua primeira política gerenciada pelo cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) no *Guia do usuário do IAM*.

**nota**  
Para acessar outros AWS serviços, você pode usar AWS SDK para Java o. O Managed Service for Apache Flink define automaticamente as credenciais exigidas pelo SDK como as credenciais do perfil do IAM associado a seu aplicativo. Não é necessária nenhuma etapa adicional.

#### Criar um perfil do IAM
<a name="get-started-exercise-7-cli-role"></a>

Nesta seção, você cria um perfil do IAM que o Managed Service for Apache Flink pode assumir para ler um fluxo de origem e gravar no fluxo de coleta.

O Managed Service for Apache Flink não pode acessar seu fluxo sem permissões. Essas permissões são concedidas usando um perfil do IAM. Cada perfil do IAM tem duas políticas anexadas. A política de confiança concede ao Managed Service for Apache Flink permissão para assumir o perfil, e a política de permissões determina o que o serviço pode fazer depois de assumir a função.

Anexe a política de permissões que criou na seção anterior a essa função.

**Para criar uma perfil do IAM**

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, selecione **Funções** e **Criar função**.

1. Em **Selecionar tipo de identidade de confiança**, selecione **Serviço da AWS **. Em **Selecionar o serviço que usará esta função**, selecione **Kinesis**. Em **Selecionar seu caso de uso**, selecione **Kinesis Analytics**.

   Selecione **Next: Permissions** (Próximo: permissões).

1. Na página **Attach permissions policies**, selecione **Next: Review**. É possível anexar políticas de permissões depois de criar a função.

1. Na página **Criar função**, insira **KA-stream-rw-role** para o **Nome da função**. Selecione **Criar função**.

   Foi criado um perfil do IAM chamado `KA-stream-rw-role`. Em seguida, atualize as políticas de confiança e de permissões para a função.

1. Anexe a política de permissões à função.
**nota**  
Para este exercício, o Managed Service for Apache Flink assume esse perfil para ler dados de um fluxo de dados do Kinesis (origem) e gravar a saída em outro fluxo de dados do Kinesis. Depois, anexe a política criada na etapa anterior, [Criar uma política de permissões](#get-started-exercise-7-cli-policy).

   1. Na página **Resumo**, selecione a guia **Permissões**.

   1. Selecione **Attach Policies**.

   1. Na caixa de pesquisa, insira **KAReadSourceStreamWriteSinkStream** (a política criada na seção anterior).

   1. Selecione a política **KAReadInputStreamWriteOutputStream** e selecione **Anexar política**.

Agora você criou a função de execução de serviço que seu aplicativo usa para acessar os recursos. Anote o ARN da nova função.

Para step-by-step obter instruções sobre como criar uma função, consulte [Como criar uma função do IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) no *Guia do usuário do IAM*.

#### Criar o aplicativo do Managed Service for Apache Flink
<a name="get-started-exercise-7-cli-create"></a>

1. Salve o seguinte código JSON em um arquivo chamado `create_request.json`. Substitua o ARN da função de amostra pelo ARN da função criada anteriormente. Substitua o sufixo do ARN do bucket (`username`) pelo sufixo selecionado na seção anterior. Substitua o ID da conta de exemplo (`012345678901`) na função de execução do serviço pelo ID da conta.

   ```
   {
       "ApplicationName": "test",
       "ApplicationDescription": "my java test app",
       "RuntimeEnvironment": "FLINK-1_6",
       "ServiceExecutionRole": "arn:aws:iam::012345678901:role/KA-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"
                  }
               }
            ]
         }
       }
   }
   ```

1. Execute a ação [https://docs.aws.amazon.com/kinesisanalytics/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/kinesisanalytics/latest/apiv2/API_CreateApplication.html) com a solicitação anterior para criar o aplicativo: 

   ```
   aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
   ```

O aplicativo agora é criado. Inicie o aplicativo na próxima etapa.

#### Iniciar o aplicativo
<a name="get-started-exercise-7-cli-start"></a>

Nesta seção, a ação [https://docs.aws.amazon.com/kinesisanalytics/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/kinesisanalytics/latest/apiv2/API_StartApplication.html) será usada para iniciar o aplicativo.

**Para iniciar o aplicativo**

1. Salve o seguinte código JSON em um arquivo chamado `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Execute a ação [https://docs.aws.amazon.com/kinesisanalytics/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/kinesisanalytics/latest/apiv2/API_StartApplication.html) com a solicitação anterior para iniciar o aplicativo:

   ```
   aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
   ```

O aplicativo agora está em execução. Você pode verificar as métricas do Managed Service for Apache Flink no CloudWatch console da Amazon para verificar se o aplicativo está funcionando.

#### Interromper o aplicativo
<a name="get-started-exercise-7-cli-stop"></a>

Nesta seção, a ação [https://docs.aws.amazon.com/kinesisanalytics/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/kinesisanalytics/latest/apiv2/API_StopApplication.html) será usada para interromper o aplicativo.

**Como interromper o aplicativo**

1. Salve o seguinte código JSON em um arquivo chamado `stop_request.json`.

   ```
   {"ApplicationName": "test"
   }
   ```

1. Execute a ação [https://docs.aws.amazon.com/kinesisanalytics/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/kinesisanalytics/latest/apiv2/API_StopApplication.html) com a seguinte solicitação para interromper o aplicativo:

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

O aplicativo agora está interrompido.