Solução de problemas de HTTP endpoints - Amazon Data Firehose

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á.

Solução de problemas de HTTP endpoints

Esta seção descreve etapas comuns de solução de problemas ao lidar com o Amazon Data Firehose entregando dados para destinos genéricos de HTTP endpoints e destinos de parceiros, incluindo Datadog, Dynatrace, LogicMonitor MongoDB, New Relic, Splunk ou Sumo Logic. Para os fins desta seção, todos os destinos aplicáveis são chamados de HTTP endpoints. Certifique-se de que a IAM função especificada em seu stream do Firehose possa acessar o bucket de backup do S3 e a função Lambda para transformação de dados (se a transformação de dados estiver ativada). Além disso, certifique-se de que a IAM função tenha acesso ao grupo de CloudWatch registros e aos fluxos de registros para verificar os registros de erros. Para obter mais informações, consulte Conceder acesso ao Firehose a um destino de HTTP endpoint.

nota

As informações nesta seção não se aplicam aos seguintes destinos: Splunk, OpenSearch Service, S3 e Redshift.

CloudWatch Registros

É altamente recomendável que você ative o CloudWatch Logging for Firehose. Os registros só são publicados quando há erros na entrega ao seu destino.

Exceções de destino

ErrorCode: HttpEndpoint.DestinationException

{ "deliveryStreamARN": "arn:aws:firehose:us-east-1:123456789012:deliverystream/ronald-test", "destination": "custom.firehose.endpoint.com...", "deliveryStreamVersionId": 1, "message": "The following response was received from the endpoint destination. 413: {\"requestId\": \"43b8e724-dbac-4510-adb7-ef211c6044b9\", \"timestamp\": 1598556019164, \"errorMessage\": \"Payload too large\"}", "errorCode": "HttpEndpoint.DestinationException", "processor": "arn:aws:lambda:us-east-1:379522611494:function:httpLambdaProcessing" }

As exceções de destino indicam que o Firehose é capaz de estabelecer uma conexão com seu endpoint e fazer HTTP uma solicitação, mas não recebeu um código de resposta de 200. 2xx respostas que não sejam 200s também resultarão em uma exceção de destino. O Amazon Data Firehose registra o código de resposta e uma carga de resposta truncada recebida do endpoint configurado no Logs. CloudWatch Como o Amazon Data Firehose registra o código de resposta e a carga sem modificação ou interpretação, cabe ao endpoint fornecer o motivo exato pelo qual rejeitou a solicitação de entrega do Amazon Data Firehose. HTTP Veja a seguir as recomendações de solução de problemas mais comuns para essas exceções:

  • 400: Indica que você está enviando uma solicitação incorreta devido a uma configuração incorreta do Amazon Data Firehose. Certifique-se de ter o URL, os atributos comuns, a codificação do conteúdo, a chave de acesso e as sugestões de buffer corretos para o seu destino. Consulte a documentação específica do destino sobre a configuração necessária.

  • 401: Indica que a chave de acesso que você configurou para o stream do Firehose está incorreta ou ausente.

  • 403: indica que a chave de acesso que você configurou para seu stream do Firehose não tem permissões para entregar dados ao endpoint configurado.

  • 413: Indica que a carga útil da solicitação que o Amazon Data Firehose envia para o endpoint é muito grande para ser processada pelo endpoint. Tente reduzir a sugestão de buffer para o tamanho recomendado para o destino.

  • 429: Indica que o Amazon Data Firehose está enviando solicitações em uma taxa maior do que a capacidade do destino. Ajuste a solicitação de buffer aumentando o tempo de armazenamento em buffer e/ou aumentando o tamanho do buffer (mas ainda dentro do limite do destino).

  • 5xx: indica que há um problema com o destino. O serviço Amazon Data Firehose ainda está funcionando corretamente.

Importante

Importante: embora essas sejam as recomendações comuns de solução de problemas, endpoints específicos podem ter motivos diferentes para fornecer os códigos de resposta e as recomendações específicas do endpoint devem ser seguidas primeiro.

Resposta inválida

ErrorCode: HttpEndpoint.InvalidResponseFromDestination

{ "deliveryStreamARN": "arn:aws:firehose:us-east-1:123456789012:deliverystream/ronald-test", "destination": "custom.firehose.endpoint.com...", "deliveryStreamVersionId": 1, "message": "The response received from the specified endpoint is invalid. Contact the owner of the endpoint to resolve the issue. Response for request 2de9e8e9-7296-47b0-bea6-9f17b133d847 is not recognized as valid JSON or has unexpected fields. Raw response received: 200 {\"requestId\": null}", "errorCode": "HttpEndpoint.InvalidResponseFromDestination", "processor": "arn:aws:lambda:us-east-1:379522611494:function:httpLambdaProcessing" }

Exceções de resposta inválidas indicam que o Amazon Data Firehose recebeu uma resposta inválida do destino do endpoint. A resposta deve estar em conformidade com as especificações de resposta ou o Amazon Data Firehose considerará a tentativa de entrega uma falha e reentregará os mesmos dados até que a duração da nova tentativa configurada seja excedida. O Amazon Data Firehose trata respostas que não seguem as especificações de resposta como falhas, mesmo que a resposta tenha um status 200. Se você estiver desenvolvendo um endpoint compatível com o Amazon Data Firehose, siga as especificações de resposta para garantir que os dados sejam entregues com sucesso.

Veja abaixo alguns dos tipos comuns de respostas inválidas e como corrigi-las:

  • Campos inválidos JSON ou inesperados: indica que a resposta não pode ser desserializada adequadamente JSON ou tem campos inesperados. Certifique-se de que a resposta não seja codificada por conteúdo.

  • Ausente RequestId: indica que a resposta não contém umarequestId.

  • RequestId não corresponde: indica que a entrada requestId na resposta não corresponde à saídarequestId.

  • Timestamp ausente: indica que a resposta não contém um campo de timestamp. O campo de timestamp deve ser um número e não uma string.

  • Cabeçalho de tipo de conteúdo ausente: indica que a resposta não contém um cabeçalho “content-type: application/json”. Nenhum outro tipo de conteúdo é aceito.

Importante

Importante: o Amazon Data Firehose só pode entregar dados para endpoints que seguem as especificações de solicitação e resposta do Firehose. Se você estiver configurando seu destino para um serviço de terceiros, certifique-se de usar o endpoint correto compatível com o Amazon Data Firehose, que provavelmente será diferente do endpoint público de ingestão. Por exemplo, o endpoint Amazon Data Firehose do Datadog é https://aws-kinesis-http-intake.logs.datadoghq.com/ enquanto seu endpoint público é. https://api.datadoghq.com/

Outros erros comuns

Os códigos de erro e as definições adicionais estão listados abaixo.

  • Código de erro: HttpEndpoint. RequestTimeout- Indica que o endpoint demorou mais de 3 minutos para responder. Se você for o proprietário do destino, diminua o tempo de resposta do endpoint de destino. Se você não for o proprietário do destino, entre em contato com o proprietário e pergunte se algo pode ser feito para reduzir o tempo de resposta (ou seja, diminuir a sugestão de buffer para que haja menos dados sendo processados por solicitação).

  • Código de erro: HttpEndpoint. ResponseTooLarge- Indica que a resposta é muito grande. A resposta deve ter menos do que 1 MiB, incluindo cabeçalhos.

  • Código de erro: HttpEndpoint. ConnectionFailed- Indica que não foi possível estabelecer uma conexão com o endpoint configurado. Isso pode ser devido a um erro de digitação no URL configurado, ao fato de o endpoint não estar acessível ao Amazon Data Firehose ou ao endpoint demorar muito para responder à solicitação de conexão.

  • Código de erro: HttpEndpoint. ConnectionReset- Indica que uma conexão foi estabelecida, mas foi reiniciada ou fechada prematuramente pelo endpoint.

  • Código de erro: HttpEndpoint. SSLHandshakeFailure- Indica que um SSL handshake não pôde ser concluído com êxito com o endpoint configurado.