View a markdown version of this page

Exportation des journaux d'analyse des requêtes - AWS Clean Rooms

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.

Exportation des journaux d'analyse des requêtes

AWS Clean Rooms exécute des requêtes SQL sur Apache Spark. Lorsqu'une requête échoue ou s'exécute lentement, les journaux Spark de cette requête contiennent les détails d'exécution dont vous avez besoin pour en trouver la cause. Ils montrent quelle étape a échoué, comment le travail a été réparti entre les tâches, quelle quantité de mémoire a été utilisée et où le temps a été consacré.

Une requête parcourt les données fournies par plusieurs membres de la collaboration. Les journaux Spark bruts peuvent donc révéler des informations sur les données d'un autre membre, telles que les noms des tables, les emplacements de stockage et les valeurs des données. Pour cette raison, AWS Clean Rooms ne vous donne pas les journaux bruts. Au lieu de cela, il produit une copie expurgée dans laquelle les données des clients et les métadonnées des membres sont expurgées. AWS Clean Rooms exporte cette copie vers un compartiment Amazon S3 dont vous êtes propriétaire. Vous analysez ensuite les journaux exportés à l'aide de l'outil de votre choix, tel que Spark History Server.

Important

Les journaux exportés sont expurgés. Les valeurs des données sont supprimées et les nombres et les tailles sont indiqués sous forme d'approximations afin de ne pas révéler de détails sur les données de la collaboration. Par conséquent, les journaux exportés ne correspondent pas aux journaux produits par une tâche Spark en dehors de celle-ci AWS Clean Rooms. Avant de les interpréter, lisezComprendre les journaux rédigés.

Conditions préalables

Avant de pouvoir exporter des journaux pour une requête, toutes les conditions suivantes doivent être remplies :

  • Votre adhésion a la capacité de CAN_EXPORT_QUERY_ANALYSIS_LOG membre. Chaque membre de la collaboration doit approuver une demande de modification pour accorder cette fonctionnalité. Pour de plus amples informations, veuillez consulter Mettre à jour les capacités des membres.

  • Vous êtes l'auteur de la requête ou le payeur de la requête. Cette fonctionnalité ne suffit pas à elle seule : vous ne pouvez exporter les journaux que pour les requêtes que vous avez exécutées ou pour lesquelles vous avez payé.

  • La requête a atteint l'état terminal. Vous pouvez exporter les journaux d'une requête dont le statut est SUCCESSFAILED,CANCELLED, ouTIMED_OUT. Vous ne pouvez pas exporter les journaux tant qu'une requête est toujours en cours d'exécution.

L'exportation des journaux n'est pas disponible pour toutes les requêtes. Pour les cas qui ne sont pas pris en charge, voirConsidérations et restrictions.

Il n'est pas nécessaire de créer un rôle IAM pour l'exportation des journaux. AWS Clean Rooms écrit les journaux exportés en utilisant votre propre identité, de sorte qu'il n'écrit les journaux que lorsque vos propres autorisations le permettent déjà. Conformément à la règle du moindre privilège, accordez l'accès en écriture uniquement au compartiment et au préfixe de clé que vous utilisez pour les journaux exportés.

Note

Si le compartiment de destination utilise SSE-KMS une clé gérée par le client, vous devez être autorisé à utiliser cette clé. Dans le cas contraire, la demande d'exportation échoue immédiatement.

Exportation de journaux pour une requête

L'exportation des journaux est asynchrone. Lorsque vous démarrez une exportation, AWS Clean Rooms renvoie immédiatement les données avec un identifiant d'exportation et un statut égal àIN_PROGRESS, puis expurgée et copie les journaux en arrière-plan.

Avant de commencer l'exportation, AWS Clean Rooms écrit un objet de zéro octet nommé validationSuccess dans votre compartiment de destination pour confirmer qu'il peut y écrire. Si cette vérification échoue, la demande échoue immédiatement avec une erreur de validation au lieu d'échouer plus tard en arrière-plan.

Console
Pour exporter les journaux d'une requête (console)
  1. Connectez-vous à la AWS Clean Rooms console Console de gestion AWS et ouvrez-la.

  2. Dans le volet de navigation de gauche, choisissez Collaborations.

  3. Choisissez la collaboration qui contient la requête.

  4. Choisissez l'onglet Analyse.

  5. Effectuez l’une des actions suivantes :

    • Dans le tableau des requêtes, sélectionnez la requête, choisissez Actions, puis choisissez Exporter les journaux d'analyse des requêtes.

    • Choisissez la requête pour ouvrir sa page de détails, puis choisissez Exporter les journaux d'analyse.

  6. Dans la boîte de dialogue, choisissez le compartiment Amazon S3 de destination et, éventuellement, un préfixe de clé.

  7. Cliquez sur Exporter.

Si l'option Exporter les journaux d'analyse des requêtes n'est pas disponible, la console explique pourquoi. Le tableau suivant répertorie les messages et explique comment les résoudre.

Message Résolution
La requête doit atteindre l'état terminal pour que les journaux puissent être exportés. Attendez la fin de l'exécution de la requête.
Il n'est pas possible d'exporter les journaux d'analyse des requêtes. Demandez à un membre de la collaboration de soumettre une demande de modification pour ajouter cette fonctionnalité à votre adhésion.
L'exportation de journaux n'est pas prise en charge pour les requêtes qui utilisent la confidentialité différentielle. Aucune. L'exportation du journal n'est pas disponible pour ces requêtes.
Seul le lanceur de requêtes ou le payeur de la requête peut exporter les journaux d'analyse. Demandez au membre qui a exécuté ou payé la requête d'exporter les journaux.

La page des détails de la requête comprend un tableau d'historique des exportations répertoriant chaque exportation et son statut. Choisissez une exportation qui a échoué pour voir l'erreur, ou choisissez Afficher la destination pour ouvrir les journaux exportés dans Amazon S3.

API

Pour exporter les journaux d'une requête (API)

Appelez StartAnalysisLogExport en spécifiant l'adhésion, la requête protégée et votre destination.

aws cleanrooms start-analysis-log-export \ --membership-identifier membership-id \ --analysis-id protected-query-id \ --analysis-type PROTECTED_QUERY \ --result-configuration '{ "outputConfiguration": { "s3": { "bucket": "amzn-s3-demo-bucket", "keyPrefix": "query-logs/" } } }'

La réponse renvoie un analysisLogExport objet contenant un analysisLogExportId et status unIN_PROGRESS.

Pour vérifier une exportation, appelez GetAnalysisLogExport avec l'identifiant d'adhésion et l'identifiant d'exportation, puis interrogez jusqu'à ce que le statut soit SUCCESS ouFAILED. Lorsqu'une exportation échoue, la réponse inclut un error champ contenant un code et un message.

aws cleanrooms get-analysis-log-export \ --membership-identifier membership-id \ --analysis-log-export-identifier analysis-log-export-id

Pour répertorier les exportations d'un abonnement, appelezListAnalysisLogExports. Vous pouvez filtrer les résultats par requête à l'aide deanalysisIdentifier, et selon l'état de l'exportation à l'aide destatus. Le status filtre accepte IN_PROGRESSSUCCESS, ouFAILED, et prend une valeur à la fois. Il s'agit des statuts de l'exportation elle-même, et non de la requête dont vous avez exporté les journaux. Les résultats sont paginés.

aws cleanrooms list-analysis-log-exports \ --membership-identifier membership-id \ --analysis-identifier protected-query-id \ --status SUCCESS

Une seule exportation peut être active à la fois pour une requête et une destination données. Si vous démarrez une exportation alors qu'une autre exportation pour la même requête et la même destination Amazon S3 est toujours en cours, la demande échoue avec une erreur de validation. Pour exporter deux fois la même requête à la fois, utilisez un préfixe de clé différent pour la deuxième exportation.

Vous exportez indépendamment des autres membres. Si vous et un autre membre en avez la capacité et avez tous deux exécuté ou payé pour la même requête, chacun de vous peut exporter les journaux vers sa propre destination.

Où sont écrits les journaux exportés

AWS Clean Rooms écrit les journaux exportés sous le compartiment et le préfixe de clé que vous spécifiez, en utilisant la structure suivante :

s3://your-bucket/key-prefix/collaboration=collaboration-id/analysis=protected-query-id/analysis-log-export-id/

Comme le chemin inclut l'ID d'exportation, le fait d'exporter la même requête plusieurs fois ne remplace pas les journaux d'une exportation précédente.

Un export contient le journal des événements Spark expurgé pour la requête. Ce journal est un ensemble d'enregistrements JSON structurés couvrant les tâches, les étapes, les tâches, les horaires et les plans de requêtes. Spark écrit lui-même ce format de journal des événements. Vous pouvez effectuer une exportation avec n'importe quel outil qui lit les journaux d'événements Spark, y compris votre propre outil. AWS Clean Rooms ne fournit pas de visualiseur pour les journaux exportés. Dans le répertoire d'exportation, les enregistrements suivent la structure utilisée par Spark pour un journal des événements évolutif. Un répertoire nommé eventlog_v2_protected-query-id contient un ou plusieurs events_ fichiers et un appstatus_ fichier qui indique que l'application a été terminée. Les noms de répertoire et de fichier utilisent l'ID de requête protégé plutôt qu'un AWS Clean Rooms identifiant interne.

Spark History Server est l'un de ces outils. Pour afficher une exportation dans Spark History Server, pointez une instance vers le eventlog_v2_ répertoire de la requête. Par exemple, une exportation d'une requête 6ba7b810-9dad-11d1-80b4-00c04fd430c8 vers le bucket amzn-s3-demo-bucket avec le préfixe clé query-logs/ produit les résultats suivants.

s3://amzn-s3-demo-bucket/query-logs/ collaboration=f47ac10b-58cc-4372-a567-0e02b2c3d479/ analysis=6ba7b810-9dad-11d1-80b4-00c04fd430c8/ a1b2c3d4-e5f6-7890-abcd-ef1234567890/ eventlog_v2_6ba7b810-9dad-11d1-80b4-00c04fd430c8/ events_1_6ba7b810-9dad-11d1-80b4-00c04fd430c8 appstatus_6ba7b810-9dad-11d1-80b4-00c04fd430c8

Dans cet exemple, définissez le répertoire des journaux du Spark History Server comme suit. Le fait de pointer sur le eventlog_v2_ répertoire affiche uniquement la requête que vous avez exportée. La lecture des journaux directement depuis Amazon S3 nécessite le connecteur S3A, utilisez donc le s3a:// schéma. Les informations d'identification utilisées par Spark History Server nécessitent un accès en lecture au bucket.

spark.history.fs.logDirectory s3a://amzn-s3-demo-bucket/query-logs/collaboration=f47ac10b-58cc-4372-a567-0e02b2c3d479/analysis=6ba7b810-9dad-11d1-80b4-00c04fd430c8/a1b2c3d4-e5f6-7890-abcd-ef1234567890/eventlog_v2_6ba7b810-9dad-11d1-80b4-00c04fd430c8/

Utilisez la version 3.5.0 ou ultérieure de Spark History Server. Vous êtes responsable de la configuration et de l'exécution de votre propre instance. Pour plus d'informations sur l'exécution d'une instance de Spark History Server, consultez la section Affichage après coup sur le site Web d'Apache Spark.

Résolution des problèmes d'exportation du journal

La demande échoue car vous n'êtes pas autorisé à exporter les journaux

Votre abonnement n'en a pas la CAN_EXPORT_QUERY_ANALYSIS_LOG capacité. Un membre de la collaboration doit soumettre une demande de modification pour ajouter la capacité, et tous les membres doivent l'approuver. Pour de plus amples informations, veuillez consulter Mettre à jour les capacités des membres.

La demande échoue car le bucket ne peut pas être écrit dans

Vérifiez que le bucket existe, qu'il se trouve dans le même compartiment Région AWS que la collaboration et que vous êtes autorisé à y écrire. Si la politique de compartiment refuse s3:PutObject ou restreint les écritures vers un point de terminaison VPC spécifique, AWS Clean Rooms impossible d'écrire dans le compartiment.

Si le bucket utilise SSE-KMS une clé gérée par le client, cette erreur peut également signifier que vous n'êtes pas autorisé à utiliser cette clé. Vérifiez que la politique relative aux touches vous autorise à appeler kms:GenerateDataKey et kms:Decrypt via Amazon S3.

L'exportation échoue car la requête n'a jamais été exécutée

La requête a atteint l'état terminal sans être exécutée sur Spark. Aucun journal n'a donc été généré. Cela se produit lorsqu'une requête échoue à être validée ou est annulée avant de démarrer. L'exportation échoue avec un code d'erreur LOGS_NOT_AVAILABLE et un message signalant qu'aucun journal d'exécution de requête n'est disponible pour la requête. Il n'y a rien à exporter.

La demande échoue car elle a été exécutée avant que l'exportation du journal ne soit disponible

Les journaux rédigés sont produits pendant l'exécution d'une requête. Une requête exécutée avant que l'exportation du journal ne soit disponible n'en AWS Clean Rooms produisait aucune. Il n'y a donc rien à exporter. Pour obtenir des journaux pour la même analyse, exécutez à nouveau la requête et exportez les journaux pour la nouvelle exécution.

La demande échoue car un quota a été dépassé

Vous avez atteint le nombre maximum d'exportations pouvant être en cours simultanément. Attendez la fin d'une exportation en cours, puis réessayez.

L'exportation démarre mais échoue

La vérification initiale des autorisations confirme uniquement ceux qui AWS Clean Rooms peuvent écrire dans votre compartiment au moment où vous démarrez l'exportation. Si vos autorisations changent ou si les informations d'identification utilisées pour l'exportation sont révoquées pendant que l'exportation est en cours d'exécution, l'exportation échoue une fois démarrée. Appelez GetAnalysisLogExport pour voir l'erreur, en résoudre la cause et démarrer une nouvelle exportation.

L'exportation échoue et signale une erreur interne

Une erreur interne peut signifier qu'aucun journal n'a été généré pour la requête. Vous pouvez réessayer l'exportation.

Les journaux exportés semblent incomplets

Si la requête s'est terminée parce qu'un processus a manqué de mémoire, certaines sorties de journal sont peut-être manquantes, car les journaux conservés sur un hôte qui s'arrête brusquement ne sont pas récupérés. Les journaux déjà écrits sont toujours exportés.

Il y a un validationSuccess objet de zéro octet dans le compartiment

AWS Clean Rooms écrit cet objet avec le préfixe clé que vous avez spécifié, afin de vérifier qu'il peut écrire sur votre destination avant de démarrer une exportation. Il est distinct des journaux exportés, qui sont écrits dans le répertoire de l'exportation, et vous pouvez le supprimer. Terminez le préfixe de votre clé par une barre oblique afin que cet objet soit créé à l'intérieur du préfixe plutôt qu'à côté de celui-ci.

Considérations et restrictions

  • Vous pouvez exporter les journaux des requêtes SQL exécutées après le 11 août 2026. L'exportation de journaux ne prend pas en charge PySpark les tâches.

  • L'exportation du journal n'est pas prise en charge pour les requêtes dont la validation a échoué ou qui ont été annulées avant d'atteindre le STARTED statut.

  • L'exportation de journaux n'est pas prise en charge pour les requêtes qui utilisent la confidentialité différentielle. Pour de plus amples informations, veuillez consulter AWS Clean Rooms Confidentialité différentielle.

  • Le compartiment de destination pour l'exportation des journaux doit se trouver dans le même compartiment Région AWS que celui de la collaboration. Cross-Region l'exportation n'est pas prise en charge.

  • Il est de votre responsabilité de sécuriser le compartiment de destination pour l'exportation des journaux. Bloquez l'accès public au bucket et activez la journalisation des accès au serveur si vous avez besoin de savoir qui lit les journaux exportés.

  • AWS Clean Rooms n'accepte pas de AWS KMS clé pour l'exportation du journal. Les journaux exportés sont chiffrés à l'aide de la configuration de chiffrement par défaut du compartiment Amazon S3 de destination. Pour les chiffrer à l'aide d'une clé gérée par le client, configurez le chiffrement par défaut du bucket de manière à utiliser cette clé avant de les exporter.

  • L'exportation de journaux ne prend en charge que les requêtes qui ont atteint l'état du terminal : SUCCESS FAILEDCANCELLED,, ouTIMED_OUT.

  • Vous ne pouvez pas annuler une exportation une fois qu'elle a démarré.

Pour les quotas qui s'appliquent à l'exportation de journaux, y compris le nombre d'exportations pouvant être exécutées simultanément, voirQuotas pour AWS Clean Rooms.