

Após uma análise cuidadosa, decidimos descontinuar o Amazon Kinesis Data Analytics para aplicativos SQL:

1. A partir de **1º de setembro de 2025,** não forneceremos nenhuma correção de bug para aplicativos do Amazon Kinesis Data Analytics para SQL porque teremos suporte limitado para ele, devido à próxima descontinuação.

2. A partir **de 15 de outubro de 2025,** você não poderá criar novos aplicativos Kinesis Data Analytics para SQL.

3. Excluiremos as aplicações a partir de **27 de janeiro de 2026**. Você não poderá mais iniciar nem operar as aplicações do Amazon Kinesis Data Analytics para SQL. A partir dessa data, não haverá mais suporte ao Amazon Kinesis Data Analytics para SQL. Para obter mais informações, consulte [Descontinuação de aplicações do Amazon Kinesis Data Analytics para SQL](discontinuation.md).

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

# Configuração da saída do aplicativo
<a name="how-it-works-output"></a>



No código do aplicativo, você grava a saída das instruções SQL em um ou mais fluxos no aplicativo. Opcionalmente, você pode adicionar uma configuração de saída ao seu aplicativo para manter tudo gravado em um stream no aplicativo em um destino externo, como um stream de dados do Amazon Kinesis, um stream de entrega do Firehose ou uma função. AWS Lambda 

Há um limite para o número de destinos externos que você pode usar para manter uma saída de aplicativo. Para obter mais informações, consulte [Limites](limits.md). 

**nota**  
É recomendável que você use um destino externo no qual manterá os dados do fluxo de erros de aplicativo, para que você possa investigar os erros. 



Em cada uma dessas configurações de saída, você fornece o seguinte:
+ **Nome do fluxo de aplicativo** – O fluxo que você deseja manter em um destino externo. 

  O Kinesis Data Analytics busca o fluxo no aplicativo especificado na configuração de saída. (O nome do stream diferencia maiúsculas de minúsculas e deve corresponder exatamente.) Certifique-se de que o código do aplicativo crie esse fluxo no aplicativo. 
+ **Destino externo**: você pode manter os dados em um fluxo de dados do Kinesis, em um fluxo de entrega do Firehose ou em uma função do Lambda. Você fornece o Amazon Resource Name (ARN) do stream ou da função. Forneça também um perfil do IAM que o Kinesis Data Analytics possa assumir para gravar no fluxo ou na função em seu nome. Descreva o formato do registro (JSON, CSV) para que o Kinesis Data Analytics use durante a gravação no destino externo.

Se o serviço do Kinesis Data Analytics não conseguir gravar no destino de streaming ou do Lambda, ele continuará tentando por tempo indeterminado. Isso cria uma pressão contrária, fazendo com que o aplicativo fique para trás. Se isso problema não for resolvido, o aplicativo acabará interrompendo o processamento de novos dados. Você pode monitorar as [métricas do Kinesis Data Analytics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aka-metricscollected.html) e definir alarmes para falhas. Para obter mais informações sobre métricas e alarmes, consulte [Usando CloudWatch métricas da Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) e [Criação de CloudWatch alarmes da Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html).

Você pode configurar a saída do aplicativo usando o Console de gerenciamento da AWS. O console faz com que a chamada de API salve a configuração. 

## Criando uma saída usando o AWS CLI
<a name="how-it-works-output-cli"></a>

Esta seção descreve como criar a seção `Outputs` do corpo de uma solicitação para uma operação `CreateApplication` ou `AddApplicationOutput`.

### Criação de uma saída do Kinesis Stream
<a name="how-it-works-output-cli-streams"></a>

O fragmento JSON a seguir mostra a seção `Outputs` no corpo da solicitação de `CreateApplication` para a criação de um destino de fluxo de dados do Amazon Kinesis.

```
"Outputs": [
   {
       "DestinationSchema": {
           "RecordFormatType": "string"
       },
       "KinesisStreamsOutput": {
           "ResourceARN": "string",
           "RoleARN": "string"
       },
       "Name": "string"
   }
 
]
```

### Criar uma saída de fluxo de entrega do Firehose
<a name="how-it-works-output-cli-firehose"></a>

O fragmento JSON a seguir mostra a seção `Outputs` no corpo da solicitação `CreateApplication` para a criação de um destino de fluxo de entrega do Amazon Data Firehose.

```
"Outputs": [
   {
       "DestinationSchema": {
           "RecordFormatType": "string"
       },
       "KinesisFirehoseOutput": {
           "ResourceARN": "string",
           "RoleARN": "string"
       },
       "Name": "string"
   }
]
```

### Criação de saída de uma função do Lambda
<a name="how-it-works-output-cli-lambda"></a>

O fragmento JSON a seguir mostra a `Outputs` seção no corpo da `CreateApplication` solicitação para criar um destino de AWS Lambda função.

```
"Outputs": [
   {
       "DestinationSchema": {
           "RecordFormatType": "string"
       },
       "LambdaOutput": {
           "ResourceARN": "string",
           "RoleARN": "string"
       },
       "Name": "string"
   }
]
```

# Como usar a função do Lambda como saída
<a name="how-it-works-output-lambda"></a>

Usar AWS Lambda como destino permite que você realize mais facilmente o pós-processamento de seus resultados de SQL antes de enviá-los para um destino final. Algumas tarefas comuns de pós-processamento são:
+ Agregação de várias linhas em um único registro
+ Combinação de resultados atuais com resultados passados para o tratamento de dados retardatários
+ Entrega em destinos diferentes com base no tipo de informações
+ Conversão do formato de registros (como a conversão para Protobuf)
+ Manipulação ou transformação de strings
+ Enriquecimento de dados após o processamento analítico
+ Processamento personalizado para casos de uso geoespacial
+ Criptografia de dados

As funções Lambda podem fornecer informações analíticas para uma variedade de AWS serviços e outros destinos, incluindo os seguintes:
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)
+ Personalizado APIs
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/)
+ [Amazon Aurora](http://aurora.apache.org/)
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/)
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/)
+ [Amazon Simple Queue Service (Amazon SQS)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/)
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/)

Para obter mais informações sobre como criar aplicativos do Lambda, consulte [Conceitos básicos do AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html).

**Topics**
+ [Permissões para o Lambda como saída](#how-it-works-output-lambda-perms)
+ [Lambda como métrica de saída](#how-it-works-output-lambda-metrics)
+ [Modelo de dados de entrada de eventos de saída do Lambda e modelo de resposta de registros](#how-it-works-output-lambda-model)
+ [Frequência de invocação de saída do Lambda](#how-it-works-output-lambda-frequency)
+ [Adição de uma função do Lambda para usar como uma saída](#how-it-works-output-lambda-procedure)
+ [Falhas comuns de Lambda como saída](#how-it-works-output-lambda-troubleshooting)
+ [Como criar funções do Lambda para destinos de aplicativos](how-it-works-output-lambda-functions.md)

## Permissões para o Lambda como saída
<a name="how-it-works-output-lambda-perms"></a>

Para usar o Lambda como saída, o perfil do IAM de saída do Lambda do aplicativo requer a seguinte política de permissões:

```
{
   "Sid": "UseLambdaFunction",
   "Effect": "Allow",
   "Action": [
       "lambda:InvokeFunction",
       "lambda:GetFunctionConfiguration"
   ],
   "Resource": "FunctionARN"
}
```

## Lambda como métrica de saída
<a name="how-it-works-output-lambda-metrics"></a>

Você usa CloudWatch a Amazon para monitorar o número de bytes enviados, sucessos e falhas, e assim por diante. [Para obter informações sobre CloudWatch métricas emitidas pelo Kinesis Data Analytics usando o Lambda como saída, consulte Métricas do Amazon Kinesis Analytics.](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aka-metricscollected.html)

## Modelo de dados de entrada de eventos de saída do Lambda e modelo de resposta de registros
<a name="how-it-works-output-lambda-model"></a>

Para enviar registros de saída do Kinesis Data Analytics, sua função do Lambda precisa ser compatível com os modelos de dados de entrada de eventos e modelos de resposta de registros exigidos. 

### Modelo de dados de entrada de eventos
<a name="how-it-works-output-lambda-model-request"></a>

O Kinesis Data Analytics envia continuamente os registros de saída do aplicativo para o Lambda como uma função de saída com o seguinte modelo de solicitação. Dentro da função, você percorre a lista e aplica a lógica de negócios para cumprir os requisitos de saída (como a transformação dos dados antes de enviá-los para um destino final).


| Campo | Description | 
| --- | --- | 
| Campo | Description | 
| --- | --- | 
| Campo | Description | 
| --- | --- | 
| invocationId | ID de invocação do Lambda (GUID aleatório) | 
| applicationArn | O nome do recurso da Amazon (ARN) do aplicativo Kinesis Data Analytics | 
| registros [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/kinesisanalytics/latest/dev/how-it-works-output-lambda.html)  | 
| recordId | ID de registro (GUID aleatório) | 
| lambdaDeliveryRecordMetadata |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/kinesisanalytics/latest/dev/how-it-works-output-lambda.html)  | 
| dados | Carga útil de registros de saída codificada em Base64 | 
| retryHint | Número de novas tentativas de entrega | 

**nota**  
O `retryHint` é um valor que aumenta a cada falha de entrega. Esse valor não é mantido permanentemente, e será redefinido se o aplicativo for interrompido.

### Modelo de resposta de registros
<a name="how-it-works-output-lambda-model-response"></a>

Cada registro enviado ao seu Lambda como uma função de saída (com registro IDs) deve ser confirmado com um `Ok` ou `DeliveryFailed` e deve conter os seguintes parâmetros. Caso contrário, o Kinesis Data Analytics os tratará como uma falha de entrega.


| Campo | Description | 
| --- | --- | 
| registros [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/kinesisanalytics/latest/dev/how-it-works-output-lambda.html)  | 
| recordId | O ID do registro é transmitido do Kinesis Data Analytics para o Lambda durante a invocação. Qualquer discrepância entre o ID do registro original e o ID do registro reconhecido é considerada como uma falha de entrega. | 
| result | O status da entrega do registro. Os valores possíveis são: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/kinesisanalytics/latest/dev/how-it-works-output-lambda.html)  | 

## Frequência de invocação de saída do Lambda
<a name="how-it-works-output-lambda-frequency"></a>

Um aplicativo Kinesis Data Analytics armazena os registros de saída em buffers e invoca a função de destino do AWS Lambda com frequência.
+ Se os registros forem emitidos para o fluxo de destino no aplicativo de análise de dados como uma janela suspensa, a função de AWS Lambda destino será invocada por gatilho da janela intermitente. Por exemplo, se uma janela em cascata de 60 segundos é usada para emitir os registros para o fluxo no aplicativo de destino, a função do Lambda é invocada uma vez a cada 60 segundos.
+ Se os registros são emitidos para o fluxo no aplicativo de destino dentro do aplicativo como uma consulta contínua ou uma janela deslizante, a função de destino do Lambda é invocada aproximadamente uma vez por segundo.

**nota**  
[Os limites de tamanho da carga de solicitação por cada invocação da função do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/limits.html) se aplicam. Exceder esses limites resulta em registros de saída divididos e enviados em várias chamadas da função do Lambda.

## Adição de uma função do Lambda para usar como uma saída
<a name="how-it-works-output-lambda-procedure"></a>

O procedimento a seguir demonstra como adicionar uma função do Lambda como saída em um aplicativo Kinesis Data Analytics.

1. [Faça login Console de gerenciamento da AWS e abra o console do Managed Service for Apache Flink em https://console.aws.amazon.com /kinesisanalytics.](https://console.aws.amazon.com/kinesisanalytics)

1. Escolha o aplicativo na lista e, em seguida, escolha **Application details**.

1. Na seção **Destination**, escolha **Connect new destination**.

1. Para o item **Destination (Destino)**, escolha ** Function (Função do)AWS Lambda **.

1. Na seção **Entregar registros para AWS Lambda**, escolha uma função e versão existentes do Lambda ou selecione **Criar novo**.

1. Se você estiver criando uma nova função do Lambda, faça o seguinte:

   1. Escolha um dos modelos fornecidos. Para obter mais informações, [Como criar funções do Lambda para destinos de aplicativos](how-it-works-output-lambda-functions.md).

   1. A página **Create Function** (Criar função) é aberta em uma nova guia do navegador. Na caixa **Name (Nome)**, atribua um nome significativo à função (por exemplo, **myLambdaFunction**).

   1. Atualize o modelo com a funcionalidade de pós-processamento para o seu aplicativo. Para obter informações sobre como criar uma função do Lambda, consulte [Conceitos básicos](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) no * Guia do desenvolvedor do AWS Lambda *.

   1. No console do Kinesis Data Analytics, na lista de **funções do Lambda**, escolha a função do Lambda que você acabou de criar. Selecione **\$1LATEST** para a versão da função do Lambda.

1. Na seção **In-application stream**, escolha **Choose an existing in-application stream**. Em **In-application stream name**, escolha o fluxo de saída do seu aplicativo. Os resultados do fluxo de saída selecionado são enviadas para a função de saída do Lambda.

1. Deixe o restante do formulário com os valores padrão e escolha **Save and continue**.

O aplicativo agora envia registros do fluxo do aplicativo para a sua função do Lambda. Você pode ver os resultados do modelo padrão no CloudWatch console da Amazon. Monitore a métrica `AWS/KinesisAnalytics/LambdaDelivery.OkRecords` para ver o número de registros que estão sendo entregues à função do Lambda.

## Falhas comuns de Lambda como saída
<a name="how-it-works-output-lambda-troubleshooting"></a>

Veja a seguir os motivos comuns pelos quais a entrega a uma função do Lambda pode falhar.
+ Nem todos os registros (com registro IDs) em um lote que são enviados para a função Lambda são retornados ao serviço Kinesis Data Analytics. 
+ A resposta não tem o ID do registro ou o campo de status. 
+ Os tempos limite da função do Lambda não são suficientes para executar a lógica de negócios na função do Lambda.
+ A lógica de negócios da função do Lambda não detecta todos os erros, o que resulta na extrapolação do tempo limite e em uma pressão contrária devido à ocorrência de exceções não processadas. Essas são geralmente conhecidas como mensagens "poison pill".

Para falhas de entrega, o Kinesis Data Analytics continua a fazer novas tentativas de invocação do Lambda para o mesmo conjunto de registros até que tenha êxito. Para obter informações sobre falhas, você pode monitorar as seguintes CloudWatch métricas: 
+ Lambda do aplicativo Kinesis Data Analytics como métricas CloudWatch de saída: indica o número de sucessos e falhas, entre outras estatísticas. Para obter mais informações, consulte [Métricas do Amazon Kinesis Analytics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aka-metricscollected.html).
+ AWS Lambda CloudWatch métricas e registros de funções.

# Como criar funções do Lambda para destinos de aplicativos
<a name="how-it-works-output-lambda-functions"></a>

Seu aplicativo Kinesis Data Analytics pode AWS Lambda usar funções como saída. O Kinesis Data Analytics fornece modelos para a criação de funções do Lambda a serem usadas como um destino para seus aplicativos. Use esses modelos como ponto de partida para o pós-processamento da saída de seu aplicativo. 

**Topics**
+ [Criar uma função do Lambda de destino em Node.js](#how-it-works-lambda-dest-nodejs)
+ [Criar uma função do Lambda de destino em Python](#how-it-works-lambda-dest-python)
+ [Criar uma função do Lambda de destino em Java](#how-it-works-lambda-dest-java)
+ [Criar uma função do Lambda de destino em .NET](#how-it-works-lambda-net)

## Criar uma função do Lambda de destino em Node.js
<a name="how-it-works-lambda-dest-nodejs"></a>

O modelo a seguir para criar uma função do Lambda de destino em Node.js está disponível no console:


| Lambda como esquema de saída | Linguagem e versão | Description | 
| --- | --- | --- | 
| kinesis-analytics-output | Node.js 12.x | Entrega registros de saída de um aplicativo do Kinesis Data Analytics em um destino personalizado. | 

## Criar uma função do Lambda de destino em Python
<a name="how-it-works-lambda-dest-python"></a>

Os modelos a seguir para criar uma função do Lambda de destino em Python estão disponíveis no console:


| Lambda como esquema de saída | Linguagem e versão | Description | 
| --- | --- | --- | 
| kinesis-analytics-output-sns | Python 2.7 | Entrega registros de saída de um aplicativo Kinesis Data Analytics para o Amazon SNS. | 
| kinesis-analytics-output-ddb | Python 2.7 | Entrega registros de saída de um aplicativo Kinesis Data Analytics para o Amazon DynamoDB. | 

## Criar uma função do Lambda de destino em Java
<a name="how-it-works-lambda-dest-java"></a>

Para criar uma função do Lambda de destino em Java, use as classes de [Eventos Java](https://github.com/aws/aws-lambda-java-libs/tree/master/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events).

O código a seguir demonstra um exemplo de função do Lambda de destino usando Java:

```
public class LambdaFunctionHandler
        implements RequestHandler<KinesisAnalyticsOutputDeliveryEvent, KinesisAnalyticsOutputDeliveryResponse> {

    @Override
    public KinesisAnalyticsOutputDeliveryResponse handleRequest(KinesisAnalyticsOutputDeliveryEvent event,
            Context context) {
        context.getLogger().log("InvocatonId is : " + event.invocationId);
        context.getLogger().log("ApplicationArn is : " + event.applicationArn);

        List<KinesisAnalyticsOutputDeliveryResponse.Record> records = new ArrayList<KinesisAnalyticsOutputDeliveryResponse.Record>();
        KinesisAnalyticsOutputDeliveryResponse response = new KinesisAnalyticsOutputDeliveryResponse(records);

        event.records.stream().forEach(record -> {
            context.getLogger().log("recordId is : " + record.recordId);
            context.getLogger().log("record retryHint is :" + record.lambdaDeliveryRecordMetadata.retryHint);
            // Add logic here to transform and send the record to final destination of your choice.
            response.records.add(new Record(record.recordId, KinesisAnalyticsOutputDeliveryResponse.Result.Ok));
        });
        return response;
    }

}
```

## Criar uma função do Lambda de destino em .NET
<a name="how-it-works-lambda-net"></a>

Para criar uma função do Lambda de destino em .NET, use as classes de [eventos .NET](https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src/Amazon.Lambda.KinesisAnalyticsEvents).

O código a seguir demonstra um exemplo de função do Lambda de destino usando C\$1:

```
public class Function
    {
        public KinesisAnalyticsOutputDeliveryResponse FunctionHandler(KinesisAnalyticsOutputDeliveryEvent evnt, ILambdaContext context)
        {
            context.Logger.LogLine($"InvocationId: {evnt.InvocationId}");
            context.Logger.LogLine($"ApplicationArn: {evnt.ApplicationArn}");

            var response = new KinesisAnalyticsOutputDeliveryResponse
            {
                Records = new List<KinesisAnalyticsOutputDeliveryResponse.Record>()
            };

            foreach (var record in evnt.Records)
            {
                context.Logger.LogLine($"\tRecordId: {record.RecordId}");
                context.Logger.LogLine($"\tRetryHint: {record.RecordMetadata.RetryHint}");
                context.Logger.LogLine($"\tData: {record.DecodeData()}");

                // Add logic here to send to the record to final destination of your choice.

                var deliveredRecord = new KinesisAnalyticsOutputDeliveryResponse.Record
                {
                    RecordId = record.RecordId,
                    Result = KinesisAnalyticsOutputDeliveryResponse.OK
                };
                response.Records.Add(deliveredRecord);
            }
            return response;
        }
    }
```

Para obter mais informações sobre como criar funções do Lambda para pré-processamento e destinos em .NET, consulte [https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src/Amazon.Lambda.KinesisAnalyticsEvents](https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src/Amazon.Lambda.KinesisAnalyticsEvents).

# Modelo de entrega para manter a saída do aplicativo em um destino externo
<a name="failover-checkpoint"></a>

O Amazon Kinesis Data Analytics usa o modelo de entrega "ao menos uma vez" para a saída de aplicativo nos destinos configurados. Quando um aplicativo está em execução, o Kinesis Data Analytics usa pontos de verificação internos. Esses pontos de verificação são momentos específicos nos quais os registros de saída foram entregues aos destinos sem perda de dados. O serviço usa os pontos de verificação, conforme forem necessários, para garantir que a saída do seu aplicativo seja entregue pelo menos uma vez aos destinos configurados.

Em uma situação normal, seu aplicativo processa os dados recebidos continuamente. O Kinesis Data Analytics grava a saída nos destinos configurados, como um fluxo de dados do Kinesis ou um fluxo de entrega do Firehose. No entanto, o aplicativo pode ser interrompido ocasionalmente; por exemplo:
+ Você opta por interromper o aplicativo e reiniciá-lo mais tarde.
+ Você exclui a função do perfil do IAM de que o Kinesis Data Analytics precisa para gravar a saída do aplicativo no destino configurado. Sem a função do perfil do IAM, o Kinesis Data Analytics não tem permissões para gravar conteúdo no destino externo em seu nome.
+ Uma falha da rede ou outra falha de serviço interna faz com que a execução do aplicativo seja interrompida momentaneamente. 

Quando o aplicativo for reiniciado, o Kinesis Data Analytics garantirá que ele continuará processando e gravando a saída de um ponto anterior ou igual ao momento em que a falha ocorreu. Isso ajuda a garantir que ele não perderá a entrega de qualquer saída do aplicativo para os destinos configurados. 

Suponha que você tenha configurado vários destinos do mesmo fluxo de aplicativo. Depois que o aplicativo se recuperar da falha, o Kinesis Data Analytics continuará mantendo a saída nos destinos configurados a partir do último registro entregue no destino mais lento. Isso pode fazer com que o mesmo registro de saída seja entregue mais de uma vez nos outros destinos. Nesse caso, você deverá lidar com as duplicações potenciais no destino externamente. 