Stream do Amazon DynamoDB 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 DynamoDB como fonte para Pipes EventBridge

Você pode usar o EventBridge Pipes para receber registros em um stream do DynamoDB. Opcionalmente, é possível filtrar ou aprimorar esses registros antes de enviá-los para um destino para processamento. Há configurações específicas para o Amazon DynamoDB Streams que você pode escolher ao configurar o canal. EventBridge O Pipes mantém a ordem dos registros do fluxo de dados ao enviar esses dados para o destino.

Importante

A desativação de um fluxo do DynamoDB que é a origem de um pipe faz com que este pipe se torne inutilizável, mesmo que você habilite o fluxo novamente. Isto pode acontecer porque:

  • Não é possível interromper, iniciar ou atualizar um pipe cuja origem está desativada.

  • Não é possível atualizar um pipe com uma nova origem após a criação. Quando você reativa um stream do DynamoDB, esse stream recebe um novo Amazon Resource Name ARN () e não está mais associado ao seu canal.

Se você reativar o stream do DynamoDB, precisará criar um novo canal usando o novo stream. ARN

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 .

[ { "eventID": "1", "eventVersion": "1.0", "dynamodb": { "Keys": { "Id": { "N": "101" } }, "NewImage": { "Message": { "S": "New item!" }, "Id": { "N": "101" } }, "StreamViewType": "NEW_AND_OLD_IMAGES", "SequenceNumber": "111", "SizeBytes": 26 }, "awsRegion": "us-west-2", "eventName": "INSERT", "eventSourceARN": "arn:aws:dynamodb:us-east-1:111122223333:table/EventSourceTable", "eventSource": "aws:dynamodb" }, { "eventID": "2", "eventVersion": "1.0", "dynamodb": { "OldImage": { "Message": { "S": "New item!" }, "Id": { "N": "101" } }, "SequenceNumber": "222", "Keys": { "Id": { "N": "101" } }, "SizeBytes": 59, "NewImage": { "Message": { "S": "This item has changed" }, "Id": { "N": "101" } }, "StreamViewType": "NEW_AND_OLD_IMAGES" }, "awsRegion": "us-west-2", "eventName": "MODIFY", "eventSourceARN": "arn:aws:dynamodb:us-east-1:111122223333:table/EventSourceTable", "eventSource": "aws:dynamodb" } ]

Fluxos de sondagem e agrupamento em lotes

EventBridge pesquisa fragmentos em seu stream do DynamoDB para 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.

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.