AWS Glue ジョブのログ記録 - AWS Glue

AWS Glue ジョブのログ記録

AWS Glue 5.0 では、すべてのジョブにリアルタイムのログ記録機能があります。さらに、カスタム設定オプションを指定してログ記録の動作を調整できます。これらのオプションには、Amazon CloudWatch ロググループ名、Amazon CloudWatch ログストリームプレフィックス (AWS Glue ジョブ実行 ID とドライバー/エグゼキュター ID の前に付けられる)、ログメッセージのログ変換パターンの設定が含まれます。これらの設定により、異なる有効期限ポリシーを持つカスタム Amazon CloudWatch ロググループにログを集約できます。さらに、カスタムログストリームのプレフィックスおよび変換パターンを使用することで、ログをより効果的に分析できます。このレベルのカスタマイズによって、特定の要件に応じてログ管理と分析を最適化できます。

AWS Glue 5.0 でのログ記録動作

デフォルトでは、システムログ、Spark デーモンログ、ユーザー AWS Glue ロガーログは、Amazon CloudWatch の /aws-glue/jobs/error ロググループに書き込まれます。一方、ユーザー stdout (標準出力) ログと stderr (標準エラー) ログは、デフォルトで /aws-glue/jobs/output ロググループに書き込まれます。

カスタムログ記録

次のジョブ引数を使用すると、デフォルトのロググループとログストリームプレフィックスをカスタマイズできます。

  • --custom-logGroup-prefix: /aws-glue/jobs/error および /aws-glue/jobs/output ロググループのカスタムプレフィックスを指定できます。カスタムプレフィックスを指定すれば、ロググループ名は次の形式になります。

    • /aws-glue/jobs/error<customer prefix>/error になります。

    • /aws-glue/jobs/output <customer prefix>/output になります。

  • --custom-logStream-prefix: ロググループ内のログストリーム名にカスタムプレフィックスを指定できます。カスタムプレフィックスを指定すれば、ログストリーム名は次の形式になります。

    • jobrunid-driver<customer log stream>-driver になります。

    • jobrunid-executorNum<customer log stream>-executorNum になります。

カスタムプレフィックスの検証ルールと制限は次のとおりです。

  • ログストリーム名全体は、1~512 文字である必要があります。

  • カスタムプレフィックス自体は 400 文字に制限されます。

  • カスタムプレフィックスは正規表現パターン `[^:*]*` と一致する必要があります (使用できる特殊文字は '_'、'-'、'/' です)。

カスタムスクリプトロガーを使用したアプリケーション固有のメッセージのログ記録

AWS Glue ロガーを使用すると、ドライバーログストリームにリアルタイムで送信される、スクリプトのアプリケーション固有のメッセージを記録できます。

Python スクリプトの例を以下に示します。

from awsglue.context import GlueContext from pyspark.context import SparkContext sc = SparkContext() glueContext = GlueContext(sc) logger = glueContext.get_logger() logger.info("info message") logger.warn("warn message") logger.error("error message")

Scala スクリプトの例を以下に示します。

import com.amazonaws.services.glue.log.GlueLogger object GlueApp { def main(sysArgs: Array[String]) { val logger = new GlueLogger logger.info("info message") logger.warn("warn message") logger.error("error message") } }

進行状況バーでのジョブ進行状況の表示

AWS Glue は、JOB_RUN_ID-progress-bar ログストリームでリアルタイムの進行状況バーを提供して AWS Glue ジョブ実行のステータスを確認します。現時点では、glueContext を初期化するジョブのみがサポートされています。glueContext を初期化せずに純粋な Spark ジョブを実行すると、AWS Glue 進行状況バーは表示されません。

進行状況バーでは、以下の進行状況が 5 秒ごとに更新されます。

Stage Number (Stage Name): > (numCompletedTasks + numActiveTasks) / totalNumOfTasksInThisStage]

Amazon CloudWatch ログ記録によるセキュリティ設定

Amazon CloudWatch ログのセキュリティ設定を有効にすると、AWS Glue によってセキュリティ設定名が組み込まれた特定の命名パターンを持つロググループが作成されます。

セキュリティ設定を使用したロググループの命名

デフォルトのロググループおよびカスタムロググループは次のようになります。

  • デフォルトのエラーロググループ: /aws-glue/jobs/Security-Configuration-Name-role/glue-job-role/error

  • デフォルトの出力ロググループ: /aws-glue/jobs/Security-Configuration-Name-role/glue-job-role/output

  • カスタムエラーロググループ (AWS Glue 5.0): custom-log-group-prefix/Security-Configuration-Name-role/glue-job-role/error

  • カスタム出力ロググループ (AWS Glue 5.0): custom-log-group-prefix/Security-Configuration-Name-role/glue-job-role/output

必要な IAM アクセス許可

Amazon CloudWatch Logs でセキュリティ設定を有効にする場合、logs:AssociateKmsKey 許可を IAM ロールのアクセス許可に追加する必要があります。そのアクセス許可が含まれていない場合、連続ログ記録は無効になります。

また、Amazon CloudWatch Logs 暗号化を設定するには、「Amazon Amazon CloudWatch Logs ユーザーガイド」の「Encrypt Log Data in Amazon CloudWatch Logs Using AWS Key Management Service」を参照してください。

追加情報

セキュリティ設定の作成の詳細については、「AWS Glue コンソールでのセキュリティ設定の管理」を参照してください。