

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

# 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).