Amazon Simple Queue Service como fonte em 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á.

Amazon Simple Queue Service como fonte em Pipes EventBridge

Você pode usar o EventBridge Pipes para receber registros de uma SQS fila da Amazon. Opcionalmente, é possível filtrar ou aprimorar esses registros antes de enviá-los para um destino disponível para processamento.

Você pode usar um canal para processar mensagens em uma fila do Amazon Simple Queue Service (AmazonSQS). EventBridge Os Pipes suportam filas padrão e filas de primeira entrada e primeira saída () FIFO. Com a AmazonSQS, você pode descarregar tarefas de um componente do seu aplicativo enviando-as para uma fila e processando-as de forma assíncrona.

EventBridge pesquisa a fila e invoca seu canal de forma síncrona com um evento que contém mensagens da fila. EventBridge lê mensagens em lotes e invoca seu canal uma vez para cada lote. Quando seu pipe processa com sucesso um lote, EventBridge exclui suas mensagens da fila.

Por padrão, EventBridge pesquisa até 10 mensagens em sua fila simultaneamente e envia esse lote para o seu canal. 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, EventBridge continue pesquisando mensagens da fila SQS padrão da Amazon até que uma das seguintes 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 você estiver usando uma janela de lote e sua SQS fila da Amazon tiver pouco tráfego, EventBridge espere até 20 segundos antes de invocar seu pipe. Isto será válido mesmo se definir uma janela de lote inferior a 20 segundos. Para FIFO filas, os registros contêm atributos adicionais relacionados à desduplicação e ao sequenciamento.

Ao EventBridge ler um lote, as mensagens permanecem na fila, mas ficam ocultas durante o tempo limite de visibilidade da fila. Se seu pipe processar o lote com sucesso, 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 Pipes EventBridge .

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" } ]

FIFOfila

[ { "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, EventBridge usa sondagem longa para sondar uma fila até que ela se torne ativa. Quando as mensagens estão disponíveis, EventBridge lê até cinco lotes e as envia para o seu canal. Se as mensagens ainda estiverem disponíveis, EventBridge aumenta o número de processos que estão lendo lotes em até 300 instâncias a mais por minuto. O número máximo de lotes que um pipe pode processar simultaneamente é mil.

Para FIFO filas, EventBridge envia mensagens para seu canal na ordem em que ele as recebe. Ao enviar uma mensagem para uma FIFO fila, você especifica uma ID de grupo de mensagens. A Amazon SQS facilita a entrega de mensagens no mesmo grupo para EventBridge, em ordem. EventBridge classifica as mensagens recebidas em grupos e envia somente um lote por vez para um grupo. Se o canal retornar um erro, ele tentará todas as novas tentativas nas mensagens afetadas antes de EventBridge receber mensagens adicionais do mesmo grupo.

Configurando uma fila para usar com Pipes EventBridge

Crie uma SQS fila da Amazon para servir como fonte para seu canal. Em seguida, configure a fila para permitir que seu canal processe cada lote de eventos e tente novamente em resposta EventBridge aos erros de limitação à medida que ele aumenta.

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 você EventBridge tente novamente se o tubo for acelerado durante o processamento de um lote anterior.

Se seu canal falhar em processar uma mensagem várias vezes, a Amazon SQS pode enviá-la para uma fila de mensagens mortas. Quando seu pipe retorna um erro, ele o EventBridge mantém na fila. Depois que o tempo limite de visibilidade ocorrer, 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 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.