Configurer et gérer une table d’événements dans le compte fournisseur

Cette rubrique décrit comment les fournisseurs peuvent configurer une table d’événements et gérer le partage d’événements pour une application.

Configurer une table d’événements dans l’organisation du fournisseur dans chaque région

Pour collecter les messages de journal et les événements de trace partagés par un consommateur, un fournisseur doit configurer une table d’événements en procédant comme suit :

  1. Définir un compte comme compte d’événements.

  2. Créer une table d’événements dans le compte d’événements.

  3. Définir la table d’événements comme table d’événements active dans le compte d’événements.

Important

Si un fournisseur ne dispose pas d’un compte d’événements et d’une table d’événements actifs dans la région où l’application est installée avant que le consommateur n’installe une application, les événements de trace et les messages de journal sont ignorés.

Définir un compte comme compte d’événements

Pour stocker des journaux et des événements partagés, un fournisseur doit sélectionner un compte qui contiendra une table d’événements. Il peut s’agir de n’importe quel compte auquel un fournisseur peut accéder. Toutefois, si une organisation compte plusieurs fournisseurs publiant des paquets d’applications, envisagez d’utiliser un compte Snowflake dédié au stockage des événements partagés du consommateur.

Les restrictions suivantes s’appliquent aux comptes utilisés pour stocker des événements partagés :

  • Vous devez utiliser le rôle ORGADMIN pour définir un compte comme compte utilisé pour stocker des événements.

  • Le compte doit avoir une table d’événements active.

  • Le compte spécifié ne peut pas être :

    • Un compte bloqué ou suspendu.

    • Un compte de lecteurs.

    • Un compte d’essai.

    • Un compte géré par Snowflake.

Note

Un fournisseur ne peut collecter des journaux et des événements partagés que dans la région où un consommateur installe une application. Les fournisseurs doivent configurer un compte pour stocker les événements partagés dans chaque région où les consommateurs configurent le partage d’événements pour une application.

Pour faire d’un compte le compte d’événements d’une région, appelez la fonction système SYSTEM$SET_EVENT_SHARING_ACCOUNT_FOR_REGION comme montré dans l’exemple suivant :

SELECT SYSTEM$SET_EVENT_SHARING_ACCOUNT_FOR_REGION('<snowflake_region>', '<region_group>', '<account_name>')
Copy

Où :

snowflake_region

Nom de la région où se trouve le compte, par exemple AWS_US_WEST_2, AWS_US_EAST_1.

region_group

Spécifie le groupe de régions, par exemple : PUBLIC. Reportez-vous à Groupes de régions pour plus de détails.

account_name

Spécifie le nom du compte. Si un autre compte est déjà défini comme compte d’événements dans la région spécifiée, l’exécution de cette commande remplace le compte d’événements par le compte spécifié ici.

Créer une table d’événements dans le compte d’événements

Pour créer une table d’événements, exécutez la commande CREATE EVENT TABLE comme indiqué dans l’exemple suivant :

CREATE EVENT TABLE event_db.event_schema.my_event_table;
Copy

Cette commande spécifie la base de données et le schéma qui contiennent la table d’événements.

Définir la table d’événements comme table d’événements active

Un compte peut avoir plusieurs tables d’événements, mais une seule d’entre elles peut être définie comme table d’événements active dans un compte Snowflake à la fois. Sans table d’événements active, les messages de journal et les événements de trace partagés par le consommateur sont ignorés.

Après avoir créé la table d’événements, utilisez la commande ALTER ACCOUNT … SET EVENT_TABLE pour spécifier que la table d’événements est la table active pour le compte :

ALTER ACCOUNT SET EVENT_TABLE=event_db.event_schema.my_event_table;
Copy

Annuler la définition d’un compte comme compte d’événements

Pour annuler la désignation d’un compte comme compte d’événements pour une région, appelez la fonction système SYSTEM$UNSET_EVENT_SHARING_ACCOUNT_FOR_REGION :

SELECT SYSTEM$UNSET_EVENT_SHARING_ACCOUNT_FOR_REGION('<snowflake_region>', '<region_group>', '<account_name>')
Copy

Où :

snowflake_region

Nom de la région où se trouve le compte, par exemple AWS_US_WEST_2.

region_group

Spécifie le groupe de régions, par exemple : PUBLIC.

account_name

Spécifie le nom du compte.

Afficher les comptes d’événements dans une organisation

Pour afficher les comptes d’événements dans l’organisation d’un fournisseur, appelez la fonction système SYSTEM$SHOW_EVENT_SHARING_ACCOUNTS :

SELECT SYSTEM$SHOW_EVENT_SHARING_ACCOUNTS()
Copy

Note

Vous devez utiliser le rôle ORGADMIN pour appeler cette fonction.

Cette fonction système renvoie une chaîne au format JSON contenant une liste des comptes d’événements de l’organisation. Étant donné que les métadonnées prennent un certain temps à se propager dans toutes les régions, cette fonction peut nécessiter un court délai avant d’afficher le compte d’événements le plus récent une fois que l’utilisateur a défini ou supprimé le compte d’événements pour l’organisation.

Voir les niveaux d’événements de journalisation et de trace définis dans un paquet d’application

Utilisez la commande SHOW VERSIONS pour voir le niveau de journalisation des versions d’application définies dans un paquet d’application, comme le montre l’exemple suivant :

SHOW VERSIONS
  IN APPLICATION PACKAGE HelloSnowflake;
Copy

Voir les journaux et les événements dans la table d’événements

Pour voir les journaux et les événements stockés dans la table des événements, utilisez la commande SELECT comme indiqué dans l’exemple suivant :

SELECT * FROM EVENT_DB.EVENT_SCHEMA.MY_EVENT_TABLE
Copy

Pour plus d’informations sur l’interrogation de la table des événements, consultez les éléments suivants :

Voir Colonnes de table d’événements pour plus d’informations sur les colonnes de la table des événements.

Informations sur les événements partagés disponibles par le fournisseur

Les sections suivantes décrivent les informations que le Native Apps Framework partage avec les fournisseurs.

Contexte de l’événement de l’application partagé avec le fournisseur

Pour aider les fournisseurs à identifier facilement la source des événements partagés, les champs suivants sont remplis dans la colonne RESOURCE_ATTRIBUTES de la table des événements lorsqu’ils sont partagés avec le fournisseur :

  • snow.application.package.name

  • snow.application.consumer.organization

  • snow.application.consumer.name

  • snow.listing.name

  • snow.listing.global_name

Champs non partagés avec le fournisseur

Afin de protéger les informations relatives au consommateur, les champs suivants de la colonne RESOURCE_ATTRIBUTES ne sont pas partagés avec le fournisseur :

  • snow.database.id

  • snow.database.name

  • snow.schema.id

  • snow.executable.id

  • snow.owner.name

  • snow.owner.id

  • snow.warehouse.name

  • snow.warehouse.id

  • snow.query.id

  • snow.session.id

  • snow.session.role.primary.name

  • snow.session.role.primary.id

  • snow.user.name

  • snow.user.id

  • db.user

Au lieu de partager directement les champs snow.database.name et snow.query.id avec le fournisseur, Snowflake partage les valeurs de hachage (SHA-1) de ces deux champs dans les champs suivants :

  • snow.database.hash

  • snow.query.hash

Snowflake fournit la fonction SHA-1 utilisée pour masquer ces attributs. Les consommateurs peuvent calculer les valeurs de hachage pour le nom de la base de données et l’identifiant de la requête, et les utiliser comme valeurs de référence lorsqu’ils contactent le fournisseur.