Ma tâche d'extraction, de chargement et de transformation (ETL) AWS Glue n’écrit pas de journaux sur Amazon CloudWatch.
Brève description
Si vos tâches AWS Glue n'écrivent pas de journaux dans CloudWatch, confirmez ce qui suit :
- Votre tâche AWS Glue dispose des autorisations AWS Identity and Access Management (IAM) requises.
- La clé AWS Key Management Service (AWS KMS) permet à CloudWatch Logs de l'utiliser.
- Votre tâche vérifie le bon groupe de journaux CloudWatch.
- L'autorisation IAM Logs:AssociateKMSKey est associée au rôle AWS Glue.
- Vérifiez si la tâche a échoué avant l'agrégation des journaux si vous n'utilisez pas la journalisation continue pour votre tâche ETL AWS Glue Spark.
Résolution
Le rôle de tâche AWS Glue n’est pas autorisé à créer et à écrire dans le groupe de journaux CloudWatch
Si vous n’utilisez pas la stratégie gérée AWSGlueServiceRole vérifiez que le rôle IAM associé à la tâche ETL possède les autorisations appropriées. Les autorisations suivantes sont requises pour utiliser CloudWatch. Si la tâche utilise un groupe de journaux personnalisé, la politique IAM doit fournir l’accès à ce groupe de journaux personnalisé :
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:*:/aws-glue/*",
"arn:aws:logs:*:*:*:/customlogs/*"
]
}
Remarque : Remplacez arn:aws:logs:*:*:*:/customlogs/* par l’ARN du groupe de journaux personnalisé.
La clé AWS KMS n’autorise pas CloudWatch Logs
Vérifiez votre clé AWS KMS, si vous utilisez des configurations de sécurité avec votre tâche AWS Glue. La clé AWS KMS associée à la configuration de sécurité doit permettre à CloudWatch Logs d’utiliser la clé. Associez la stratégie suivante à la clé 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"
}
}
}
Remplacez us-west-2 par votre Région AWS, 1111222233334444 par votre identifiant de compte AWS et og-group-name par le nom de votre groupe de journaux.
Pour plus d’informations, consultez Chiffrer les données de journal dans CloudWatch Logs à l’aide d'AWS Key Management Service.
Vérifiez également que l'autorisation IAM Logs:AssociateKMSKey est associée au rôle AWS Glue. Pour plus d’informations, consultez la section Configuration de sécurité avec journalisation continue.
La journalisation continue n’est pas activée
Si vous n’activez pas la journalisation continue pour votre tâche ETL AWS Glue Spark, l’agrégation des journaux a lieu une fois la tâche terminée. Si la tâche échoue avant l'agrégation des journaux, ceux-ci risquent de ne pas être transmis à CloudWatch.
Activez la journalisation continue pour vos tâches AWS Glue afin que les journaux soient remplis en cas d'échec des applications.
Vous ne recherchez pas les journaux dans le bon groupe de journaux
Si vous activez la journalisation continue et que vous utilisez les groupes de journaux par défaut, les journaux CloudWatch se trouvent aux emplacements suivants :
-
Les messages personnalisés, tels que ceux provenant des instructions print, sont transmis au groupe de journaux /aws-glue/jobs/output.
-
Les messages provenant de l’enregistreur AWS Glue sont envoyés dans les journaux du pilote sous /aws-glue/jobs/logs-v2.
logger = glueContext.get_logger()
logger.info("MY INFO LOGGER MESSAGE" )
logger.error("MY ERROR LOGGER MESSAGE")
-
Les messages d’un enregistreur Python sont envoyés aux journaux du pilote sous /aws-glue/jobs/out.
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")
-
Les tâches qui utilisent des configurations de sécurité envoient des messages personnalisés depuis l’enregistreur AWS Glue vers /aws-glue/jobs/logs-v2-testconfig. Remplacez testconfig par le nom de la configuration de sécurité.
-
Les tâches qui utilisent des configurations de sécurité envoient des messages personnalisés depuis un enregistreur Python vers /aws-glue/jobs/testconfig-role/job-role/output. Remplacez testconfig par le nom de la configuration de sécurité et job-role par le rôle de tâche AWS Glue.
Si vous activez la journalisation continue et que vous utilisez les groupes de journaux personnalisés, les journaux CloudWatch se trouvent à l’emplacement suivants :
- Les messages de journal personnalisés, les journaux des pilotes et les journaux de l’exécuteur sont stockés dans le groupe de journaux personnalisé.
Si vous n’activez pas la journalisation continue, vous trouverez les journaux CloudWatch aux emplacements suivants :
- Les messages, tels que les sorties des instructions d’impression et les messages de journalisation Python, sont stockés dans /aws-glue/jobs/out.
- Tous les messages personnalisés provenant de l’enregistreur AWS Glue sont stockés dans /aws-glue/jobs/error.
Pour plus d’informations, consultez Comportement de journalisation.
Informations connexes
Journalisation et surveillance dans AWS Glue
Surveillance d'AWS Glue