

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

# Crie e execute o aplicativo (CLI)
<a name="examples-gs-scala-create-run-cli"></a>

Nesta seção, você usa o AWS Command Line Interface para criar e executar o aplicativo Managed Service for Apache Flink. Use o AWS CLI comando *kinesisanalyticsv2* para criar e interagir com o Managed Service para aplicativos Apache Flink.

## Criação de uma política de permissões
<a name="examples-gs-scala-permissions"></a>

**nota**  
Você deve criar uma política de permissões e uma função para o seu aplicativo. Se você não criar esses recursos do IAM, seu aplicativo não poderá acessar seus fluxos de logs e dados. 

Primeiro, crie uma política de permissões com duas instruções: uma que concede permissões para a ação de ler no fluxo de origem, e outra que concede permissões para ações de gravação no fluxo de coleta. 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 `AKReadSourceStreamWriteSinkStream`. 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 Amazon Resource Names (ARNs) **(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/getting-started-scala-1.0.jar"
            ]
        },
        {
            "Sid": "DescribeLogGroups",
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogGroups"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:123456789012:*"
            ]
        },
        {
            "Sid": "DescribeLogStreams",
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogStreams"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:123456789012:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
            ]
        },
        {
            "Sid": "PutLogEvents",
            "Effect": "Allow",
            "Action": [
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:123456789012: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:123456789012:stream/ExampleInputStream"
        },
        {
            "Sid": "WriteOutputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:123456789012: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*.

## Criar uma política do IAM.
<a name="examples-gs-scala-iam-policy"></a>

Nesta seção, você cria um perfil do IAM que o aplicativo 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 **Perfis** e **Criar perfil**.

1. Em **Selecionar tipo de identidade de confiança**, selecione **AWS Serviço**

1. Em **Choose the service that will use this role (Selecionar o serviço que usará esta função)**, selecione **Kinesis**.

1. Em **Selecione seu caso de uso**, selecione **Managed Service for Apache Flink**.

1. 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 **MF-stream-rw-role** para o **Nome da função**. Selecione **Criar função**. 

    Foi criado um perfil do IAM chamado `MF-stream-rw-role`. Em seguida, você atualiza 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, você anexa a política que criou na etapa anterior, [Crie uma política de permissões](https://docs.aws.amazon.com/managed-flink/latest/java/get-started-exercise.html#get-started-exercise-7-cli-policy).

   1. Na página **Summary (Resumo)**, selecione a guia **Permissions (Permissões)**.

   1. Selecione **Attach Policies**.

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

   1. Selecione a política `AKReadSourceStreamWriteSinkStream` 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
<a name="examples-gs-scala-create-application-cli"></a>

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 (nome do usuário) pelo sufixo que você selecionou 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": "getting_started",
    "ApplicationDescription": "Scala getting started application",
    "RuntimeEnvironment": "FLINK-1_19",
    "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation": {
                    "BucketARN": "arn:aws:s3:::ka-app-code-username",
                    "FileKey": "getting-started-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"
      }
   ]
}
```

Execute o [CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)com a seguinte solicitação 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="examples-gs-scala-start"></a>

Nesta seção, a ação [StartApplication](https://docs.aws.amazon.com/managed-flink/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": "getting_started",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Execute a ação `StartApplication` 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="examples-s3sink-scala-stop"></a>

Nesta seção, a ação [StopApplication](https://docs.aws.amazon.com/managed-flink/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": "s3_sink"
   }
   ```

1. Execute a ação `StopApplication` com a solicitação anterior para interromper o aplicativo:

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

O aplicativo agora está interrompido.

## Adicionar uma opção de CloudWatch registro
<a name="examples-s3sink-scala-cw-option"></a>

Você pode usar o AWS CLI para adicionar um stream de CloudWatch log da Amazon ao seu aplicativo. Para obter informações sobre como usar o CloudWatch Logs com seu aplicativo, consulte [Como configurar o registro de aplicativos](https://docs.aws.amazon.com/managed-flink/latest/java/cloudwatch-logs.html).

## Atualizar propriedades do ambiente
<a name="examples-s3sink-scala-update-environment-properties"></a>

Nesta seção, você usa a ação [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) para alterar as propriedades do ambiente do aplicativo sem recompilar o código do aplicativo. Neste exemplo, você altera a região dos fluxos de origem e destino.

**Para atualizar propriedades de ambiente para o aplicativo**

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

   ```
   {
         "ApplicationName": "getting_started",
          "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"
                  }
               }
              ]
           } 
       }
   ```

1. Execute a ação `UpdateApplication` com a solicitação anterior para atualizar as propriedades do ambiente:

   ```
   aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
   ```

## Atualizar o código do aplicativo
<a name="examples-s3sink-scala-update-app-code"></a>

Quando precisar atualizar o código do aplicativo com uma nova versão do pacote de código, use a ação da [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)CLI.

**nota**  
Para carregar uma nova versão do código do aplicativo com o mesmo nome de arquivo, você deve especificar a nova versão do objeto. Para obter mais informações sobre o uso de versões de objetos do Amazon S3, consulte Como [ativar ou desativar](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html) o controle de versão.

Para usar o AWS CLI, exclua seu pacote de código anterior do bucket do Amazon S3, faça o upload da nova versão e ligue`UpdateApplication`, especificando o mesmo nome de bucket e objeto do Amazon S3 e a nova versão do objeto. O aplicativo será reiniciado com o novo pacote de código.

O exemplo de solicitação da `UpdateApplication` ação a seguir recarrega o código do aplicativo e reinicia o aplicativo. Atualize o `CurrentApplicationVersionId` para a versão atual do aplicativo. Você pode verificar a versão atual do aplicativo usando as ações `DescribeApplication` ou `ListApplications`. Atualize o sufixo do nome do bucket (<username>) com o sufixo que você selecionou na seção [Crie recursos dependentes](examples-gs-scala.md#examples-gs-scala-resources).

```
{{
    "ApplicationName": "getting_started",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-<username>",
                    "FileKeyUpdate": "getting-started-scala-1.0.jar",
                    "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU"
                }
            }
        }
    }
}
```