Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Perché il mio processo AWS Glue non scrive i log su Amazon CloudWatch?
Il processo di estrazione, caricamento e trasformazione (ETL) di AWS Glue non scrive i log su Amazon CloudWatch.
Breve descrizione
Se i tuoi processi AWS Glue non scrivono log su CloudWatch, conferma quanto segue:
- Assicurati che il tuo processo AWS Glue disponga di tutte le autorizzazioni AWS Identity and Access Management (IAM) richieste.
- Il Servizio AWS di gestione delle chiavi (AWS KMS) consente a CloudWatch Logs di utilizzare la chiave.
- Il tuo lavoro verifica il gruppo di log di CloudWatch corretto.
- L'autorizzazione IAM logs:AssociateKmsKey è associata al ruolo AWS Glue.
- Se non hai attivato la registrazione continua per il processo Spark ETL AWS Glue, controlla che il processo non si sia interrotto prima dell'aggregazione dei log.
Risoluzione
Il ruolo del processo AWS Glue non dispone delle autorizzazioni per creare e scrivere nel gruppo di log di CloudWatch
Se non utilizzi la policy gestita di AWSGlueServiceRole, conferma che il ruolo IAM associato al job ETL disponga delle autorizzazioni corrette. Per utilizzare CloudWatch sono necessarie le seguenti autorizzazioni. Se il processo utilizza un gruppo di log personalizzato, la policy IAM deve fornire l'accesso al gruppo di log personalizzato:
{ "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:*:/aws-glue/*", "arn:aws:logs:*:*:*:/customlogs/*" ] }
Nota: assicurati di sostituire arn:aws:logs:*:*:*:/customlogs/* con l'ARN del gruppo di log personalizzato.
La chiave AWS KMS non concede l'autorizzazione a CloudWatch Logs
Se utilizzi configurazioni di sicurezza con il tuo processo AWS Glue, controlla la tua chiave AWS KMS. La chiave AWS KMS allegata alla configurazione di sicurezza deve consentire a CloudWatch Logs di utilizzare la chiave. Allega la seguente policy alla chiave 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" } } }
Sostituisci us-west-2 con la tua regione AWS, 1111222233334444 con l'ID del tuo account AWS e og-group-name con il nome del tuo gruppo di log.
Per ulteriori informazioni, consulta Crittografia dei dati di log in CloudWatch Logs utilizzando il Servizio AWS di gestione delle chiavi.
Inoltre, conferma che l'autorizzazione IAM logs:AssociateKmsKey sia associata al ruolo AWS Glue. Per ulteriori informazioni, consulta Security configuration with continuous logging.
La registrazione continua non è attivata
Se non hai attivato la registrazione continua per il processo Spark ETL AWS Glue, l'aggregazione dei log avviene dopo che l'esecuzione del processo è terminata. Se il processo si interrompe prima dell'aggregazione dei log, è possibile che i log non vengano inviati a CloudWatch.
Attiva la registrazione continua per i tuoi lavori AWS Glue in modo che i log vengano compilati in caso di errore delle applicazioni.
Non stai cercando i log nel gruppo di log corretto
Se attivi la registrazione continua e utilizzi i gruppi di log predefiniti, puoi trovare i log di CloudWatch nelle seguenti posizioni:
-
I messaggi personalizzati, come quelli delle istruzioni print, vengono inviati al gruppo di log /aws-glue/jobs/output.
-
I messaggi del logger AWS Glue vengono inviati ai log dei driver in /aws-glue/jobs/logs-v2.
logger = glueContext.get_logger() logger.info("MY INFO LOGGER MESSAGE" ) logger.error("MY ERROR LOGGER MESSAGE")
-
I messaggi di un logger Python vengono inviati ai log dei driver in /aws-glue/jobs/output.
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")
-
I job che utilizzano configurazioni di sicurezza inviano messaggi personalizzati dal logger AWS Glue a /aws-glue/jobs/logs-v2-testconfig. Assicurati di sostituire testconfig con il nome della configurazione di sicurezza.
-
I lavori che utilizzano configurazioni di sicurezza inviano messaggi personalizzati da un logger Python a /aws-glue/jobs/testconfig-role/job-role/output. Sostituisci testconfig con il nome della configurazione di sicurezza e job-role con il ruolo di lavoro di AWS Glue.
Se attivi la registrazione continua e utilizzi gruppi di log personalizzati, puoi trovare i log di CloudWatch nella seguente posizione:
- i messaggi di registro personalizzati, i registri dei driver e i registri degli esecutori vengono archiviati nel gruppo di log personalizzato.
Se non attivi la registrazione continua, puoi trovare i log di CloudWatch nelle seguenti posizioni:
- i messaggi, come gli output delle istruzioni di stampa e i messaggi di registrazione di Python, vengono archiviati in /aws-glue/jobs/output.
- Tutti i messaggi personalizzati dal logger AWS Glue vengono archiviati in /aws-glue/jobs/error.
Per ulteriori informazioni, consulta Comportamento registrazione.
Informazioni correlate
Contenuto pertinente
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata 2 mesi fa