Installer et tester une application localement

Cette rubrique décrit comment les fournisseurs peuvent créer et tester localement une Snowflake Native App.

Créer et tester des applications

Avec Snowflake Native App Framework, les fournisseurs peuvent créer une application dans le même compte que le paquet d’application, ce qui leur permet de tester l’application avant de la publier pour les consommateurs.

Les fournisseurs peuvent également tester l’application dans un seul compte sans avoir à alterner entre les comptes fournisseur et consommateur.

Privilèges requis pour créer et tester une application

Pour créer une application localement à partir d’un paquet d’application, vous devez disposer des privilèges suivants accordés à votre rôle :

  • Le privilège au niveau du compte CREATE APPLICATION accordé à votre rôle.

  • Le privilège au niveau de l’objet INSTALL accordé sur le paquet d’application.

Les exemples suivants montrent comment utiliser la commande GRANT <privilèges> … TO ROLE pour accorder ces privilèges à un compte :

GRANT CREATE APPLICATION ON ACCOUNT TO ROLE provider_role;
GRANT INSTALL ON APPLICATION PACKAGE hello_snowflake_package
  TO ROLE provider_role;
Copy

Utiliser le privilège DEVELOP

Par défaut, le rôle utilisé pour créer un paquet d’application a les autorisations d’utiliser la commande CREATE APPLICATION pour créer une application basée sur le paquet d’application.

Toutefois, dans certains environnements de développement, vous devrez peut-être autoriser des utilisateurs ayant d’autres rôles à créer et à tester un paquet d’application. Pour ce faire, accordez à un rôle le privilège au niveau de l’objet DEVELOP sur le paquet d’application.

Le privilège DEVELOP accorde les privilèges nécessaires pour créer et tester une application basée sur un paquet d’application. Ce privilège permet à un utilisateur d’effectuer les tâches suivantes à l’aide du paquet d’application pour lequel il a obtenu l’accès :

  • Créez une application sur la base d’une version ou d’un correctif spécifié dans le paquet d’application.

  • Effectuez une mise à niveau vers une version différente d’une application à l’aide de la commande ALTER APPLICATION.

  • Créez ou mettez à jour une application en utilisant des fichiers dans une zone de préparation nommée.

  • Activez le mode débogage sur une application créée en mode développement.

Pour accorder le privilège DEVELOP à un rôle, utilisez la commande GRANT <privilèges> … TO ROLE comme indiqué dans l’exemple suivant :

GRANT DEVELOP ON APPLICATION PACKAGE hello_snowflake_package TO ROLE other_dev_role;
Copy

Note

Le privilège au niveau de l’objet DEVELOP est spécifique à un seul paquet d’application. Vous devez exécuter GRANT <privilèges> … TO ROLE pour chaque paquet d’application pour lequel vous voulez attribuer le privilège DEVELOP.

Processus de création et de test d’une application

Snowflake Native App Framework propose différentes manières de créer une application à partir d’un paquet d’application. Cela vous permet de tester une Snowflake Native App avant de la publier auprès des consommateurs. La méthode que vous utilisez dépend des parties de l’application que vous souhaitez tester.

Les étapes suivantes décrivent un processus typique de test d’une application :

  1. Créez l’application.

    Vous pouvez créer une application localement sur la base des éléments suivants :

  2. Mettre à jour une application.

    Après avoir vérifié qu’une application fonctionne correctement, vous pouvez la mettre à niveau vers une nouvelle version de l’une des deux façons suivantes :

    • À partir d’un fichier sur une zone de préparation

    • À partir d’une version ou d’un correctif défini dans le paquet d’application

  3. Créez une application sur la base d’une directive de version.

    Après avoir testé une application à l’aide de fichiers spécifiques ou d’une version ou d’un correctif, vous pouvez créer une application sur la base de la directive de version définie pour le paquet d’application. Avec la directive de version, vous n’avez pas besoin de spécifier une zone de préparation ou une version de l’application.

    Pour plus d’informations, voir Créer une application à l’aide de fichiers en zone de préparation.

  4. Installez une application à partir d’un listing.

    Après avoir vérifié que le paquet d’application et l’application fonctionnent correctement dans votre compte local, vous pouvez ajouter le paquet d’application à un listing et tester l’installation à l’aide de Snowsight.

    Pour plus d’informations, voir Créer une application à l’aide de fichiers en zone de préparation.

Créer une application

Vous pouvez installer une application directement dans votre compte pour tester ses fonctionnalités et ses privilèges avant de la partager avec les clients. La commande CREATE APPLICATION prend en charge différentes syntaxes pour la création d’une application.

Note

Les sections suivantes supposent que vous avez créé un paquet d’application, le fichier manifeste requis et un script d’installation.

Créer une application à l’aide de fichiers en zone de préparation

Vous pouvez créer une application à l’aide d’un fichier manifeste et d’un script d’installation téléchargé dans une zone de préparation nommée. Cela vous permet de tester les modifications apportées à ces fichiers sans avoir à ajouter une nouvelle version à un paquet d’application.

Utilisez la commande CREATE APPLICATION pour créer une application à l’aide de fichiers en zone de préparation, comme le montre l’exemple suivant :

CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package
  USING '@hello_snowflake_code.core.hello_snowflake_stage';
Copy

Créer une application à partir d’une version ou d’un correctif

Après avoir défini une version ou un correctif dans un paquet d’application, vous pouvez créer une application basée sur cette version ou ce correctif.

Pour créer une application à partir d’une version spécifique, utilisez la commande CREATE APPLICATION comme indiqué dans l’exemple suivant :

CREATE APPLICATION hello_snowflake_app
  FROM APPLICATION PACKAGE hello_snowflake_package
  USING VERSION v1_0;
Copy

Pour créer une application à partir d’un correctif spécifique, utilisez la commande CREATE APPLICATION comme indiqué dans l’exemple suivant :

CREATE APPLICATION hello_snowflake_app
  FROM APPLICATION PACKAGE hello_snowflake_package
  USING VERSION v1_0 PATCH 2;
Copy

Créer une application sur la base d’une directive de version

Après avoir spécifié une directive de version (personnalisée ou par défaut) dans un paquet d’application, vous pouvez créer une application basée sur cette directive de version.

Pour créer une application basée sur une directive de version, utilisez la commande CREATE APPLICATION comme indiqué dans l’exemple suivant :

CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package;
Copy

Mettre à niveau une application à l’aide d’une zone de préparation

Pour mettre à niveau une application à l’aide de fichiers sur une zone de préparation nommée, utilisez la commande ALTER APPLICATION, comme indiqué dans l’exemple suivant :

ALTER APPLICATION HelloSnowflake
  UPGRADE USING @CODEDATABASE.CODESCHEMA.AppCodeStage;
Copy

Mettre à niveau une application à partir d’une version ou d’un correctif

Pour mettre à niveau une application créée à l’aide d’une version ou d’un correctif spécifique, utilisez la commande ALTER APPLICATION comme indiqué dans l’exemple suivant :

ALTER APPLICATION HelloSnowflake
 UPGRADE USING VERSION "v1_1";
Copy

Définir une application comme contexte actif

Pour définir une application comme contexte actif d’une session, exécutez la commande USE APPLICATION, comme indiqué dans l’exemple suivant :

USE APPlICATION hello_snowflake_app;
Copy

Note

Pour exécuter cette commande, vous devez disposer du rôle avec le privilège USAGE pour l’application.

Afficher l’application dans votre compte

Pour afficher la liste des applications disponibles pour votre compte, utilisez la commande SHOW APPLICATIONS, comme indiqué dans l’exemple suivant :

SHOW APPLICATIONS;
Copy

Afficher les informations relatives à une application

Pour afficher les détails d’une application, exécutez la commande DESCRIBE APPLICATION, comme le montre l’exemple suivant :

DESC APPLICATION hello_snowflake_app;
Copy

En mode de développement, cette commande affiche les schémas autorisés par les rôles d’application du consommateur.

En mode débogage, cette commande affiche tous les schémas d’un paquet d’application.

Utilisez les modes développement, débogage et débogage de session pour tester une application

Avec Snowflake Native App Framework, les fournisseurs peuvent utiliser les modes suivants pour créer une application et tester ses fonctionnalités :

Mode de développement

Le fournisseur peut tester l’application du point de vue du consommateur. Cela signifie que le fournisseur ne peut accéder qu’aux objets pour lesquels le consommateur s’est vu accorder des privilèges.

Mode débogage

Le fournisseur peut accéder à tous les objets de l’application. En mode débogage, le rôle principal de la session est utilisé lors de la modification de l’état dans l’application.

Mode de débogage de session

Le fournisseur peut accéder aux objets de l’application en utilisant les privilèges accordés à l’application ou au script d’installation.

À propos du mode développement

Lorsque vous créez une application localement à partir d’un paquet d’application en spécifiant une version ou des fichiers d’application sur une zone de préparation nommée, l’application est considérée comme étant en mode développement.

Utilisez le mode développement pour tester et dépanner une application au sein d’un même compte. En mode développement, vous pouvez créer et tester une application basée sur une version spécifique d’un paquet d’application. Vous pouvez également créer et tester une application à l’aide de fichiers d’application sur une zone de préparation. Vous pouvez ainsi tester rapidement les modifications apportées au script d’installation ou à la logique d’application.

Le mode développement fournit un mode de débogage supplémentaire que vous pouvez utiliser pour afficher et tester tous les objets d’une application qu’un consommateur ne pourrait pas voir.

En mode développement, par exemple, l’exécution des commandes SHOW ou DESC sur des objets de l’application n’affichera que les objets pour lesquels le consommateur a reçu des autorisations d’affichage. Cependant, en mode DEBUG, vous pouvez voir tous les objets présents dans l’application.

À propos du mode débogage

En mode débogage, vous pouvez afficher et modifier tous les objets d’une application. Les objets qui ne sont pas visibles par un consommateur, par exemple les objets non attribués à un rôle de base de données ou les objets de contenu partagé, sont visibles dans ce mode.

Note

Lorsque vous créez des objets, tels qu’une table, en mode débogage, l’objet n’a pas la même propriété que l’application. Si vous devez créer de nouveaux objets pendant que vous testez une application, utilisez le mode de débogage de session <label-native_apps_session_debug_mode>:ref:.

Le test d’une application en mode débogage nécessite les éléments suivants :

  • L’application doit être créée en mode développement, c’est-à-dire qu’elle doit être basée sur une version spécifique ou des fichiers sur une zone de préparation.

  • Vous devez explicitement activer le mode débogage sur l’application.

Note

Le mode débogage ne peut être activé ou désactivé que pour une application créée en mode développement au sein du même compte contenant le paquet d’application.

Pour activer le mode débogage sur une application, utilisez la commande ALTER APPLICATION comme indiqué dans l’exemple suivant :

ALTER APPLICATION hello_snowflake_app SET DEBUG_MODE = TRUE;
Copy

Cette commande active le mode débogage pour une application nommée hello_snowflake_app. De même, pour désactiver le mode débogage, utilisez la même commande, comme indiqué dans l’exemple suivant :

ALTER APPLICATION hello_snowflake_app SET DEBUG_MODE = FALSE;
Copy

Cette commande désactive le mode débogage pour l’application nommée hello_snowflake_app.

Note

Pour exécuter cette commande, vous devez disposer du privilège OWNERSHIP sur l’application. Vous devez également avoir le privilège DEVELOP sur le paquet d’application.

En outre, l’application doit être créée en mode développement et dans le même compte que le paquet d’application.

Mode débogage de session

Le mode débogage de sessions permet aux fournisseurs de voir et de modifier tous les objets de l’application et d’exécuter des instructions en utilisant les mêmes privilèges que ceux dont dispose l’application lorsqu’elle est installée sur le compte du consommateur. Les objets qui ne sont pas visibles pour un consommateur, par exemple les objets qui ne sont pas accordés à un rôle d’application, sont également visibles en mode débogage de session.

Contrairement au mode débogage, le mode débogage de session ne s’applique qu’à la session en cours afin de réduire les risques de sécurité. Vous devez activer le mode débogage de session pour une application chaque fois que vous démarrez une nouvelle session. Le mode débogage de session diffère également du mode de débogage en ce qu’il vous permet de tester une application en utilisant les mêmes privilèges que l’application ou le script d’installation. Pour utiliser ces privilèges, vous pouvez spécifier l’un des éléments suivants lors de l’activation du mode de débogage de session. Pour plus d’informations, voir Activer le mode débogage de session pour une application.

  • AS_APPLICATION : toutes les instructions sont exécutées en utilisant les mêmes privilèges que ceux dont dispose l’application lorsqu’elle est créée dans le compte du consommateur.

  • AS_SETUP_SCRIPT : toutes les instructions sont exécutées en utilisant les mêmes privilèges que ceux dont dispose le script d’installation lorsqu’il est exécuté dans le compte du consommateur lors de la création ou de la mise à niveau d’une application.

Lorsqu’un fournisseur crée des objets, tels qu’une table, en utilisant le mode de débogage de session, l’objet est créé avec les mêmes privilèges que l’application.

Privilèges requis pour utiliser le mode débogage de session

L’utilisation du mode débogage de session pour afficher les objets d’une application répond aux exigences suivantes :

  • L’application doit être créée en mode développement, ce qui exige que l’application soit créée sur la base d’une version spécifique ou sur la base de fichiers situés sur une zone de préparation.

  • L’application doit se trouver dans le même compte que le paquet d’application sur lequel l’application est basée.

  • Vous devez disposer du privilège OWNERSHIP pour l’application.

  • Vous devez disposer du privilège DEVELOP pour le paquet d’application.

Note

Le mode débogage de session ne peut être utilisé que dans la session dans laquelle le mode débogage est défini. Par exemple, si vous entrez en mode débogage dans une feuille de calcul, puis que vous ouvrez l’application dans une deuxième feuille de calcul, l’application dans la deuxième feuille de calcul n’est pas en mode débogage de session.

Activer le mode débogage de session pour une application

Pour activer le mode débogage de session sur une application dans la session en cours, utilisez la fonction système SYSTEM$BEGIN_DEBUG_APPLICATION comme indiqué dans l’exemple suivant :

SELECT SYSTEM$BEGIN_DEBUG_APPLICATION(‘hello_snowflake_app’);
Copy

Cette fonction active le mode débogage de session pour l’application nommée hello_snowflake_app.

Vous pouvez également activer le débogage de session en spécifiant le mode d’exécution de l’application, comme le montre l’exemple suivant :

SYSTEM$BEGIN_DEBUG_APPLICATION( 'hello_snowflake_app', execution_mode ='AS_APPLICATION')
Copy

Cette fonction définit le mode d’exécution de l’application hello_snowflake_app sur AS_APPLICATION. Ce mode exécute toutes les instructions en utilisant les mêmes privilèges que ceux dont dispose l’application lorsqu’elle est créée dans le compte du consommateur.

Afficher le statut de débogage de la session pour une application dans la session en cours

Pour afficher le statut de débogage de la session en cours, utilisez la fonction système SYSTEM$GET_DEBUG_STATUS, comme le montre l’exemple suivant :

SELECT SYSTEM$GET_DEBUG_STATUS();
Copy

Désactiver le mode débogage de session pour une application

Pour désactiver le mode débogage de session pour une application dans la session en cours, utilisez la fonction système SYSTEM$END_DEBUG_APPLICATION, comme indiqué dans l’exemple suivant :

SELECT SYSTEM$END_DEBUG_APPLICATION();
Copy

Désactiver l’expurgation des données du fournisseur lors du test d’une application

Au sein d’une application, les informations sont expurgées du profil et de l’historique des requêtes afin de cacher au consommateur les détails de mise en œuvre de l’application. Voir Protection de la propriété intellectuelle des fournisseurs.

Lorsque vous testez une application localement, vous pouvez désactiver l’expurgation des données du fournisseur dans le profil et l’historique des requêtes.

Note

Lorsque le mode débogage de session est utilisé, tous les objets et données d’une application sont visibles par le fournisseur, même si les informations sont expurgées pour le consommateur. Par exemple, les informations renvoyées par les commandes SHOW APPLICATIONS et DESCRIBE APPLICATION ne sont pas expurgées lorsque le mode débogage de session est utilisé.

Privilèges requis pour désactiver l’expurgation des données du fournisseur lors du test d’une application

La désactivation de l’expurgation des données du fournisseur pour une application nécessite les privilèges suivants :

  • L’application doit être créée en mode développement, c’est-à-dire qu’elle doit être basée sur une version spécifique ou des fichiers sur une zone de préparation.

  • L’application doit être créée dans le même compte que celui qui contient le paquet d’application.

  • Vous devez disposer du privilège OWNERSHIP pour l’application.

  • Vous devez disposer du privilège DEVELOP pour le paquet d’application.

Désactiver l’expurgation des informations des données du fournisseur

Pour désactiver les informations relatives à une application, utilisez la commande ALTER APPLICATION comme indiqué dans l’exemple suivant :

ALTER APPLICATION hello_snowflake_app SET DISABLE_APPLICATION_REDACTION = TRUE;
Copy

Cette commande désactive l’expurgation des données du fournisseur pour une application nommée hello_snowflake_app.

Pour activer l’expurgation des données du fournisseur, utilisez la même commande que celle affichée dans l’exemple suivant :

ALTER APPLICATION hello_snowflake_app SET DISABLE_APPLICATION_REDACTION = FALSE;
Copy

Tester le partage d’événements en mode développement

Les fournisseurs utilisent le mode développement pour installer et tester une application qui utilise la journalisation et le traçage des événements. Les fournisseurs peuvent configurer une table d’événements localement dans leur compte de développement, installer l’application en mode développement et voir les événements et les journaux que l’application émet et ceux qui sont partagés en retour avec le fournisseur.

Note

Pour tester le partage d’événements en mode développement, l’application doit définir les définitions d’événements dans le fichier manifeste.

Différences dans le mode de développement

En mode développement, les applications sont créées en fonction de l’un des éléments suivants :

  • Fichiers chargés vers la zone de préparation.

  • Versions ou correctifs définis dans le paquet d’application.

Lorsque vous testez le partage d’événements localement en mode développement, vous constatez des différences de comportement par rapport aux applications créées à partir d’une annonce.

  • Le privilège global MANAGE EVENT SHARING n’est pas requis pour activer le partage d’événements.

  • Les événements partagés sont collectés dans des tables d’événements locales. Dans la table des événements locaux, les fournisseurs peuvent voir deux entrées pour un même événement :

    • L’événement que l’application émet du côté consommateur lorsque l’application est installée.

    • L’événement qui est partagé avec le fournisseur.

Tester le partage d’événements en mode développement

  1. Configurez l’application pour utiliser la journalisation et le traçage des événements.

  2. Configurez une table d’événement dans le compte de développement local.

  3. Créez l’application localement en exécutant l’une des commandes suivantes :

    CREATE APPLICATION hello_snowflake_app
      FROM APPLICATION PACKAGE hello_snowflake_package
      USING @path_to_staged_files
      AUTHORIZE_TELEMETRY_EVENT_SHARING = TRUE;
    
    CREATE APPLICATION hello_snowflake_app
      FROM APPLICATION PACKAGE hello_snowflake_package
      USING VERSION v1_0
      PATCH 0
      AUTHORIZE_TELEMETRY_EVENT_SHARING = TRUE;
    
    Copy
  4. Affichez les messages de journal et les événements de trace dans la table d’événements.