

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 um aplicativo Managed Service for Apache Flink
<a name="how-creating-apps"></a>

Este tópico contém informações sobre como criar um aplicativo Managed Service for Apache Flink.

**Topics**
+ [Compile seu código de aplicativo Managed Service for Apache Flink](#how-creating-apps-building)
+ [Crie seu aplicativo Managed Service for Apache Flink](#how-creating-apps-creating)
+ [Use chaves gerenciadas pelo cliente.](#how-creating-apps-use-cmk)
+ [Inicie seu aplicativo Managed Service for Apache Flink](#how-creating-apps-starting)
+ [Verifique seu aplicativo Managed Service for Apache Flink](#how-creating-apps-verifying)
+ [Habilite reversões de sistema para seu aplicativo Managed Service for Apache Flink](how-system-rollbacks.md)

## Compile seu código de aplicativo Managed Service for Apache Flink
<a name="how-creating-apps-building"></a>

Esta seção descreve os componentes que você usa para criar o código do aplicativo Managed Service for Apache Flink. 

Recomendamos que você use a versão mais recente suportada do Apache Flink para o seu código do aplicativo. Para obter informações sobre a atualização de aplicativos Managed Service for Apache Flink, consulte [Use atualizações de versão in-place para o Apache Flink](how-in-place-version-upgrades.md). 

Você cria o código do seu aplicativo usando o [Apache Maven](https://maven.apache.org/). Um projeto Apache Maven usa um arquivo `pom.xml` para especificar as versões dos componentes que ele usa. 

**nota**  
O Managed Service for Apache Flink suporta arquivos JAR de até 512 MB de tamanho. Se você usar um arquivo JAR maior do que isso, seu aplicativo falhará ao iniciar.

Agora, os aplicativos podem usar a API Java de qualquer versão do Scala. Você precisará empacotar a biblioteca padrão Scala de sua escolha em seus aplicativos Scala.

Para obter informações sobre como criar um aplicativo Managed Service for Apache Flink que usa **Apache Beam**, consulte [Use o Apache Beam com aplicativos Managed Service for Apache Flink](how-creating-apps-beam.md).

### Especifique a versão do Apache Flink do seu aplicativo
<a name="how-creating-apps-building-flink"></a>

Ao usar o runtime do Managed Service for Apache Flink versão 1.1.0 e posterior, você especifica a versão do Apache Flink que seu aplicativo usa ao compilar seu aplicativo. Você fornece a versão do Apache Flink com o parâmetro `-Dflink.version`. Por exemplo, se você estiver usando o Apache Flink 2.2.0, forneça o seguinte:

```
mvn package -Dflink.version=2.2.0
```

Para compilar aplicativos com versões mais antigas do Apache Flink, consulte [Versões anteriores](earlier.md).

## Crie seu aplicativo Managed Service for Apache Flink
<a name="how-creating-apps-creating"></a>

Depois de compilar o código do aplicativo, faça o seguinte para criar seu aplicativo Managed Service for Apache Flink (Amazon MSF):
+ **Faça upload do código do aplicativo**: faça upload do código do aplicativo em um bucket do Amazon S3. Ao criar o aplicativo, você especifica o nome do bucket do S3 e o nome do objeto do código do aplicativo. Para ver um tutorial que mostra como fazer upload do código do seu aplicativo, consulte o tutorial [Tutorial: Comece a usar a DataStream API no Managed Service para Apache Flink](getting-started.md).
+ **Crie seu aplicativo Managed Service for Apache Flink**: use um dos métodos a seguir para criar seu aplicativo Amazon MSF:
**nota**  
O Amazon MSF criptografa seu aplicativo por padrão usando. Chaves pertencentes à AWS Você também pode criar seu novo aplicativo usando chaves gerenciadas pelo AWS KMS cliente (CMKs) para criar, possuir e gerenciar suas chaves você mesmo. Para obter informações sobre CMKs, consulte[Gerenciamento de chaves no Amazon Managed Service for Apache Flink](key-management-flink.md).
  + **Crie seu aplicativo Amazon MSF usando o AWS console:** Você pode criar e configurar seu aplicativo usando o AWS console. 

    Quando você cria seu aplicativo usando o console, os recursos dependentes do seu aplicativo (como fluxos de CloudWatch registros, funções do IAM e políticas do IAM) são criados para você. 

    Ao criar seu aplicativo usando o console, você especifica qual versão do Apache Flink seu aplicativo usa selecionando-a no menu suspenso na página **Managed Service for Apache Flink - Criar aplicativo**. 

    Para obter um tutorial sobre como usar o console para criar um aplicativo, consulte o tutorial [Tutorial: Comece a usar a DataStream API no Managed Service para Apache Flink](getting-started.md).
  + **Crie seu aplicativo Amazon MSF usando a AWS CLI**: Você pode criar e configurar seu aplicativo usando a AWS CLI. 

    Ao criar seu aplicativo usando a CLI, você também deve criar manualmente os recursos dependentes do aplicativo (como fluxos de CloudWatch registros, funções do IAM e políticas do IAM).

    Ao criar seu aplicativo usando o CLI, você especifica qual versão do Apache Flink seu aplicativo usa usando o parâmetro `RuntimeEnvironment` da ação `CreateApplication`.
**nota**  
É possível alterar o `RuntimeEnvironment` de um aplicativo existente. Para saber como, consulte [Use atualizações de versão in-place para o Apache Flink](how-in-place-version-upgrades.md).

## Use chaves gerenciadas pelo cliente.
<a name="how-creating-apps-use-cmk"></a>

No Amazon MSF, chaves gerenciadas pelo cliente (CMKs) são um recurso com o qual você pode criptografar os dados do seu aplicativo com uma chave que você cria, possui e gerencia em AWS Key Management Service ()AWS KMS. Para um aplicativo Amazon MSF, isso significa que todos os dados sujeitos a um [ponto de verificação](how-fault.md) ou [snapshot](how-snapshots.md) do Flink são criptografados com uma CMK que você define para esse aplicativo.

Para usar a CMK com seu aplicativo, primeiro você deve [criar seu novo aplicativo](#how-creating-apps-creating) e, em seguida, aplicar uma CMK. Para obter mais informações sobre o uso CMKs, consulte[Gerenciamento de chaves no Amazon Managed Service for Apache Flink](key-management-flink.md).

## Inicie seu aplicativo Managed Service for Apache Flink
<a name="how-creating-apps-starting"></a>

Depois de criar o código do aplicativo, carregá-lo no S3 e criar seu aplicativo Managed Service for Apache Flink, você inicia o aplicativo. O início de um aplicativo Managed Service for Apache Flink normalmente leva vários minutos.

Use um dos métodos a seguir para iniciar o aplicativo:
+ **Inicie seu aplicativo Managed Service for Apache Flink usando o AWS console:** Você pode executar seu aplicativo escolhendo **Executar** na página do seu aplicativo no AWS console.
+ **Inicie seu serviço gerenciado para o aplicativo Apache Flink usando a AWS API:** você pode executar seu aplicativo usando a [StartApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StartApplication.html)ação. 

## Verifique seu aplicativo Managed Service for Apache Flink
<a name="how-creating-apps-verifying"></a>

Você pode verificar se o aplicativo está funcionando das seguintes maneiras:
+ **Usando CloudWatch registros:** você pode usar o CloudWatch Logs e o CloudWatch Logs Insights para verificar se o aplicativo está funcionando corretamente. Para obter informações sobre como usar o CloudWatch Logs com seu aplicativo Managed Service for Apache Flink, consulte. [Registro em log e monitoramento no Amazon Managed Service for Apache Flink](monitoring-overview.md)
+ **Usando CloudWatch métricas:** você pode usar CloudWatch métricas para monitorar a atividade do seu aplicativo ou a atividade nos recursos que seu aplicativo usa para entrada ou saída (como streams do Kinesis, streams Firehose ou buckets do Amazon S3). Para obter mais informações sobre CloudWatch métricas, consulte Como [trabalhar com métricas](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) no Guia CloudWatch do usuário da Amazon.
+ **Monitoramento de locais de saída:** se seu aplicativo grava a saída em um local (como um bucket ou banco de dados do Amazon S3), você pode monitorar esse local para dados gravados.

# Habilite reversões de sistema para seu aplicativo Managed Service for Apache Flink
<a name="how-system-rollbacks"></a>

Com a capacidade de reversão do sistema, você pode obter maior disponibilidade do seu aplicativo Apache Flink em execução no Amazon Managed Service for Apache Flink. A opção por essa configuração permite que o serviço reverta automaticamente o aplicativo para a versão em execução anterior quando uma ação, como `UpdateApplication` ou `autoscaling`, causa falha no código ou na configuração.

**nota**  
Para usar o recurso de reversão do sistema, você precisa aderir à atualização do aplicativo. Os aplicativos existentes não usarão automaticamente a reversão do sistema por padrão.

## Como funciona
<a name="how-rollback-works"></a>

Quando você inicia a operação de um aplicativo, como uma atualização ou escalamento, o Amazon Managed Service for Apache Flink primeiro tenta executá-la. Se ele detectar problemas que impeçam a operação de ser bem-sucedida, como falhas de código ou permissões insuficientes, o serviço iniciará automaticamente uma operação `RollbackApplication`.

A reversão tenta restaurar o aplicativo para a versão anterior que estava sendo executada com êxito, junto com o estado do aplicativo associado. Se a reversão for feita com êxito, o aplicativo continuará processando dados com o mínimo de tempo de inatividade, usando a versão anterior. Se a reversão automática também falhar, o Amazon Managed Service for Apache Flink fará a transição do aplicativo para o status `READY`, para que você possa corrigir o erro e repetir a operação. 

Você deve aderir ao uso de reversões automáticas do sistema. Você pode habilitar isso usando o console ou a API para todas as operações em seu aplicativo a partir de agora. 

O exemplo de solicitação a seguir para a ação `UpdateApplication` habilita reversões de sistema para um aplicativo:

```
{
   "ApplicationName": "MyApplication",
   "CurrentApplicationVersionId": 1,
   "ApplicationConfigurationUpdate": { 
      "ApplicationSystemRollbackConfigurationUpdate": { 
         "RollbackEnabledUpdate": "true"
       }
    }
}
```

## Analise cenários comuns para reversão automática do sistema
<a name="common-scenarios"></a>

Os cenários a seguir ilustram onde as reversões automáticas do sistema são benéficas: 
+ **Atualizações do aplicativo:** se você atualizar seu aplicativo com um novo código que contém falhas ao inicializar a tarefa do Flink por meio do método principal, a reversão automática permite que a versão anterior funcional seja restaurada. Outros cenários de atualização em que as reversões do sistema são úteis incluem: 
  + Se seu aplicativo for atualizado para ser executado com um paralelismo maior que [maxParallelism](https://docs.aws.amazon.com/managed-flink/latest/java/how-scaling.html#how-scaling-auto).
  + Se seu aplicativo for atualizado para ser executado com sub-redes incorretas para um aplicativo na VPC, isso resultará em uma falha durante o startup da tarefa do Flink. 
+ **Atualizações da versão do Flink:** quando você atualiza para uma nova versão do Apache Flink e o aplicativo atualizado encontra um problema de compatibilidade de snapshots, a reversão do sistema permite que você reverta automaticamente para a versão anterior do Flink. 
+ **AutoScaling:** quando o aplicativo se expande, mas apresenta problemas de restauração a partir de um ponto de salvamento, devido à incompatibilidade do operador entre o instantâneo e o gráfico de tarefas do Flink.

## Use a operação APIs para reversões do sistema
<a name="operation-apis"></a>

Para fornecer melhor visibilidade, o Amazon Managed Service para Apache Flink tem duas operações APIs relacionadas a aplicativos que podem ajudá-lo a rastrear falhas e reversões de sistema relacionadas.

`ListApplicationOperations`

Essa API lista todas as operações realizadas no aplicativo, incluindo `UpdateApplication`, `Maintenance`, `RollbackApplication` e outras em ordem cronológica inversa. O exemplo a seguir solicita que a ação `ListApplicationOperations` liste as primeiras 10 operações do aplicativo:

```
{
   "ApplicationName": "MyApplication",
   "Limit": 10
}
```

O seguinte exemplo de solicitação de `ListApplicationOperations` ajuda a filtrar a lista para atualizações anteriores no aplicativo:

```
{
   "ApplicationName": "MyApplication",
   "operation": "UpdateApplication"
}
```

`DescribeApplicationOperation`

Essa API fornece informações detalhadas sobre uma operação específica listada por `ListApplicationOperations`, incluindo o motivo da falha, se aplicável. O exemplo de solicitação a seguir para a ação `DescribeApplicationOperation` lista detalhes de uma operação específica do aplicativo:

```
{
   "ApplicationName": "MyApplication",
   "OperationId": "xyzoperation"
}
```

Para obter informações sobre a solução de problemas, consulte [Práticas recomendadas de reversão do sistema](troubleshooting-system-rollback.md).