AWS Glue ジョブの連続ログ記録の有効化 - AWS Glue

AWS Glue ジョブの連続ログ記録の有効化

AWS Glue コンソールを使用するか、AWS Command Line Interface (AWS CLI) を通じて、連続ログ記録を有効にできます。

新しいジョブを作成するとき、既存のジョブを編集するとき、または AWS CLI を通じて有効にするときに、標準フィルタまたはフィルタなしで連続ログ記録を有効にできます。[標準フィルタ] を選択すると、有益でない Apache Spark ドライバー/エグゼキュータや Apache Hadoop のハートビートログメッセージを除外できます。[フィルタなし] を選択すると、すべてのログメッセージが表示されます。

また、Amazon CloudWatch ロググループ名、AWS Glue ジョブ実行 ID ドライバー/エグゼキュター ID の前の CloudWatch ログストリームプレフィックス、ログメッセージのログ変換パターンなどのカスタム設定オプションを指定することもできます。これらの設定は、異なる有効期限ポリシーを持つカスタム CloudWatch ロググループに集約ログを設定し、カスタムログストリームプレフィックスと変換パターンを使用してさらに分析するのに役立ちます。

AWS Management Console の使用

次のステップに従ってコンソールを使用して、AWS Glue ジョブを作成または編集するときに連続ログ記録を有効にします。

連続ログ記録を有効にして新しい AWS Glue ジョブを作成するには

  1. AWS Management Console にサインインし、AWS Glue コンソール (https://console.aws.amazon.com/glue/) を開きます。

  2. ナビゲーションペインで [Jobs (ジョブ)] を選択します。

  3. [ジョブの追加] を選択します。

  4. [Configure the job properties] (ジョブプロパティの設定) で、[Monitoring options] (モニタリングオプション) セクションを展開します。

  5. このジョブに使用するために [Continuous logging] (連続ログ記録) を選択します。

  6. [Log filtering] (ログのフィルタリング) で、[Standard filter] (標準フィルター) または [No filter] (フィルターなし) を選択します。

既存の AWS Glue ジョブに対して連続ログ記録を有効にするには

  1. https://console.aws.amazon.com/glue/ で AWS Glue コンソール を開きます。

  2. ナビゲーションペインで [Jobs (ジョブ)] を選択します。

  3. [Jobs (ジョブ)] リストから既存のジョブを選択します。

  4. [Action (アクション)]、[Edit job (ジョブの編集)] の順に選択します。

  5. [Monitoring options] (モニタリングオプション) セクションを展開します。

  6. このジョブに使用するために [Continuous logging] (連続ログ記録) を選択します。

  7. [Log filtering] (ログのフィルタリング) で、[Standard filter] (標準フィルター) または [No filter] (フィルターなし) を選択します。

新しく作成されたすべての AWS Glue ジョブで連続ログ記録を有効にするには

  1. https://console.aws.amazon.com/glue/ で AWS Glue コンソール を開きます。

  2. ナビゲーションペインで [Jobs (ジョブ)] を選択します。

  3. 右上隅の [User preferences (ユーザー設定)] を選択します。

  4. 見出しの下の [Monitoring options] (モニタリングオプション) で、[Continuous logging] (連続ログ記録) を選択します。

  5. [Log filtering] (ログのフィルタリング) で、[Standard filter] (標準フィルター) または [No filter] (フィルターなし) を選択します。

これらのユーザー設定は、AWS Glue ジョブを作成するときに明示的に上書きするか、前に説明したように既存のジョブを編集しない限り、すべての新しいジョブに適用されます。

AWS CLI の使用

連続ログ記録を有効にするには、 AWS Glue ジョブにジョブパラメータを渡します。標準フィルタを使用する場合は、他の AWS Glue ジョブパラメータに類似した、次の特別なジョブパラメータを渡します。詳細については、「AWS Glue で使用される特殊なパラメータ」を参照してください。

'--enable-continuous-cloudwatch-log': 'true'

フィルタが必要ない場合は、次のコマンドを使用します。

'--enable-continuous-cloudwatch-log': 'true', '--enable-continuous-log-filter': 'false'

カスタム Amazon CloudWatch ロググループ名を指定できます。指定しない場合、デフォルトのロググループ名は、/aws-glue/jobs/logs-v2/ になります。

'--continuous-log-logGroup': 'custom_log_group_name'

カスタム Amazon CloudWatch ログストリームプレフィックスを指定できます。指定しない場合、デフォルトのログストリームプレフィックスはジョブ実行 ID になります。

'--continuous-log-logStreamPrefix': 'custom_log_stream_prefix'

カスタムの連続ロギング変換パターンを指定できます。指定しない場合、デフォルトの変換パターンは %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n になります。変換パターンは、ドライバーログとエグゼキューターログにのみ適用されます。AWS Glue の進行状況バーには影響しません。

'--continuous-log-conversionPattern': 'custom_log_conversion_pattern'

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

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]

連続ログ記録によるセキュリティ設定

CloudWatch ログのセキュリティ設定が有効になっている場合、AWS Glue では、連続ログに対して次のような名前のロググループが作成されます。

<Log-Group-Name>-<Security-Configuration-Name>

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

  • デフォルトの連続ロググループは /aws-glue/jobs/logs-v2-<Security-Configuration-Name> となります。

  • カスタム連続ロググループは <custom-log-group-name>-<Security-Configuration-Name> となります。

CloudWatch Logs でセキュリティ設定を有効にする場合、logs:AssociateKmsKey を IAM ロールのアクセス許可に追加する必要があります。そのアクセス許可が含まれていない場合、連続ログ記録は無効になります。また、CloudWatch Logs 暗号化を設定するには、Amazon CloudWatch Logs ユーザーガイドの「AWS Key Management Service を使用して CloudWatch Logs のログデータを暗号化する」を参照してください。

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