Meu trabalho de extração, carregamento e transformação (ETL) do AWS Glue não grava logs no Amazon CloudWatch.
Breve descrição
Se os seus trabalhos do AWS Glue não gravarem logs no CloudWatch, verifique o seguinte:
- Seu trabalho no AWS Glue tenha todas as permissões necessárias do AWS Identity and Access Management (IAM).
- A chave do AWS Key Management Service (AWS KMS) permite que o CloudWatch Logs use a chave.
- Seu trabalho verifica o grupo de logs correto do CloudWatch.
- A permissão do IAM logs:AssociateKmsKey esteja anexada ao perfil do AWS Glue.
- Se você não usa os logs contínuos para sua tarefa de ETL Spark do AWS Glue, verifique se a tarefa falhou antes da agregação dos logs.
Resolução
O perfil de trabalho do AWS Glue não tem permissões para criar e gravar no grupo de logs do CloudWatch
Se você não usar a política gerenciada AWSGlueServiceRole, confirme se a função do IAM anexada à tarefa ETL tem as permissões corretas. As seguintes permissões são necessárias para usar o CloudWatch. Se o trabalho usar um grupo de logs personalizado, a política do IAM deverá fornecer acesso ao grupo de logs personalizado:
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:*:/aws-glue/*",
"arn:aws:logs:*:*:*:/customlogs/*"
]
}
Observação: Substitua arn:aws:logs:*:*:*:/customlogs/* pelo ARN do grupo de logs personalizado.
A chave do AWS KMS não concede permissão ao CloudWatch Logs
Se você usa configurações de segurança com seu trabalho do AWS Glue, verifique sua chave do AWS KMS. A chave do AWS KMS anexada à configuração de segurança deve permitir que o CloudWatch Logs use a chave. Anexe a seguinte política à chave do 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"
}
}
}
Substitua us-west-2 pela sua região da AWS, 1111222233334444 pelo ID da sua conta da AWS og-group-name pelo nome do seu grupo de logs.
Para obter mais informações, consulte Criptografar dados de log no CloudWatch Logs usando o AWS Key Management Service.
Além disso, confirme se a permissão do IAM logs:AssociateKmsKey está vinculada à função do AWS Glue. Para mais informações, consulte Configuração de segurança com log contínuos.
O log contínuo não está ativado
Se você não ativou logs contínuos para sua tarefa de ETL Spark do AWS Glue, a agregação de logs ocorrerá após a conclusão da execução do trabalho. Se o trabalho falhar antes da agregação de logs, talvez os logs não sejam enviados ao CloudWatch.
Ative o log contínuo em seus trabalhos do AWS Glue para que os logs sejam preenchidos caso os aplicativos falhem.
Você não está procurando os logs no grupo de logs correto
Se você ativar o log contínuo e usar os grupos de logs padrão, poderá encontrar os logs do CloudWatch nos seguintes locais:
-
Mensagens personalizadas, como as de instruções de impressão, são enviadas para o grupo de log /aws-glue/jobs/output.
-
As mensagens do registrador do AWS Glue são enviadas para os logs do driver em /aws-glue/jobs/logs-v2.
logger = glueContext.get_logger()
logger.info("MY INFO LOGGER MESSAGE" )
logger.error("MY ERROR LOGGER MESSAGE")
-
As mensagens de um registrador Python são enviadas para o log do driver em /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")
-
Trabalhos que usam configurações de segurança enviam mensagens personalizadas do registrador do AWS Glue para /aws-glue/jobs/logs-v2-testconfig. Substitua testconfig pelo nome da configuração de segurança.
-
Trabalhos que usam configurações de segurança enviam mensagens personalizadas de um registrador Python para /aws-glue/jobs/testconfig-role/job-role/output. Substitua testconfig pelo nome da configuração de segurança e job-role com a função de trabalho do AWS Glue.
Se você ativar o log contínuo e usar grupos de logs personalizados, poderá encontrar os logs do CloudWatch no seguinte local:
- As mensagens de log personalizadas, os logs do driver e os logs do executor são armazenados no grupo de logs personalizados.
Se você não ativar o log contínuo, poderá encontrar os logs do CloudWatch nos seguintes locais:
- Mensagens, como saídas de instruções de impressão e mensagens de log em Python, são armazenadas em /aws-glue/jobs/output.
- Todas as mensagens personalizadas do registrador do AWS Glue são armazenadas em /aws-glue/jobs/error.
Para mais informações, consulte Comportamento de logs.
Informações relacionadas
Log e monitoramento no AWS Glue
Monitorar o AWS Glue