Tratamento de erros e solução de problemas do Amazon EventBridge Pipes - 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á.

Tratamento de erros e solução de problemas do Amazon EventBridge Pipes

Compreender os tipos de erros que EventBridge os tubos podem encontrar e EventBridge como lidar com esses erros pode ajudá-lo a solucionar problemas com seus tubos.

Repetir o comportamento e o tratamento de erros

EventBridge O Pipes tenta automaticamente o enriquecimento e a invocação de destino em qualquer falha que possa ser repetida com o serviço de origem, AWS os serviços de enriquecimento ou de destino, ou. EventBridge No entanto, se houver falhas retornadas pelo enriquecimento ou pelas implementações do cliente de destino, o throughput da sondagem de pipes diminuirá gradualmente. Para erros 4xx quase contínuos (como problemas de autorização com o IAM ou falta de recursos), o pipe pode ser desativado automaticamente com uma mensagem explicativa no StateReason.

Erros de invocação de pipes e comportamento de repetição

Ao invocar um pipe, dois tipos principais de erros podem ocorrer: erros internos do pipe e erros de invocação do cliente.

Erros internos do pipe

Os erros internos do Pipe são erros resultantes de aspectos da invocação gerenciados pelo serviço EventBridge Pipes.

Estes tipos de erros podem incluir problemas como:

  • Uma falha na conexão HTTP ao tentar invocar o serviço de destino do cliente

  • Uma queda transitória na disponibilidade do próprio serviço de pipe.

Em geral, o EventBridge Pipes repete erros internos um número indefinido de vezes e para somente quando o registro expira na fonte.

Para canais com uma fonte de fluxo, o EventBridge Pipes não contabiliza novas tentativas de erros internos em relação ao número máximo de tentativas especificado na política de repetição da fonte de fluxo. Para pipes com uma fonte do Amazon SQS, o EventBridge Pipes não contabiliza novas tentativas de erros internos em relação à contagem máxima de recebimento da fonte do Amazon SQS.

Erros de invocação do cliente

Os erros de invocação do cliente são erros resultantes da configuração ou do código gerenciado pelo usuário.

Estes tipos de erros podem incluir problemas como:

  • Permissões insuficientes no pipe para invocar o destino.

  • Um erro lógico em um cliente invocado de forma síncrona Lambda, Step Functions, destino da API ou endpoint do API Gateway do cliente.

Para erros de invocação do cliente, o EventBridge Pipes faz o seguinte:

  • Para tubos com uma fonte de fluxo, o EventBridge Pipes tenta novamente até os tempos máximos de repetição configurados na política de repetição de tubulação ou até que a idade máxima do registro expire, o que ocorrer primeiro.

  • Para pipes com uma fonte Amazon SQS, o EventBridge Pipes repete um erro do cliente até a contagem máxima de recebimento na fila de origem.

  • Para canais com uma fonte Apache Kafka ou Amazon MQ, EventBridge repita os erros do cliente da mesma forma que repete os erros internos.

Para pipes com destinos de computação, você deve invocar o pipe de forma síncrona para que o EventBridge Pipes esteja ciente de quaisquer erros de tempo de execução gerados pela lógica de computação do cliente e tente novamente esses erros. Os Pipes não podem repetir os erros gerados pela lógica de um fluxo de trabalho padrão do Step Functions, pois esse destino deve ser invocado de forma assíncrona.

Para o Amazon SQS e fontes de streaming, como Kinesis e DynamoDB, o Pipes oferece suporte ao tratamento parcial de falhas em lote das EventBridge falhas de destino. Para obter mais informações, consulte Lote com falha parcial.

Tempo de repetição da fonte do Amazon SQS com maxBatchWindow InSeconds

Ao usar uma fila do Amazon SQS como fonte de canal, o comportamento do tempo de repetição difere dependendo se você configura o parâmetro: maxBatchWindowInSeconds

  • Sem maxBatchWindow InSeconds — O pesquisador do SQS usa a configuração de tempo limite de visibilidade da fila para novas tentativas. Quando o processamento falha, as mensagens permanecem ocultas durante o tempo limite de visibilidade antes de serem disponibilizadas para repetição. Para reduzir os atrasos na repetição, configure o tempo limite de visibilidade da fila para um valor apropriado para seu caso de uso.

  • Com maxBatchWindow InSeconds — O pesquisador SQS define dinamicamente o tempo limite de visibilidade das mensagens pesquisadas usando a fórmula:. functionTimeout + maxBatchWindowInSeconds + 30 seconds Para EventBridge Pipes, o tempo limite da função é de 7 minutos, resultando em um tempo limite de visibilidade de aproximadamente 7,5 minutos mais o valor configuradomaxBatchWindowInSeconds. Quando o processamento falha, as mensagens permanecem ocultas por esse período prolongado antes de serem disponibilizadas para repetição.

Esse comportamento é particularmente relevante ao usar respostas parciais em lote. Se você precisar de um tempo de repetição mais rápido, evite configurar maxBatchWindowInSeconds e, em vez disso, confie no tempo limite de visibilidade configurado pela fila.

Comportamento da DLQ no pipe

Um pipe herda o comportamento da fila de mensagens não entregues (DLQ) da origem:

  • Se a fila de origem do Amazon SQS tiver uma DLQ configurada, as mensagens serão automaticamente entregues lá após o número especificado de tentativas.

  • Para origens de fluxos, como fluxos do DynamoDB e do Kinesis, você pode configurar uma DLQ para os eventos de pipe e rota. As origens de fluxo do DynamoDB e do Kinesis são compatíveis com as filas do Amazon SQS e os tópicos do Amazon SNS como destinos de DLQ.

Se você especificar uma DeadLetterConfig para um pipe com uma origem do Kinesis ou do DynamoDB, certifique-se de que a propriedade MaximumRecordAgeInSeconds no pipe seja menor que a MaximumRecordAge do evento de origem. MaximumRecordAgeInSeconds controla quando a sondagem do pipe desistirá do evento e o entregará à DLQ e MaximumRecordAge controla por quanto tempo a mensagem ficará visível no fluxo de origem antes de ser excluída. Portanto, defina MaximumRecordAgeInSeconds para um valor menor que a origem MaximumRecordAge para que haja um tempo adequado entre o envio do evento para a DLQ e o momento em que ele é automaticamente excluído pela origem para que você determine por que o evento foi para a DLQ.

O MaximumRecordAgeInSeconds parâmetro se aplica independentemente do comportamento de repetição. Ao pesquisar uma fonte de stream, se a idade de um registro exceder o MaximumRecordAgeInSeconds valor, o EventBridge Pipes não processará esse registro, independentemente de existir uma situação de nova tentativa. Esses registros são enviados diretamente para o DLQ (se configurado) sem nenhuma tentativa de processamento.

Para origens do Amazon MQ, a DLQ pode ser configurada diretamente no agente de mensagens.

EventBridge O Pipes não oferece suporte ao FIFO (first in first out) DLQs para fontes de stream.

EventBridge O Pipes não suporta DLQ para fontes de stream do Amazon MSK e streams autogerenciados do Apache Kafka.

Estados de falha do pipe

Criar, excluir e atualizar pipes são operações assíncronas que podem resultar em um estado de falha. Da mesma forma, um pipe pode ser desativado automaticamente devido a falhas. Em todos os casos, o pipe StateReason fornece informações para ajudar a solucionar a falha.

Veja a seguinte lista de valores StateReason possíveis:

  • Fluxo não encontrado. Para continuar o processamento, exclua o pipe e crie um novo.

  • O Pipes não tem permissões necessárias para realizar operações de fila (sqs:ReceiveMessage, sqs: DeleteMessage e sqs:) GetQueueAttributes

  • Erro de conexão. Sua VPC deve ser capaz de se conectar aos pipes. É possível fornecer acesso configurando um gateway NAT ou um endpoint da VPC para os dados do pipe. Para saber como configurar o gateway NAT ou o VPC Endpoint para dados de canais, consulte a documentação. AWS

  • O cluster MSK não tem grupos de segurança associados a ele

Um pipe pode ser interrompido automaticamente com uma atualização StateReason. As possíveis causas incluem:

Falhas de criptografia personalizadas

Se você configurar uma fonte para usar uma chave de criptografia AWS KMS personalizada (CMK), em vez de uma AWS KMS chave AWS gerenciada, você deve dar explicitamente a permissão de descriptografia da Execution Role do pipe. Para fazer isso, inclua a seguinte permissão adicional na política personalizada da CMK:

{ "Sid": "Allow Pipes access", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::01234567890:role/service-role/Amazon_EventBridge_Pipe_DDBStreamSourcePipe_12345678" }, "Action": "kms:Decrypt", "Resource": "*" }

Substitua o perfil acima pelo perfil de execução do seu pipe.

Em seguida, certifique-se de que as mesmas permissões para o KMS sejam adicionadas ao seu perfil de execução do pipe.

Isso vale para todas as fontes de tubulação com AWS KMS CMK, incluindo:

  • Amazon DynamoDB Streams

  • Amazon Kinesis Data Streams

  • Amazon MQ

  • Amazon MSK

  • Amazon SQS