HTTP 端點疑難排解 - Amazon Data Firehose

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

HTTP 端點疑難排解

本節說明處理 Amazon Data Firehose 將資料傳遞至一般HTTP端點目的地和合作夥伴目的地時常見的疑難排解步驟,包括 Datadog、Dynatrace LogicMonitor、MongoDB、New Relic、Splunk 或 Sumo Logic。為了本節的目的,所有適用的目的地稱為HTTP端點。請確定 Firehose 串流中指定的IAM角色可以存取 S3 備份儲存貯體和 Lambda 函數以進行資料轉換 (如果已啟用資料轉換)。此外,請確定IAM角色可存取 CloudWatch 日誌群組和日誌串流,以檢查錯誤日誌。如需詳細資訊,請參閱授予 Firehose 對HTTP端點目的地 的存取權

注意

本節中的資訊不適用於下列目的地:Splunk、 OpenSearch Service、S3 和 Redshift。

CloudWatch 日誌

強烈建議您啟用 CloudWatch Logging for Firehose 。只有在交付到目的地時發生錯誤時,才會發佈日誌。

目的地例外狀況

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

目的地例外狀況表示 Firehose 能夠建立與端點的連線並提出HTTP請求,但未收到 200 個回應代碼。2xx 個非 200 秒的回應也會產生目的地例外狀況。Amazon Data Firehose 會將從設定端點接收的回應碼和截斷的回應承載記錄到 CloudWatch Logs。由於 Amazon Data Firehose 會記錄回應程式碼和承載,而不進行修改或解釋,因此端點必須提供拒絕 Amazon Data Firehose HTTP交付請求的確切原因。以下是針對這些例外狀況的最常見疑難排解建議:

  • 400:表示您因為 Amazon Data Firehose 的組態錯誤而傳送錯誤請求。請確認您有正確的 url一般屬性內容編碼存取金鑰,以及目的地緩衝提示。請參閱有關所需組態的目的地特定文件。

  • 401:表示您為 Firehose 串流設定的存取金鑰不正確或遺失。

  • 403:表示您為 Firehose 串流設定的存取金鑰沒有將資料交付至已設定端點的許可。

  • 413:表示 Amazon Data Firehose 傳送至端點的請求承載太大,端點無法處理。嘗試將緩衝提示降低到 目的地的建議大小。

  • 429:表示 Amazon Data Firehose 傳送請求的速率高於目的地可以處理的速率。透過增加緩衝時間和/或增加緩衝大小 (但仍在目的地限制內) 來微調緩衝提示。

  • 5xx:表示目的地發生問題。Amazon Data Firehose 服務仍然正常運作。

重要

重要事項:雖然這些是常見的疑難排解建議,但特定端點可能有不同的原因提供回應代碼,並且應先遵循端點特定建議。

無效的回應

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

無效回應例外狀況表示 Amazon Data Firehose 收到來自端點目的地的無效回應。回應必須符合回應規格,否則 Amazon Data Firehose 會將交付嘗試視為失敗,並會重新交付相同的資料,直到超過設定的重試持續時間為止。Amazon Data Firehose 會將不符合回應規格的回應視為失敗,即使回應的狀態為 200。如果您正在開發與 Amazon Data Firehose 相容的端點,請遵循回應規格以確保資料成功交付。

以下是一些常見的無效回覆類型,以及修正這些問題的方法:

  • 無效JSON或非預期欄位 :表示回應無法正確還原序列化為 JSON或具有非預期欄位。請確認回應未進行內容編碼。

  • 缺少 RequestId:表示回應不包含 requestId。

  • RequestId 不符合 :表示回應 requestId 中的 不符合傳出 requestId。

  • 缺失時間戳記:表示回應不包含時間戳記欄位。時間戳記欄位必須是數字,而不是字串。

  • 缺失內容類型標題:表示回應不包含「內容類型:應用程式/json」標頭。沒有接受的其他內容類型。

重要

重要事項:Amazon Data Firehose 只能將資料交付至遵循 Firehose 請求和回應規格的端點。如果您要將目的地設定為第三方服務,請確定您使用的是正確的 Amazon Data Firehose 相容端點,這可能與公有擷取端點不同。例如,Datadog 的 Amazon Data Firehose 端點https://aws-kinesis-http-intake.logs.datadoghq.com/為其公有端點 https://api.datadoghq.com/

其他常見錯誤

下面列有其他錯誤代碼和定義。

  • 錯誤碼: HttpEndpoint。RequestTimeout - 表示端點回應的時間超過 3 分鐘。如果您是目的地的擁有者,則請縮短目的地端點的回應時間。如果您不是目的地的擁有者,請聯絡擁有者並詢問是否可以採取任何措施來縮短回應時間 (減少緩衝提示,以減少每個請求處理的資料)。

  • 錯誤碼: HttpEndpoint。ResponseTooLarge - 表示回應太大。回應必須小於 1 MiB (包括標頭)。

  • 錯誤碼: HttpEndpoint。ConnectionFailed - 表示無法與設定的端點建立連線。這可能是由於設定的 url 中出現錯別字、Amazon Data Firehose 無法存取端點,或端點回應連線請求的時間過長。

  • 錯誤碼: HttpEndpoint.ConnectionReset - 表示已進行連線,但端點已重設或過早關閉。

  • 錯誤碼: HttpEndpoint。SSLHandshakeFailure - 表示無法透過設定的端點成功完成交SSL握。