CloudWatch Logs を使用した Kinesis Data Firehose のモニタリング - Amazon Kinesis Data Firehose

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

CloudWatch Logs を使用した Kinesis Data Firehose のモニタリング

Kinesis Data Firehose は Amazon CloudWatch Logs と統合されているため、お客様はデータ変換用の Lambda 呼び出しまたはデータ配信が失敗した場合の特定のエラーログを表示できます。Kinesis Data Firehose のエラーログ記録は、配信ストリームの作成時に有効にすることができます。

Kinesis Data Firehose コンソールで Kinesis Data Firehose エラーログ記録を有効にすると、ロググループと対応するログストリームが、お客様に代わって配信ストリーム用に作成されます。ロググループ名の形式は /aws/kinesisfirehose/delivery-stream-name です (delivery-stream-name は対応する配信ストリームの名前です)。配信先に応じて、ログストリーム名は S3DeliveryRedshiftDelivery、または ElasticsearchDeliveryとなります。データ変換用の Lambda の呼び出しエラーも、データ配信エラーに使用されるログストリームに記録されます。

たとえば、Amazon Redshift を送信先とする配信ストリーム "MyStream" を作成し、Kinesis Data Firehose エラーログを有効にした場合、aws/kinesisfirehose/MyStream という名前のロググループと、S3Delivery および RedshiftDelivery という名前の 2 つのログストリームが作成されます。この例では、S3Delivery ログストリームは、中間 S3 バケットへの配信失敗に関連するエラーのログ記録に使用されます。RedshiftDelivery ログストリームは、Lambda 呼び出し失敗および Amazon Redshift クラスターへの配信失敗に関連するエラーのログ記録に使用されます。

Kinesis Data Firehose エラーログ記録を、AWS CLI、API、または CloudWatchLoggingOptions 設定を使用する AWS CloudFormation を使用して有効にできます。これを行うには、事前にロググループとログストリームを作成します。そのロググループとログストリームを、Kinesis Data Firehose エラーログ記録専用に予約することをお勧めします。また、関連付けられた IAM ポリシーに "logs:putLogEvents" アクセス許可があることを確認します。詳細については、「Amazon Kinesis Data Firehose によるアクセスの制御 」を参照してください。

Kinesis Data Firehose では、すべての配信エラーログが CloudWatch Logs に送信されることは保証されません。配信失敗率が高い状況では、Kinesis Data Firehose は配信エラーログをサンプリングしてから、CloudWatch Logs に送信します。

CloudWatch Logs に送信されるエラーログには、わずかな金額が課金されます。詳細については、「Amazon CloudWatch 料金表」を参照してください。

データ配信エラー

以下に示しているのは、Kinesis Data Firehose 送信先ごとのデータ配信エラーコードおよびメッセージのリストです。各エラーメッセージには、問題を解決するために実行する適切なアクションも示されます。

Amazon S3 データ配信エラー

Kinesis Data Firehose は以下の Amazon S3 関連のエラーを CloudWatch Logs に送信できます。

エラーコード エラーメッセージおよび情報
S3.KMS.NotFoundException

"指定された AWS KMS キーが見つかりませんでした。正しいロールを持つ有効な AWS KMS キーであると考えるものを使用している場合は、AWS KMS キーがアタッチされるアカウントに問題がないかどうか確認してください。"

S3.KMS.RequestLimitExceeded

"S3 オブジェクトを暗号化しようとしているときに、KMS リクエスト/秒の制限を超えました。1 秒あたりのリクエストの制限を引き上げてください。"

詳細については、AWS Key Management Service Developer Guide の「制限」を参照してください。

S3.AccessDenied "アクセスが拒否されました。指定された IAM ロールの信頼ポリシーで、Kinesis Data Firehose によるロールの引き受けが許可されること、およびアクセスポリシーで S3 バケットへのアクセスが許可されることを確認してください。"
S3.AccountProblem "AWS アカウントに問題があり、それによりオペレーションを正常に完了することができません。AWS サポートにお問い合わせください。"
S3.AllAccessDisabled "指定されたアカウントへのアクセスが無効になっています。AWS サポートにお問い合わせください。"
S3.InvalidPayer "指定されたアカウントへのアクセスが無効になっています。AWS サポートにお問い合わせください。"
S3.NotSignedUp "アカウントは Amazon S3 に対してサインアップされていません。アカウントにサインアップするか、別のアカウントを使用します。"
S3.NoSuchBucket "指定されたバケットが存在しません。バケットを作成するか、存在する別のバケットを使用します。"
S3.MethodNotAllowed "指定されたメソッドは、このリソースに対して許可されていません。Amazon S3 オペレーションの正しいアクセス許可を許可するようバケットのポリシーを変更します。"
InternalError "データを配信しようとして内部エラーが発生しました。配信は再試行されます。エラーが解消されない場合は、解決のため AWS に報告されます。"

Amazon Redshift データ配信エラー

Kinesis Data Firehose は以下の Amazon Redshift 関連のエラーを CloudWatch Logs に送信できます。

エラーコード エラーメッセージおよび情報
Redshift.TableNotFound

"データのロード先となるテーブルが見つかりませんでした。指定されたテーブルが存在することを確認してください。"

S3 からのデータのコピー先となる Amazon Redshift の宛先テーブルが見つかりませんでした。Kinesis Data Firehose テーブルが存在しない場合、テーブルは Amazon Redshift によって作成されないことに注意してください。

Redshift.SyntaxError "COPY コマンドには構文エラーが含まれています。コマンドを再試行してください。"
Redshift.AuthenticationFailed "指定されたユーザー名とパスワードで認証に失敗しました。有効なユーザー名とパスワードを指定してください。"
Redshift.AccessDenied "アクセスが拒否されました。指定された IAM ロールの信頼ポリシーで、Kinesis Data Firehose がロールを引き受けられることを確認します。"
Redshift.S3BucketAccessDenied "COPY コマンドは S3 バケットにアクセスできませんでした。指定した IAM ロールのアクセスポリシーで、S3 バケットへのアクセスが許可されることを確認してください。"
Redshift.DataLoadFailed "テーブルへのデータのロードに失敗しました。詳細については、STL_LOAD_ERRORS システムテーブルを確認してください。"
Redshift.ColumnNotFound "COPY コマンドの列がテーブルに存在しません。有効な列名を指定してください。"
Redshift.DatabaseNotFound "Amazon Redshift の送信先設定または JDBC URL で指定されたデータベースは見つかりませんでした。有効なデータベース名を指定してください。"
Redshift.IncorrectCopyOptions

"競合するか冗長な COPY のオプションが指定されました。一部のオプションは、特定の組み合わせと互換性がありません。詳細については、COPY コマンドのリファレンスを参照してください。"

詳細については、Amazon Redshift Database Developer Guideの「Amazon Redshift COPY コマンド」を参照してください。

Redshift.MissingColumn "デフォルト値がなく、列リストに含まれていない、NOT NULL としてテーブルスキーマに定義されている列があります。この列を除外し、ロードされたデータが常にこの列の値を提供することを確認するか、このテーブルの Amazon Redshift スキーマにデフォルト値を追加します。
Redshift.ConnectionFailed "指定された Amazon Redshift クラスターへの接続に失敗しました。セキュリティ設定により、Kinesis Data Firehose 接続が許可され、Amazon Redshift 送信先設定または JDBC URL で指定されたクラスターまたはデータベースが正しく、クラスターが使用可能なことを確認してください。"
Redshift.ColumnMismatch "COPY コマンドの jsonpaths の数および宛先テーブルの列数が一致する必要があります。コマンドを再試行してください。"
Redshift.IncorrectOrMissingRegion "Amazon Redshift は、S3 バケットにアクセスするために間違ったリージョンのエンドポイントを使用しようとしました。COPY コマンドのオプションで正しいリージョンの値を指定するか、S3 バケットが Amazon Redshift データベースと同じリージョンにあることを確認します。
Redshift.IncorrectJsonPathsFile "指定された jsonpaths ファイルが、サポートされている JSON 形式ではありません。コマンドを再試行してください。"
Redshift.MissingS3File "Amazon Redshift で必要な 1 つまたは複数の S3 ファイルが S3 バケットから削除されました。S3 バケットポリシーを確認し、S3 ファイルの自動削除がある場合はそれを除外します。"
Redshift.InsufficientPrivilege "データをテーブルにロードするアクセス許可がユーザーにありません。INSERT 権限に対する Amazon Redshift ユーザー権限を確認してください。"
Redshift.ReadOnlyCluster "システムがサイズ変更モードであるため、クエリを実行できません。後でもう一度クエリの実行を試みてください。"
Redshift.DiskFull "ディスクがいっぱいのため、データをロードできませんでした。Amazon Redshift クラスターの容量を増やすか、使用されていないデータを削除してディスク容量を解放してください。"
InternalError "データを配信しようとして内部エラーが発生しました。配信は再試行されます。エラーが解消されない場合は、解決のため AWS に報告されます。"

Splunk データ配信エラー

Kinesis Data Firehose は以下の Splunk 関連のエラーを CloudWatch Logs に送信できます。

エラーコード エラーメッセージおよび情報
Splunk.ProxyWithoutStickySessions

"If you have a proxy (ELB or other) between Kinesis Data Firehose and the HEC node, you must enable sticky sessions to support HEC ACKs. (Kinesis Data Firehose と HEC ノードの間にプロキシ (ELB など) がある場合、HEC ACK をサポートするには、スティッキーセッションを有効にする必要があります。)"

Splunk.DisabledToken "The HEC token is disabled. Enable the token to allow data delivery to Splunk."
Splunk.InvalidToken "The HEC token is invalid. Update Kinesis Data Firehose with a valid HEC token. (有効な HEC トークンで Kinesis Data Firehose を更新してください。)"
Splunk.InvalidDataFormat "The data is not formatted correctly. To see how to properly format data for Raw or Event HEC endpoints, see Splunk Event Data."
Splunk.InvalidIndex "The HEC token or input is configured with an invalid index. Check your index configuration and try again."
Splunk.ServerError "Data delivery to Splunk failed due to a server error from the HEC node. (HEC ノードのサーバーエラーのために Splunk へのデータ配信が失敗しました。) Kinesis Data Firehose will retry sending the data if the retry duration in your Kinesis Data Firehose is greater than 0. (Kinesis Data Firehose の再試行期間が 0 より大きい場合、Kinesis Data Firehose はデータの送信を再試行します。) If all the retries fail, Kinesis Data Firehose backs up the data to Amazon S3. (すべての再試行が失敗すると、Kinesis Data Firehose はデータを Amazon S3 にバックアップします。)"
Splunk.DisabledAck "Indexer acknowledgement is disabled for the HEC token. Enable indexer acknowledgement and try again. For more info, see Enable indexer acknowledgement."
Splunk.AckTimeout "Did not receive an acknowledgement from HEC before the HEC acknowledgement timeout expired. Despite the acknowledgement timeout, it's possible the data was indexed successfully in Splunk. Kinesis Data Firehose backs up in Amazon S3 data for which the acknowledgement timeout expired. (送達確認のタイムアウトにもかかわらず、データが Splunk で正常にインデックス化された可能性があります。Kinesis Data Firehose は、送達確認タイムアウトが期限切れになったデータを Amazon S3 にバックアップします。)"
Splunk.MaxRetriesFailed

"Failed to deliver data to Splunk or to receive acknowledgment. Check your HEC health and try again."

Splunk.ConnectionTimeout "The connection to Splunk timed out. This might be a transient error and the request will be retried. Kinesis Data Firehose backs up the data to Amazon S3 if all retries fail. (一時的なエラーが発生した可能性があり、リクエストは再試行されます。すべての再試行が失敗すると、Kinesis Data Hirehose はデータを Amazon S3 にバックアップします。)"
Splunk.InvalidEndpoint "Could not connect to the HEC endpoint. Make sure that the HEC endpoint URL is valid and reachable from Kinesis Data Firehose. (HEC エンドポイントの URL が有効で、Kinesis Data Firehose からアクセス可能であることを確認してください。)"
Splunk.ConnectionClosed "Unable to send data to Splunk due to a connection failure. This might be a transient error. Increasing the retry duration in your Kinesis Data Firehose configuration might guard against such transient failures. (Kinesis Data Firehose の設定で再試行期間の値を大きくすると、このような一時的なエラーを防止できる可能性があります。)"
Splunk.SSLUnverified "Could not connect to the HEC endpoint. ホストがピアによって提供された証明書と一致しません。証明書とホストが有効であることを確認してください。"
Splunk.SSLHandshake "Could not connect to the HEC endpoint. 証明書とホストが有効であることを確認してください。"

HTTPSエンドポイントデータ配信エラー

Kinesis Data Firehose は、次のHTTPエンドポイント関連のエラーをに送信することができます。 CloudWatch Logs. これらのエラーのいずれも発生している問題と一致しない場合、デフォルトのエラーは次のようになります。"データを配信しようとして内部エラーが発生しました。配信は再試行されます。エラーが解消されない場合は、解決のため AWS に報告されます。"

エラーコード エラーメッセージおよび情報
HttpEndpoint.RequestTimeout

応答が受信される前に配達がタイムアウトになり、再試行されます。このエラーが続く場合は、AWS Firehoseサービスチームに連絡してください。

HttpEndpoint.ResponseTooLarge 「エンドポイントから受信した応答が大きすぎます。この問題を解決するには、エンドポイントの所有者に連絡してください。"
HttpEndpoint.InvalidResponseFromDestination "指定したエンドポイントから受信した応答が無効です。エンドポイントの所有者に連絡して、問題を解決してください。」
HttpEndpoint.DestinationException 「エンドポイントの送信先から以下の応答を受信しました。」
HttpEndpoint.ConnectionFailed "宛先エンドポイントに接続できません。この問題を解決するには、エンドポイントの所有者に連絡してください。"
HttpEndpoint.ConnectionReset 「エンドポイントとの接続を維持できません。この問題を解決するには、エンドポイントの所有者に連絡してください。"
HttpEndpoint.ConnectionReset 「エンドポイントとの接続維持にトラブルが生じました。エンドポイントの所有者に連絡してください。"

Amazon Elasticsearch Service データ配信エラー

Amazon ES が送信先の場合、Kinesis Data Firehose は、Elasticsearch によって返されたエラーを CloudWatch Logs に送信します。

Lambda 呼び出しエラー

Kinesis Data Firehose は以下の Lambda 呼び出しエラーを CloudWatch Logs に送信できます。

エラーコード エラーメッセージおよび情報
Lambda.AssumeRoleAccessDenied

"アクセスが拒否されました。指定された IAM ロールの信頼ポリシーで、Kinesis Data Firehose がロールを引き受けられることを確認します。"

Lambda.InvokeAccessDenied

"アクセスが拒否されました。アクセスポリシーで、Lambda 関数へのアクセスが許可されていることを確認してください。"

Lambda.JsonProcessingException

"Lambda 関数から返されたレコードの解析時にエラーが発生しました。返されたレコードが Kinesis Data Firehose からリクエストされたステータスモデルに従っていることを確認してください。"

詳細については、「データ変換とステータスモデル」を参照してください。

Lambda.InvokeLimitExceeded

"Lambda の同時実行の制限を超えています。同時実行の制限を引き上げてください。"

詳細については、以下を参照してください。 AWS Lambda 限度AWS Lambda Developer Guide.

Lambda.DuplicatedRecordId

"複数のレコードに対して同じレコード ID が返されました。Lambda 関数がレコードごとに一意のレコード ID を返すことを確認してください。"

詳細については、「データ変換とステータスモデル」を参照してください。

Lambda.MissingRecordId

"1 つ以上のレコード ID が返されませんでした。Lambda 関数がすべての渡されたレコード ID を返すことを確認してください。"

詳細については、「データ変換とステータスモデル」を参照してください。

Lambda.ResourceNotFound

"指定した Lambda 関数は存在しません。存在する別の関数を使用してください。"

Lambda.InvalidSubnetIDException

"Lambda 関数の VPC 設定で指定したサブネット ID が無効です。サブネット ID が有効であることを確認してください。"

Lambda.InvalidSecurityGroupIDException

"Lambda 関数の VPC 設定で指定したセキュリティグループ ID が無効です。セキュリティグループ ID が有効であることを確認してください。"

Lambda.SubnetIPAddressLimitReachedException

"AWS Lambda は、1 つ以上の設定済みサブネットに使用可能な IP アドレスがないため、Lambda 関数の VPC アクセスを設定できませんでした。IP アドレスの制限を引き上げてください。"

詳細については、以下を参照してください。 Amazon VPC 制限 - VPCおよびサブネットAmazon VPC ユーザーガイド.

Lambda.ENILimitReachedException

"AWS Lambda は、ネットワークインターフェイスの制限に達したため、Lambda 関数設定で指定した VPC に Elastic Network Interface (ENI) を作成できませんでした。ネットワークインターフェイスの制限を引き上げてください。"

詳細については、以下を参照してください。 Amazon VPC 制限 - ネットワーク・インターフェースAmazon VPC ユーザーガイド.

Kinesis Data Firehose の CloudWatch ログへのアクセス

Kinesis Data Firehose コンソールまたは CloudWatch コンソールを使用して、Kinesis Data Firehose のデータ配信失敗に関連するエラーログを表示できます。次の手順は、これらの 2 つの方法を使用してエラーログにアクセスする方法を示しています。

Kinesis Data Firehose コンソールを使用してエラーログにアクセスするには

  1. AWS マネジメントコンソールにサインインし、https://console.aws.amazon.com/kinesis にある Kinesis コンソールを開きます。

  2. ナビゲーションペインの [Data Firehose] を選択します。

  3. ナビゲーションバーで、AWS リージョンを選択します。

  4. 配信ストリーム名を選択して、配信ストリームの詳細ページに移動します。

  5. データ配信の失敗に関連するエラーログのリストを表示するには、[Error Log] を選択します。

CloudWatch コンソールを使用してエラーログにアクセスするには

  1. https://console.aws.amazon.com/cloudwatch/ にある CloudWatch コンソールを開きます。

  2. ナビゲーションバーで、リージョンを選択します。

  3. ナビゲーションペインで [ログ] を選択します。

  4. データ配信の失敗に関連するエラーログのリストを表示するには、ロググループとログストリームを選択します。