Solução de problemas de endpoints de HTTP - 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 endpoints de HTTP

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 endpoints HTTP 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 endpoints de HTTP. Certifique-se de que o perfil do IAM especificado no seu fluxo do Firehose tenha acesso ao bucket de backup do S3 e à função do Lambda para transformação de dados (se a transformação de dados estiver habilitada). Além disso, certifique-se de que a função do IAM tenha acesso ao grupo de CloudWatch registros e aos fluxos de registros para verificar os registros de erros. Para obter mais informações, consulte Concessão ao Firehose de acesso a um destino de endpoint de HTTP.

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ê habilite o CloudWatch Logging for. 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 o endpoint e fazer uma solicitação HTTP, mas não recebeu um código de resposta 200. As respostas 2xx que não sejam as respostas 200 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 em log o código de resposta e a carga útil sem modificação ou interpretação, cabe ao endpoint fornecer o motivo exato da rejeição da solicitação do Amazon Data Firehose de entrega 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 inválida 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 fluxo do Firehose está incorreta ou ausente.

  • 403: indica que a chave de acesso que você configurou para o fluxo 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 sua dica de buffer aumentando o tempo and/or de buffer, aumentando o tamanho do buffer (mas ainda dentro do limite do seu destino).

  • 5xx: indica que há um problema com o destino. O serviço do 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 respostas 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 entregará novamente os mesmos dados até que o período configurado para novas tentativas seja excedido. O Amazon Data Firehose trata as respostas que não seguem as especificações de resposta como falhas, mesmo que a resposta tenha o 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 êxito.

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

  • Campos JSON inválidos ou inesperados: indica que a resposta não pode ser desserializada adequadamente como 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 um RequestiD.

  • RequestId não corresponde: indica que o RequestiD na resposta não corresponde ao RequestiD de saída.

  • 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 a endpoints que sigam as especificações de resposta e de solicitações do Firehose. Se você estiver configurando o 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 do 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 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. SSLHandshakeFalha - indica que um handshake SSL não pôde ser concluído com êxito com o endpoint configurado.