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.