Stream do Amazon Kinesis como fonte para Pipes EventBridge - Amazon EventBridge

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

Stream do Amazon Kinesis como fonte para Pipes EventBridge

Você pode usar o EventBridge Pipes para receber registros em um stream de dados do Kinesis. Opcionalmente, é possível filtrar ou aprimorar esses registros antes de enviá-los para um dos destinos disponíveis para processamento. Há configurações específicas do Kinesis que podem ser escolhidas ao configurar um pipe. EventBridge O Pipes mantém a ordem dos registros do fluxo de dados ao enviar esses dados para o destino.

Uma transmissão de dados do Kinesis é um conjunto de fragmentos. Cada fragmento contém uma sequência de registros de dados. Um consumidor é um aplicativo que processa os dados de um stream de dados do Kinesis. Você pode mapear um EventBridge Pipe para um consumidor de taxa de transferência compartilhada (iterador padrão) ou para um consumidor de taxa de transferência dedicada com distribuição aprimorada.

Para iteradores padrão, EventBridge usa o HTTP protocolo para pesquisar cada fragmento em seu stream do Kinesis em busca de registros. O pipe compartilha o throughput de leitura com outros consumidores do fragmento.

Para minimizar a latência e maximizar o throughput de leitura, é possível criar um consumidor de fluxo de dados com distribuição avançada. Os consumidores de fluxo obtêm uma conexão dedicada para cada estilhaço que não afeta outros aplicativos que fazem leitura do fluxo. O throughput dedicado pode ajudar se você tiver muitos aplicativos lendo os mesmos dados, ou se você estiver reprocessando um fluxo com grandes registros. O Kinesis eleva os recordes para mais de /2. EventBridge HTTP Para obter detalhes sobre fluxos de dados do Kinesis, consulte Como ler dados do Amazon Kinesis Data Streams.

Evento de exemplo

O exemplo de evento a seguir mostra as informações recebidas pelo pipe. É possível usar esse evento para criar e filtrar seus padrões de eventos ou para definir a transformação de entrada. Nem todos os campos podem ser filtrados. Para mais informações sobre quais campos podem ser filtrados, consulte Filtragem de eventos no Amazon Pipes EventBridge .

[ { "kinesisSchemaVersion": "1.0", "partitionKey": "1", "sequenceNumber": "49590338271490256608559692538361571095921575989136588898", "data": "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==", "approximateArrivalTimestamp": 1545084650.987 "eventSource": "aws:kinesis", "eventVersion": "1.0", "eventID": "shardId-000000000006:49590338271490256608559692538361571095921575989136588898", "eventName": "aws:kinesis:record", "invokeIdentityArn": "arn:aws:iam::123456789012:role/lambda-role", "awsRegion": "us-east-2", "eventSourceARN": "arn:aws:kinesis:us-east-2:123456789012:stream/lambda-stream" }, { "kinesisSchemaVersion": "1.0", "partitionKey": "1", "sequenceNumber": "49590338271490256608559692540925702759324208523137515618", "data": "VGhpcyBpcyBvbmx5IGEgdGVzdC4=", "approximateArrivalTimestamp": 1545084711.166 "eventSource": "aws:kinesis", "eventVersion": "1.0", "eventID": "shardId-000000000006:49590338271490256608559692540925702759324208523137515618", "eventName": "aws:kinesis:record", "invokeIdentityArn": "arn:aws:iam::123456789012:role/lambda-role", "awsRegion": "us-east-2", "eventSourceARN": "arn:aws:kinesis:us-east-2:123456789012:stream/lambda-stream" } ]

Fluxos de sondagem e agrupamento em lotes

EventBridge pesquisa fragmentos em seu stream do Kinesis para obter registros a uma taxa básica de quatro vezes por segundo. Quando os registros estão disponíveis, EventBridge processa o evento e aguarda o resultado. Se o processamento for bem-sucedido, EventBridge retomará a pesquisa até receber mais registros.

Por padrão, EventBridge invoca seu pipe assim que os registros estiverem disponíveis. Se o lote EventBridge lido da fonte tiver somente um registro, somente um evento será processado. Para evitar invocar a função com um número pequeno de registros, você pode instruir à origem dos eventos para fazer o buffer dos registros por até cinco minutos, configurando uma janela de processamento de lotes. Antes de processar os eventos, EventBridge continua lendo os registros da fonte até reunir um lote completo, a janela de agrupamento expirar ou o lote atingir o limite de carga útil de 6 MB.

Você também pode aumentar a simultaneidade processando vários lotes de cada fragmento em paralelo. EventBridge pode processar até 10 lotes em cada fragmento simultaneamente. Se você aumentar o número de lotes simultâneos por fragmento, EventBridge ainda garante o processamento em ordem no nível da chave de partição.

Configure a configuração ParallelizationFactor para processar um fragmento de um fluxo de dados do Kinesis ou do DynamoDB com mais de uma execução do pipe simultaneamente. Você pode especificar o número de lotes simultâneos que são EventBridge pesquisados a partir de um fragmento por meio de um fator de paralelização de 1 (padrão) a 10. Por exemplo, quando você define como ParallelizationFactor 2, você pode ter 200 execuções simultâneas de EventBridge Pipe no máximo para processar 100 fragmentos de dados do Kinesis. Isso ajuda a aumentar o throughput de processamento quando o volume de dados é volátil e o valor de IteratorAge é alto. Observe que o fator de paralelização não funcionará se você estiver usando a agregação do Kinesis.

Posição inicial de sondagem e fluxo

Esteja ciente de que a origem de fluxo durante a criação e as atualizações de pipes é, finamente, consistente.

  • Durante a criação do pipe, pode levar alguns minutos para a sondagem de eventos do fluxo iniciar.

  • Durante as atualizações de pipe para a configuração de sondagem de origem, pode levar alguns minutos para interromper e reiniciar a sondagem de eventos do fluxo.

Este comportamento significa que, se especificar LATEST como posição inicial do fluxo, o mapeamento da origem do evento poderá perder eventos durante a criação ou as atualizações. Para garantir que nenhum evento seja perdido, especifique a posição inicial do fluxo como TRIM_HORIZON ou AT_TIMESTAMP.

Gerar relatórios de falhas de itens de lote

Quando EventBridge consome e processa dados de streaming de uma fonte, por padrão, ele aponta para o número de sequência mais alto de um lote, mas somente quando o lote é totalmente bem-sucedido. Para evitar o reprocessamento de todas as mensagens processadas com êxito em um lote com falha, é possível configurar o enriquecimento ou o destino para retornar um objeto indicando quais mensagens tiveram êxito e quais falharam. Isso se chama resposta parcial em lote.

Para ter mais informações, consulte Lote com falha parcial.

Condições de sucesso e falha

Se você retornar qualquer um dos itens a seguir, EventBridge tratará um lote como um sucesso total:

  • Uma lista de batchItemFailure vazia

  • Uma lista de batchItemFailure nula

  • Uma EventResponse vazia

  • Uma EventResponse nula

Se você retornar qualquer um dos itens a seguir, EventBridge tratará um lote como uma falha completa:

  • Uma string itemIdentifier vazia

  • Uma itemIdentifier nula

  • Um itemIdentifier com um nome de chave inválido

EventBridge repete as falhas com base em sua estratégia de repetição.