Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Warum schreibt mein AWS Glue-Job keine Protokolle in Amazon CloudWatch?
Mein AWS Glue-Auftrag zum Extrahieren, Laden und Transformieren (ETL) schreibt keine Protokolle in Amazon CloudWatch.
Kurzbeschreibung
Wenn Ihre AWS Glue-Jobs keine Protokolle in CloudWatch schreiben, bestätigen Sie Folgendes:
- Ihr AWS Glue-Job verfügt über alle erforderlichen AWS Identity and Access Management (IAM) -Berechtigungen.
- Der Schlüssel des AWS Key Management Service (AWS KMS) ermöglicht es dem CloudWatch Logs-Service, den Schlüssel zu verwenden.
- Ihr Job überprüft die richtige CloudWatch-Protokollgruppe.
- Die IAM-Berechtigung logs:associateKMSKEY ist an die AWS Glue-Rolle angehängt.
- Wenn Sie die kontinuierliche Protokollierung für Ihren AWS Glue Spark-ETL-Job nicht verwenden, überprüfen Sie vor der Protokollaggregation, ob der Job fehlgeschlagen ist.
Behebung
Der AWS Glue-Jobrolle fehlen IAM-Berechtigungen zum Erstellen und Schreiben in die CloudWatch-Protokollgruppe
Wenn Sie die verwaltete Richtlinie AWSGlueServiceRole nicht verwenden, stellen Sie sicher, dass die IAM-Rolle, die an den ETL-Job angehängt ist, über die richtigen Berechtigungen verfügt. Für die Verwendung von CloudWatch sind die folgenden Berechtigungen erforderlich. Wenn der Job eine benutzerdefinierte Protokollgruppe verwendet, muss die IAM-Richtlinie Zugriff auf die benutzerdefinierte Protokollgruppe gewähren:
{ "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:*:/aws-glue/*", "arn:aws:logs:*:*:*:/customlogs/*" ] }
Hinweis: Achten Sie darauf, arn:aws:logs:*:*:*:/customlogs/* durch den ARN der benutzerdefinierten Loggruppe zu ersetzen.
Der AWS-KMS-Schlüssel gewährt keine Berechtigung für CloudWatch Logs
Wenn Sie Sicherheitskonfigurationen für Ihren AWS Glue-Job verwenden, überprüfen Sie Ihren AWS-KMS-Schlüssel. Der AWS-KMS-Schlüssel, der an die Sicherheitskonfiguration angehängt ist, muss CloudWatch Logs die Verwendung des Schlüssels ermöglichen. Hängen Sie die folgende Richtlinie an den AWS-KMS-Schlüssel an:
{ "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" } } }
Ersetzen Sie us-west-2 durch Ihre AWS-Region, 1111222233334444 durch Ihre AWS-Konto-ID und og-group-name durch den Namen Ihrer Protokollgruppe.
Weitere Informationen finden Sie unter Verschlüsseln von Protokolldaten in CloudWatch Logs mithilfe des AWS Key Management Service.
Stellen Sie außerdem sicher, dass die IAM-Berechtigung logs:AssociateKMSKEY an die AWS Glue-Rolle angehängt ist. Weitere Informationen finden Sie unter Sicherheitskonfiguration mit kontinuierlicher Protokollierung.
Kontinuierliche Protokollierung ist nicht aktiviert
Wenn Sie die kontinuierliche Protokollierung für Ihren AWS Glue Spark-ETL-Job nicht aktivieren, erfolgt die Protokollaggregation, nachdem der Job abgeschlossen ist. Wenn der Job vor der Protokollaggregation fehlschlägt, werden die Protokolle möglicherweise nicht an CloudWatch übertragen.
Aktivieren Sie die kontinuierliche Protokollierung für Ihre AWS Glue-Jobs, damit die Protokolle aufgefüllt werden, falls Anwendungen ausfallen.
Sie suchen nicht nach den Protokollen in der richtigen Protokollgruppe
Wenn Sie die kontinuierliche Protokollierung aktivieren und die Standardprotokollgruppen verwenden, finden Sie CloudWatch-Protokolle an den folgenden Orten:
-
Benutzerdefinierte Meldungen, z. B. aus Print-Anweisungen, werden in die Protokollgruppe /aws-glue/jobs/output übertragen.
-
Die Nachrichten vom AWS Glue-Logger werden in die Treiberprotokolle unter /aws-glue/jobs/logs-v2 übertragen.
logger = glueContext.get_logger() logger.info("MY INFO LOGGER MESSAGE" ) logger.error("MY ERROR LOGGER MESSAGE")
-
Die Nachrichten von einem Python-Logger werden in die Treiberprotokolle unter /aws-glue/jobs/output übertragen.
import logging MSG_FORMAT = '%(asctime)s %(levelname)s %(name)s: %(message)s' DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S' logging.basicConfig(format=MSG_FORMAT, datefmt=DATETIME_FORMAT) logger2 = logging.getLogger("logger2") logger2.setLevel(logging.INFO) logger2.info("Test log message from python logging")
-
Jobs, die Sicherheitskonfigurationen verwenden, übertragen benutzerdefinierte Nachrichten vom AWS Glue-Logger nach /aws-glue/jobs/logs-v2-testconfig. Ersetzen Sie testconfig durch den Namen der Sicherheitskonfiguration.
-
Jobs, die Sicherheitskonfigurationen verwenden, übertragen benutzerdefinierte Nachrichten von einem Python-Logger nach /aws-glue/jobs/testconfig-role/job-role/output. Ersetzen Sie testconfig durch den Namen der Sicherheitskonfiguration und job-role durch die AWS Glue-Jobrolle.
Wenn Sie die kontinuierliche Protokollierung aktivieren und benutzerdefinierte Protokollgruppen verwenden, finden Sie die CloudWatch-Protokolle an der folgenden Stelle:
- Die benutzerdefinierten Protokollmeldungen, Treiberprotokolle und Executor-Protokolle werden unter der benutzerdefinierten Protokollgruppe gespeichert.
Wenn Sie die kontinuierliche Protokollierung nicht aktivieren, finden Sie CloudWatch-Protokolle an den folgenden Stellen:
- Nachrichten, wie Print-Statement-Ausgaben und Python-Logging-Nachrichten, werden unter /aws-glue/jobs/output gespeichert.
- Alle benutzerdefinierten Nachrichten vom AWS Glue-Logger werden unter /aws-glue/jobs/error gespeichert.
Weitere Informationen finden Sie unter Verhalten protokollieren.
Verwandte Informationen

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 3 Jahren