翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
HTTP エンドポイントのトラブルシューティング
このセクションでは、Datadog、Dynatrace、LogicMonitor、MongoDB、New Relic、Splunk、Sumo Logic など、汎用 HTTP エンドポイントの宛先およびパートナーの宛先にデータを配信する Amazon Data Firehose を扱う場合の一般的なトラブルシューティングのステップについて説明します。このセクションの目的上、該当するすべての送信先を HTTP エンドポイントと呼びます。Firehose ストリームで指定されている IAM ロールが、S3 バックアップバケットとデータ変換用の Lambda 関数 (データ変換が有効になっている場合) にアクセスできることを確認します。また、IAM ロールがエラーログをチェックするために、CloudWatch ロググループとログストリームにアクセスできることを確認します。詳細については、「Grant Firehose Access to an HTTP Endpoint Destination」を参照してください。
注記
このセクションの情報は、次の送信先には適用されません: Splunk、OpenSearch Service、S3、Redshift。
CloudWatch Logs
の CloudWatch ログ記録を有効にすることを強くお勧めします。ログは、送信先への配信中にエラーが発生した場合にのみ発行されます。
送信先の例外
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 のレスポンスコードを受信しなかったことを示します。200 ではない 2xx のレスポンスも送信先の例外になります。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 と一致しないことを示します。
-
タイムスタンプが見つからない: レスポンスにタイムスタンプフィールドが含まれていないことを示します。タイムスタンプフィールドは、文字列ではなく数値でなければなりません。
-
コンテンツタイプが見つからない: レスポンスに「content-type: application/json」ヘッダーが含まれていないことを示します。その他の content-type は受け入れられません。
重要
重要: 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 ハンドシェイクが正常に完了できなかったことを示します。