Processamento de lotes e simultaneidade do Amazon EventBridge Pipes - Amazon EventBridge

Processamento de lotes e simultaneidade do Amazon EventBridge Pipes

Comportamento de lotes

O EventBridge Pipes é compatível com o processamento de lotes desde a origem até os destinos que sejam compatíveis com ele. Além disso, o processamento de lotes para enriquecimento é compatível para AWS Lambda e AWS Step Functions. Como serviços diferentes oferecem suporte a diferentes níveis de processamento de lotes, não é possível configurar um pipe com um tamanho de lote maior do que o suporte de destino. Por exemplo, as origens de fluxo do Amazon Kinesis são compatíveis com um tamanho máximo de lote de 10.000 registros, mas o Amazon Simple Queue Service é compatível com um máximo de dez mensagens por lote como destino. Portanto, um pipe de um fluxo do Kinesis para uma fila do Amazon SQS pode ter um tamanho máximo de lote configurado na origem de 10.

Se configurar um pipe com um enriquecimento ou destino que seja compatível com o processamento de lotes, não será possível ativar o processamento de lotes na origem.

Quando o processamento de lotes é ativado na origem, matrizes de registros JSON são passadas pelo pipe e mapeadas para a API de lote de um enriquecimento ou destino compatível. Os transformadores de entrada são aplicados separadamente em cada registro JSON individual na matriz, não na matriz como um todo. Para obter exemplos dessas matrizes, consulte Origens do Amazon EventBridge Pipes e selecione uma origem específica. O Pipes usará a API em lote para o enriquecimento ou destino compatível, mesmo que o tamanho do lote seja 1. Se o enriquecimento ou o destino não tiver uma API em lote, mas receber cargas JSON completas, como Lambda e Step Functions, toda a matriz JSON será enviada em uma única solicitação. A solicitação será enviada como uma matriz JSON, mesmo que o tamanho do lote seja 1.

Se um pipe estiver configurado para o processamento de lotes na origem e o destino for compatível com o processamento de lotes, será possível retornar uma matriz de itens JSON do seu enriquecimento. Esta matriz pode incluir uma matriz menor ou maior do que a origem original. No entanto, se a matriz for maior que o tamanho do lote compatível com o destino, o pipe não invocará o destino.

Destinos de processamento de lotes compatíveis

Destino Tamanho máximo do lote
CloudWatch Logs 10.000
Barramento de eventos do EventBridge 10
Fluxo do Firehose 500
Fluxo do Kinesis 500
Função do Lambda definido pelo cliente
Máquina de estado do Step Functions definido pelo cliente
Tópico do Amazon SNS 10
Fila do Amazon SQS 10

Os seguintes enriquecimentos e destinos recebem a carga útil completa do evento do lote para processamento e são limitados pelo tamanho total da carga útil do evento, em vez do tamanho do lote:

  • Máquina de estado do Step Functions (262.144 caracteres)

  • Função do Lambda (6 MB)

Lote com falha parcial

Para o Amazon SQS e origens de fluxo, como Kinesis e DynamoDB, o EventBridge Pipes é compatível com o tratamento parcial de falhas em lote das falhas de destino. Se o destino for compatível com o processamento de lotes e somente parte do lote tiver êxito, o EventBridge automaticamente tentará processar em lotes o restante da carga útil. Para obter o conteúdo enriquecido mais atualizado, essa nova tentativa ocorre em todo o pipe, incluindo a reinvocação de qualquer enriquecimento configurado.

O tratamento de lotes com falha parcial do enriquecimento não é compatível.

Para destinos do Lambda e Step Functions, também é possível especificar uma falha parcial retornando uma carga com estrutura definida do destino. Isto indica eventos que precisam ser repetidos.

Exemplo de estrutura de carga útil com falha parcial

{ "batchItemFailures": [ { "itemIdentifier": "id2" }, { "itemIdentifier": "id4" } ]

No exemplo, itemIdentifier corresponde ao ID dos eventos manipulados pelo seu destino da origem original. No Amazon SQS, esse é o messageId. No Kinesis e no DynamoDB, este é o eventID. Para que o EventBridge Pipes gerencie adequadamente as falhas parciais de lote dos destinos, esses campos precisam ser incluídos em qualquer carga útil da matriz retornada pelo enriquecimento.

Comportamento de throughput e simultaneidade

Cada evento ou lote de eventos recebidos por um pipe que viaja até um enriquecimento ou destino é considerado como uma execução de pipe. Um pipe no estado STARTED pesquisa continuamente os eventos da origem, aumentando e diminuindo a escala dependendo da lista de pendências disponível e das configurações de processamento de lotes definidas.

Para cotas de execuções simultâneas de pipes e o número de pipes por conta e região, consulte Cotas do EventBridge Pipes.

Por padrão, um único pipe escalará para o seguinte máximo de execuções simultâneas, dependendo da origem:

  • DynamoDB: as execuções simultâneas podem subir até as ParallelizationFactor configuradas no pipe e multiplicadas pelo número de fragmentos no fluxo.

  • Apache Kafka: as execuções simultâneas podem aumentar o número de partições no tópico, até mil.

  • Kinesis: as execuções simultâneas podem subir tão alto quanto as ParallelizationFactor configuradas no pipe multiplicadas pelo número de fragmentos no fluxo.

  • Amazon MQ: 5

  • Amazon SQS: 1250

Se tiver requisitos para throughputs sondagem ou limites de simultaneidade máximos mais altos, entre em contato com o suporte.

nota

Os limites de execução são considerados limitações de segurança de melhor esforço. Embora a pesquisa não limitada abaixo desses valores, um pipe ou conta pode estourar mais do que esses valores recomendados.

As execuções de pipes são limitadas a um máximo de cinco minutos, incluindo o enriquecimento e o processamento de destino. Este limite não pode ser aumentado.

Os pipes com origens estritamente ordenadas, como filas FIFO do Amazon SQS, Kinesis e DynamoDB Streams ou tópicos do Apache Kafka) são ainda mais limitados em termos de simultaneidade pela configuração da origem, como o número de IDs de grupos de mensagens para filas FIFO ou o número de fragmentos para filas Kinesis. Como o pedido é estritamente garantido dentro dessas restrições, um pipe com uma origem ordenada não pode exceder esses limites de simultaneidade.