AWS Glue ジョブが Amazon CloudWatch にログを書き込まないのはなぜですか?

最終更新日: 2021 年 7 月 28 日

AWS Glue の抽出、ロード、変換 (ETL) ジョブが Amazon CloudWatch にログを書き込みません。

簡単な説明

AWS Glue ジョブが CloudWatch にログをプッシュしていない場合は、以下を確認してください。

  • AWS Glue ジョブが、すべての必要な AWS Identity and Access Management (IAM) の許可を有していることを確認してください。
  • AWS Key Management Service (AWS KMS) キーが CloudWatch Logs サービスによるキーの使用を許可していることを確認してください。
  • IAM 許可 logs:AssociateKmsKey が AWS Glue ロールにアタッチされていることを確認してください。
  • AWS Glue Spark ETL ジョブの継続ログを有効にしていない場合は、ログ集計の前にジョブが失敗したかどうかを確認します。
  • 正しい CloudWatch ロググループをチェックしていることを確認してください。

解決方法

AWS Glue ジョブロールが、CloudWatch ロググループの作成および書き込みを実行するための IAM 許可を有していない

マネージド AWSGlueServiceRole ポリシーを使用していない場合は、ETL ジョブにアタッチされた IAM ロールが、CloudWatch とインタラクションするために必要な以下の許可を有していることを確認してください。ジョブがカスタムロググループを使用する場合、IAM ポリシーがカスタムロググループへのアクセスを提供する必要があります。

{
    "Effect": "Allow",
    "Action": "cloudwatch:PutMetricData",
    "Resource": [
        "*"
    ]
},
{
    "Effect": "Allow",
    "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
    ],
    "Resource": [
        "arn:aws:logs:*:*:/aws-glue/*",
        "arn:aws:logs:*:*:/customlogs/*"
    ]
}

arn:aws:logs:*:*:/customlogs/* をカスタムロググループの ARN に置き換えてください。

使用されている AWS KMS キーが、必要な許可を CloudWatch Logs サービスに付与しない

AWS Glue ジョブでセキュリティ設定を使用している場合は、セキュリティ設定にアタッチされた AWS KMS キーが、CloudWatch Logs サービスによるキーの使用を許可していることを確認してください。AWS KMS キーに次のポリシーをアタッチします。

{
    "Effect": "Allow",
    "Principal": {
        "Service": "logs.region.amazonaws.com"
    },
    "Action": [
        "kms:Encrypt*",
        "kms:Decrypt*",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:Describe*"
    ],
    "Resource": "*",
    "Condition": {
        "ArnEquals": {
            "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:us-west-2:1111222233334444:log-group:log-group-name"
        }
    }
}

ポリシーで、次の項目を置き換えてください。

  • us-west-2: ご希望の AWS リージョンに置き換えます。
  • 1111222233334444: AWS アカウント ID に置き換えます。
  • log-group-name: ロググループの名前に置き換えます。

詳細については、AWS Key Management Service を使用して CloudWatch Logs のログデータを暗号化するを参照してください。

また、IAM 許可 logs:AssociateKmsKey が AWS Glue ロールにアタッチされていることを確認してください。詳細については、継続的なロギングを使用したセキュリティ設定を参照してください。

AWS Glue Spark ETL ジョブの継続的なロギングがオンにならない

AWS Glue Spark ETL ジョブの継続的なロギングを有効にしていない場合は、ジョブ実行が完了した後にログ集計が実行されます。ログ集計の前にジョブが失敗した場合、ログは CloudWatch にプッシュされない可能性があります。アプリケーションの障害に関係なくログが入力されるようにするために、AWS Glue ジョブの継続的なロギングを有効にできます。

正しいロググループでログを探していない

CloudWatch Logs を検索するときは、次の点に注意してください。

  • 継続的なロギングを有効にし、デフォルトのロググループを使用する場合、print ステートメントからのメッセージなどのカスタムメッセージは /aws-glue/jobs/output ロググループにプッシュされます。
  • 継続的なロギングを有効にし、デフォルトのロググループを使用する場合、ロガーによって送信されたメッセージは /aws-glue/jobs/logs-v2 のドライバーログにプッシュされます。
  • 継続的なロギングを有効にし、デフォルトのロググループを使用する場合、セキュリティ設定を使用するジョブは /aws-glue/jobs/logs-v2-testconfig にカスタムメッセージをプッシュします。testconfig は必ずセキュリティ設定の名前に置き換えてください。
  • 継続的なロギングを有効にし、カスタムロググループを使用すると、カスタムログメッセージがドライバーログと Executor ログとともにカスタムロググループに表示されます。
  • 継続的なロギングを有効にしなかった場合は、print ステートメント出力などのメッセージは /aws-glue/jobs/output で、ロガーからのすべてのカスタムメッセージは /aws-glue/jobs/error で、それぞれ確認できます。

詳細については、ログ動作を参照してください。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?