Amazon CloudWatch Logs の使用 - Amazon Kinesis Data Analytics for SQL Applications 開発者ガイド

新規プロジェクトでは、Kinesis Data Analytics for SQL よりも 新しい Managed Service for Apache Flink Studio を使用することをお勧めします。Managed Service for Apache Flink Studio は、使いやすさと高度な分析機能を兼ね備えているため、高度なストリーム処理アプリケーションを数分で構築できます。

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

Amazon CloudWatch Logs の使用

アプリケーションが誤設定されていると、アプリケーションは起動時に実行状態に移行することがあります。または、データを更新できても、アプリケーション内の入力ストリームのデータは処理されません。アプリケーションに CloudWatch ログオプションを追加することで、アプリケーション設定の問題を監視できます。

では、以下の条件で構成エラーを生成できます。

  • 入力に使用されている Kinesis データストリームは存在しません。

  • 入力に使用される Amazon Data Firehose 配信ストリームが存在しません。

  • リファレンスデータソースとして使用されている Amazon S3 バケットは存在しません。

  • S3 バケットのリファレンスデータソースに指定されたファイルは存在しません。

  • 適切なリソースが、関連するアクセス許可を管理する AWS Identity and Access Management (IAM) ロールで定義されていません。

  • 関連アクセス権限を管理する IAM ロールで、適切な権限が定義されていません。

  • には、関連アクセス権限を管理する IAM ロールを引き受けるアクセス権限がありません。

Amazon の詳細については CloudWatch、「Amazon CloudWatch ユーザーガイド」を参照してください。

PutLogEvents ポリシーアクションの追加

には、設定ミスエラーを に書き込むためのアクセス許可が必要です CloudWatch。以下に説明しているように、 で引き受ける IAM ロールにこれらのアクセス権限を追加することができます。 で IAM ロールを使用する方法については、「Kinesis Data Analytics の Identity and Access Management」を参照してください。

信頼ポリシー

IAM ロールを引き受けるためのアクセス権限を に付与するには、以下の信頼ポリシーをそのロールにアタッチします。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "kinesisanalytics.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

アクセス許可ポリシー

リソース CloudWatch から にログイベントを書き込むアクセス許可をアプリケーションに付与するには、次の IAM アクセス許可ポリシーを使用できます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt0123456789000", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:my-log-group:log-stream:my-log-stream*" ] } ] }

モニタリング中の設定エラーの追加

次の API アクションを使用して、新規または既存のアプリケーションに CloudWatch ログオプションを追加するか、既存のアプリケーションのログオプションを変更します。

注記

現在、 CloudWatch ログオプションは、 API アクションを使用してのみアプリケーションに追加できます。コンソールを使用して CloudWatch ログオプションを追加することはできません。

アプリケーション作成時の CloudWatch ログオプションの追加

次のコード例は、アプリケーションの作成時に CreateApplicationアクションを使用して CloudWatch ログオプションを追加する方法を示しています。Create_Application の詳細については、「CreateApplication」をご参照ください。

{ "ApplicationCode": "<The SQL code the new application will run on the input stream>", "ApplicationDescription": "<A friendly description for the new application>", "ApplicationName": "<The name for the new application>", "Inputs": [ ... ], "Outputs": [ ... ], "CloudWatchLoggingOptions": [{ "LogStreamARN": "<Amazon Resource Name (ARN) of the CloudWatch log stream to add to the new application>", "RoleARN": "<ARN of the role to use to access the log>" }] }

既存のアプリケーションへの CloudWatch ログオプションの追加

以下のコード例では、AddApplicationCloudWatchLoggingOption アクションを使用して、既存アプリケーションに CloudWatch ログオプションを追加する方法について説明します。AddApplicationCloudWatchLoggingOption の詳細については、「AddApplicationCloudWatchLoggingOption」を参照してください。

{ "ApplicationName": "<Name of the application to add the log option to>", "CloudWatchLoggingOption": { "LogStreamARN": "<ARN of the log stream to add to the application>", "RoleARN": "<ARN of the role to use to access the log>" }, "CurrentApplicationVersionId": <Version of the application to add the log to> }

既存の CloudWatch ログオプションの更新

次のコード例は、 UpdateApplicationアクションを使用して既存の CloudWatch ログオプションを変更する方法を示しています。UpdateApplication の詳細については、「UpdateApplication」を参照してください。

{ "ApplicationName": "<Name of the application to update the log option for>", "ApplicationUpdate": { "CloudWatchLoggingOptionUpdates": [ { "CloudWatchLoggingOptionId": "<ID of the logging option to modify>", "LogStreamARNUpdate": "<ARN of the new log stream to use>", "RoleARNUpdate": "<ARN of the new role to use to access the log stream>" } ], }, "CurrentApplicationVersionId": <ID of the application version to modify> }

アプリケーションからの CloudWatch ログオプションの削除

次のコード例は、 DeleteApplicationCloudWatchLoggingOptionアクションを使用して既存の CloudWatch ログオプションを削除する方法を示しています。DeleteApplicationCloudWatchLoggingOption の詳細については、「DeleteApplicationCloudWatchLoggingOption」を参照してください。

{ "ApplicationName": "<Name of application to delete log option from>", "CloudWatchLoggingOptionId": "<ID of the application log option to delete>", "CurrentApplicationVersionId": <Version of the application to delete the log option from> }

設定エラー

以下のセクションでは、誤って設定されたアプリケーションから Amazon CloudWatch Logs に表示される可能性のあるエラーの詳細について説明します。

エラーメッセージ形式

アプリケーションの誤設定によって生成されるエラーメッセージは、次の形式で表示されます。

{ "applicationARN": "string", "applicationVersionId": integer, "messageType": "ERROR", "message": "string", "inputId": "string", "referenceId": "string", "errorCode": "string" "messageSchemaVersion": "integer", }

エラーメッセージのフィールドには、次の情報が含まれています。

  • applicationARN: 生成アプリケーションの Amazon リソースネーム (ARN) (例: arn:aws:kinesisanalytics:us-east-1:112233445566:application/sampleApp)。

  • applicationVersionId: エラー発生時のアプリケーションのバージョン。詳細については、「ApplicationDetail」を参照してください。

  • messageType: メッセージの種類。現在、この種類は ERROR のみです。

  • message: エラーの詳細など。

    There is a problem related to the configuration of your input. Please check that the resource exists, the role has the correct permissions to access the resource and that Kinesis Analytics can assume the role provided.
  • inputId: アプリケーション入力に関連付けられた ID。この値は、入力がエラーの原因である場合にのみ表示されます。この値は、referenceId が存在する場合は存在しません。詳細については、「DescribeApplication」を参照してください。

  • referenceId: アプリケーションのリファレンスデータソースに関連付けられた ID。この値は、ソースがエラーの原因である場合にのみ表示されます。この値は、inputId が存在する場合は存在しません。詳細については、「DescribeApplication」を参照してください。

  • errorCode: エラーの識別子。この ID は、InputError または ReferenceDataError になります。

  • messageSchemaVersion: 現在のメッセージスキーマバージョンを指定する値。現在は 1 です。エラーメッセージスキーマが更新されているかどうかを確認するには、この値を確認します。

エラー

の CloudWatch ログに表示される可能性のあるエラーは次のとおりです。

リソースが存在しません

ARN が存在しない Kinesis 入力ストリームに指定されていても、その ARN が構文的に正しい場合は、以下のようなエラーが生成されます。

{ "applicationARN": "arn:aws:kinesisanalytics:us-east-1:112233445566:application/sampleApp", "applicationVersionId": "5", "messageType": "ERROR", "message": "There is a problem related to the configuration of your input. Please check that the resource exists, the role has the correct permissions to access the resource and that Kinesis Analytics can assume the role provided.", "inputId":"1.1", "errorCode": "InputError", "messageSchemaVersion": "1" }

不適切な Amazon S3 ファイルキー がリファレンスデータで使用されている場合は、次のようなエラーが生成されます。

{ "applicationARN": "arn:aws:kinesisanalytics:us-east-1:112233445566:application/sampleApp", "applicationVersionId": "5", "messageType": "ERROR", "message": "There is a problem related to the configuration of your reference data. Please check that the bucket and the file exist, the role has the correct permissions to access these resources and that Kinesis Analytics can assume the role provided.", "referenceId":"1.1", "errorCode": "ReferenceDataError", "messageSchemaVersion": "1" }

ロールが存在しません

存在しない IAM 入力ロールで ARN が指定されているが、その ARN が正しくない場合、以下のようなエラーが生成されます。

{ "applicationARN": "arn:aws:kinesisanalytics:us-east-1:112233445566:application/sampleApp", "applicationVersionId": "5", "messageType": "ERROR", "message": "There is a problem related to the configuration of your input. Please check that the resource exists, the role has the correct permissions to access the resource and that Kinesis Analytics can assume the role provided.", "inputId":null, "errorCode": "InputError", "messageSchemaVersion": "1" }

リソースにアクセスするアクセスする権限がロールにありません

入力リソースにアクセスするためのアクセス権限がない入力ロール (例: Kinesis ソースストリーム) が使用されている場合は、次のようなエラーが表示されます。

{ "applicationARN": "arn:aws:kinesisanalytics:us-east-1:112233445566:application/sampleApp", "applicationVersionId": "5", "messageType": "ERROR", "message": "There is a problem related to the configuration of your input. Please check that the resource exists, the role has the correct permissions to access the resource and that Kinesis Analytics can assume the role provided.", "inputId":null, "errorCode": "InputError", "messageSchemaVersion": "1" }