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á.
É possível usar o EventBridge Pipes para receber registros de um agente de mensagens do Amazon SQS. Opcionalmente, é possível filtrar ou aprimorar esses registros antes de enviá-los para um destino disponível para processamento.
É possível usar um pipe para processar mensagens em uma fila do Amazon Simple Queue Service (Amazon SQS). O EventBridge Pipes é compatível com filas padrão e filas de primeiro a chegar, primeiro a sair (FIFO). Com o Amazon SQS, você pode descarregar tarefas de um componente do aplicativo enviando-as a uma fila e processando-as de forma assíncrona.
O EventBridge sonda a fila e invoca seu pipe de forma síncrona com um evento que contém mensagens da fila. O EventBridge lê mensagens em lotes e invoca seu pipe uma vez para cada lote. Quando sua função processa com êxito um lote, o EventBridge exclui suas mensagens da fila.
Por padrão, o EventBridge pesquisará até dez mensagens em sua fila simultaneamente e envia esse lote para seu pipe. 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 lote. Antes de invocar o pipe, o EventBridge continua a pesquisar mensagens da fila padrão do Amazon SQS até que uma dessas coisas ocorra:
A janela de lotes expira.
A cota de tamanho da carga útil de invocação foi atingida.
O tamanho máximo do lote configurado foi atingido.
nota
Se estiver usando uma janela em lote e sua fila do Amazon SQS contiver um volume baixo de tráfego, o EventBridge poderá esperar até 20 segundos antes de invocar sua função. Isto será válido mesmo se definir uma janela de lote inferior a 20 segundos. Para as filas FIFO, os registros contêm atributos adicionais relacionados a desduplicação e sequenciamento.
Quando o EventBridge faz a leitura de um lote, as mensagens permanecem na fila, mas são ocultadas durante o tempo limite de visibilidade da fila. Se seu pipe processar com êxito um lote, o EventBridge excluirá as mensagens da fila. Por padrão, se seu pipe se deparar com um erro durante o processamento de um lote, todas as mensagens naquele lote ficarão visíveis na fila novamente. Por conta disso, seu pipe deve ter a capacidade de processar a mesma mensagem várias vezes sem causar efeitos colaterais não intencionais. É possível modificar esse comportamento de reprocessamento incluindo falhas de item de lote na resposta do pipe. O exemplo a seguir mostra um evento para um lote de duas mensagens.
Eventos 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 EventBridge Pipes.
Fila padrão
[
{
"messageId": "059f36b4-87a3-44ab-83d2-661975830a7d",
"receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...",
"body": "Test message.",
"attributes": {
"ApproximateReceiveCount": "1",
"SentTimestamp": "1545082649183",
"SenderId": "AIDAIENQZJOLO23YVJ4VO",
"ApproximateFirstReceiveTimestamp": "1545082649185"
},
"messageAttributes": {},
"md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3",
"eventSource": "aws:sqs",
"eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:my-queue",
"awsRegion": "us-east-2"
},
{
"messageId": "2e1424d4-f796-459a-8184-9c92662be6da",
"receiptHandle": "AQEBzWwaftRI0KuVm4tP+/7q1rGgNqicHq...",
"body": "Test message.",
"attributes": {
"ApproximateReceiveCount": "1",
"SentTimestamp": "1545082650636",
"SenderId": "AIDAIENQZJOLO23YVJ4VO",
"ApproximateFirstReceiveTimestamp": "1545082650649"
},
"messageAttributes": {},
"md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3",
"eventSource": "aws:sqs",
"eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:my-queue",
"awsRegion": "us-east-2"
}
]
Fila FIFO
[
{
"messageId": "11d6ee51-4cc7-4302-9e22-7cd8afdaadf5",
"receiptHandle": "AQEBBX8nesZEXmkhsmZeyIE8iQAMig7qw...",
"body": "Test message.",
"attributes": {
"ApproximateReceiveCount": "1",
"SentTimestamp": "1573251510774",
"SequenceNumber": "18849496460467696128",
"MessageGroupId": "1",
"SenderId": "AIDAIO23YVJENQZJOL4VO",
"MessageDeduplicationId": "1",
"ApproximateFirstReceiveTimestamp": "1573251510774"
},
"messageAttributes": {},
"md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3",
"eventSource": "aws:sqs",
"eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:fifo.fifo",
"awsRegion": "us-east-2"
}
]
Escalabilidade e processamento
Para filas padrão, o EventBridge usa a sondagem longa para sondar uma fila até que ela se torne ativa. Quando mensagens estão disponíveis, o EventBridge faz a leitura de até cinco lotes e os envia ao seu pipe. Se ainda houver mensagens disponíveis, o EventBridge aumentará o número de processos de leitura de lotes em até 300 instâncias a mais por minuto. O número máximo de lotes que um pipe pode processar simultaneamente é mil.
Em filas FIFO, o EventBridge envia mensagens para o seu lote na ordem em que as recebe. Ao enviar uma mensagem para uma fila do FIFO, você especifica umID do grupo de mensagens. O Amazon SQS facilita a entrega de mensagens no mesmo grupo para o EventBridge, em ordem. O EventBridge classifica as mensagens recebidas em grupos e envia apenas um lote de cada vez para um grupo. Se seu pipe retornar um erro, ele fará todas as tentativas possíveis nas mensagens afetadas antes que o EventBridge receba mensagens adicionais do mesmo grupo.
Como configurar uma fila a ser usada com o EventBridge Pipes
Crie uma fila do Amazon SQS para servir como uma origem para seu pipe. Depois, configure a fila para permitir que a sua função do Lambda processe cada lote de eventos e que o EventBridge tentar novamente em resposta a erros de controle de utilização à medida que aumenta a escala verticalmente.
Para permitir que o pipe tenha tempo para processar cada lote de registros, defina o tempo limite de visibilidade da fila de origem para pelo menos seis vezes o runtime combinado do enriquecimento do pipe e dos componentes de destino. O tempo extra permite que o EventBridge repita o processo se seu pope for limitado durante o processamento de um lote anterior.
Se a sua função não conseguir processar uma mensagem várias vezes, o Amazon SQS poderá enviá-la para uma fila de mensagens não entregues. Quando seu pipe retorna um erro, o EventBridge a mantém na fila. Depois que o tempo limite de visibilidade ocorrer, o EventBridge recebe a mensagem novamente. Para enviar mensagens para uma segunda fila após vários recebimentos, configure uma fila de mensagens mortas na fila de origem.
nota
Certifique-se de configurar a fila de mensagens não entregues na fila de origem, e não no pipe. A fila de mensagens não entregues configurada em uma função é usada para a fila de invocação assíncrona da função, e não para filas de origem de evento.
Se seu pipe retornar um erro ou não puder ser invocada porque está na simultaneidade máxima, o processamento poderá ter êxito com tentativas adicionais. Para que as mensagens tenham mais chances de serem processadas antes de serem enviadas para a fila de mensagens não entregues, defina a maxReceiveCount
na política de redirecionamento da fila de origem como pelo menos 5.
Gerar relatórios de falhas de itens de lote
Quando o EventBridge consome e processa dados de streaming de uma origem, ele definirá checkpoints por padrão no número mais elevado na sequência de um lote, mas somente quando o lote tiver êxito total. 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 retornar qualquer um dos seguintes, o EventBridge tratará um lote como um êxito total:
Uma lista de
batchItemFailure
vaziaUma lista de
batchItemFailure
nulaUma
EventResponse
vaziaUma
EventResponse
nula
Se retornar qualquer um dos seguintes, o EventBridge tratará um lote como uma falha total:
Uma string
itemIdentifier
vaziaUma
itemIdentifier
nulaUm
itemIdentifier
com um nome de chave inválido
O EventBridge faz novas tentativas após falhas com base na sua estratégia de repetição.