View a markdown version of this page

Journalisation et surveillance des sessions Apache Spark - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Journalisation et surveillance des sessions Apache Spark

À partir de la version 3.5 d'Apache Spark, vous pouvez spécifier les options de CloudWatch journalisation gérées, Amazon S3 ou journalisation.

En ce qui concerne la journalisation gérée et la journalisation S3, le tableau suivant répertorie les emplacements des journaux et la disponibilité de l'interface utilisateur auxquels vous pouvez vous attendre si vous choisissez ces options.

Option Journaux d'événements Journaux de conteneurs Interface utilisateur de l'application
Journalisation gérée (par défaut) Stocké dans un compartiment S3 géré Stocké dans un compartiment S3 géré Pris en charge
Journalisation gérée et compartiment S3 Stocké aux deux endroits Stocké dans un compartiment S3 Pris en charge
Compartiment Amazon S3 Stocké dans un compartiment S3 Stocké dans un compartiment S3 Non pris en charge 1

1 Nous vous suggérons de conserver l'option Journalisation gérée sélectionnée. Sinon, vous ne pouvez pas utiliser les interfaces utilisateur intégrées de l'application.

Journalisation gérée

Par défaut, les groupes de travail Athena Spark stockent les journaux des applications en toute sécurité dans des compartiments S3 gérés par les services pendant une durée maximale de 30 jours.

Vous pouvez éventuellement fournir une clé KMS (identifiant de clé, arn, alias ou alias arn) que le service utilisera pour chiffrer les journaux gérés.

aws athena start-session \ --work-group "WORKGROUP" \ --monitoring-configuration '{ "ManagedLoggingConfiguration": { "Enabled": true, "KmsKey": "KMS_KEY" }, }' --engine-configuration ''
Note

Si vous désactivez la journalisation gérée, Athena ne pourra pas résoudre les problèmes liés à vos sessions à votre place. Exemple : vous n'y accéderez pas Spark-UI depuis les blocs-notes Amazon SageMaker AI Studio ou via l'GetResourceDashboardAPI.

Pour désactiver cette option depuis le AWS CLI, utilisez la ManagedLoggingConfiguration configuration lorsque vous démarrez une session interactive.

aws athena start-session \ --work-group "WORKGROUP" \ --monitoring-configuration '{ "ManagedLoggingConfiguration": { "Enabled": false }, }' --engine-configuration ''

Autorisations requises pour la journalisation gérée

Si vous avez fourni une clé KMS, ajoutez le principal de service Athena à la liste des autorisations dans la politique d'autorisations des clés KMS.

{ "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Effect": "Allow", "Principal":{ "Service":"athena.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": "YOUR_ACCOUNT_ID" } } }

Journalisation Amazon S3

Vous pouvez configurer la livraison des journaux aux compartiments Amazon S3.

Pour activer la livraison des journaux S3 à partir du AWS CLI, utilisez la S3LoggingConfiguration configuration lorsque vous démarrez une session interactive.

aws athena start-session \ --work-group "WORKGROUP" \ --monitoring-configuration '{ "S3LoggingConfiguration": { "Enabled":true, "LogLocation": "s3://bucket/", }, }' --engine-configuration ''

Vous pouvez éventuellement fournir une clé KMS (identifiant de clé, arn, alias ou alias arn) que le service utilisera pour chiffrer les journaux S3.

aws athena start-session \ --work-group "WORKGROUP" \ --monitoring-configuration '{ "S3LoggingConfiguration": { "Enabled":true, "LogLocation": "s3://bucket/", "KmsKey": "KMS_KEY" }, }' --engine-configuration ''

Autorisations requises pour la transmission des journaux à Amazon S3

Avant que vos sessions puissent transmettre des journaux aux compartiments Amazon S3, incluez les autorisations suivantes dans la politique d'autorisations pour le rôle d'exécution.

{ "Action": "s3:*", "Resource": "*", "Effect": "Allow" }

Si vous avez fourni une clé KMS, vous aurez également besoin des autorisations suivantes dans la politique d'autorisations pour le rôle d'exécution.

{ "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Effect": "Allow" }

Si la clé et le compartiment KMS ne proviennent pas du même compte, KMS doit autoriser le principal de service S3.

{ "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "ACCOUNT_HAVING_KMS_KEY" } } }

CloudWatch journalisation

Vous pouvez configurer la remise des journaux aux groupes de CloudWatch journaux.

Pour activer la livraison des journaux S3 à partir du AWS CLI, utilisez la CloudWatchLoggingConfiguration configuration lorsque vous démarrez une session interactive.

aws athena start-session \ --work-group "WORKGROUP" \ --monitoring-configuration '{ "CloudWatchLoggingConfiguration": { "Enabled": true, "LogGroup": "/aws/athena/sessions/${workgroup}", "LogStreamNamePrefix": "session-" } }' --engine-configuration ''

Tous les journaux seront fournis par défaut, mais vous pouvez éventuellement spécifier les types de journaux à inclure.

aws athena start-session \ --work-group "WORKGROUP" \ --monitoring-configuration '{ "CloudWatchLoggingConfiguration": { "Enabled": true, "LogGroup": "/aws/athena/sessions/${workgroup}", "LogStreamNamePrefix": "session-", "LogTypes": { "SPARK_DRIVER": [ "STDOUT", "STDERR" ], "SPARK_EXECUTOR": [ "STDOUT", "STDERR" ] } } }' --engine-configuration ''

Autorisations requises pour la remise du journal à CloudWatch

Avant que vos sessions puissent transmettre des CloudWatch journaux à des groupes de journaux, incluez les autorisations suivantes dans la politique d'autorisations pour le rôle d'exécution.

{ "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": "*", "Effect": "Allow" }

Et conformément à la politique de ressources clés de KMS.

{ "Effect": "Allow", "Principal": { "Service": "logs.<region>.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

Configuration des paramètres de journalisation par défaut au sein du groupe de travail

Vous pouvez également spécifier les options de journalisation par défaut au niveau du groupe de travail.

Pour spécifier les options de journalisation par défaut à partir de AWS CLI pour un groupe de travail, utilisez la monitoring-configuration configuration lors de la création d'un nouveau groupe de travail :

aws athena create-work-group \ --region "REGION" \ --name "WORKGROUP_NAME" \ --monitoring-configuration '{ "CloudWatchLoggingConfiguration": { "Enabled": true, "LogGroup": "/aws/athena/sessions/${workgroup}", "LogStreamNamePrefix": "session-", "LogTypes": { "SPARK_DRIVER": [ "STDOUT", "STDERR" ], "SPARK_EXECUTOR": [ "STDOUT", "STDERR" ] } }, "ManagedLoggingConfiguration": { "Enabled": true, "KmsKey": "KMS_KEY" }, "S3LoggingConfiguration": { "Enabled": true, "KmsKey": "KMS_KEY" "LogLocation": "s3://bucket/", "LogTypes": { "SPARK_DRIVER": [ "STDOUT", "STDERR" ], "SPARK_EXECUTOR": [ "STDOUT", "STDERR" ] } } }'

Pour modifier les options de journalisation par défaut depuis AWS CLI pour un groupe de travail, utilisez la monitoring-configuration configuration lors de la mise à jour d'un groupe de travail. Les modifications s'appliqueront aux nouvelles sessions interactives à venir.

aws athena update-work-group \ --region "REGION" \ --work-group "WORKGROUP_NAME" --monitoring-configuration '{ "CloudWatchLoggingConfiguration": { "Enabled": true, "LogGroup": "/aws/athena/sessions/${workgroup}", "LogStreamNamePrefix": "session-", "LogTypes": { "SPARK_DRIVER": [ "STDOUT", "STDERR" ], "SPARK_EXECUTOR": [ "STDOUT", "STDERR" ] } }, "ManagedLoggingConfiguration": { "Enabled": true, "KmsKey": "KMS_KEY" }, "S3LoggingConfiguration": { "Enabled": true, "KmsKey": "KMS_KEY" "LogLocation": "s3://bucket/", "LogTypes": { "SPARK_DRIVER": [ "STDOUT", "STDERR" ], "SPARK_EXECUTOR": [ "STDOUT", "STDERR" ] } } }'