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;
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;
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 :
Créez l’application.
Vous pouvez créer une application localement sur la base des éléments suivants :
Fichiers sur une zone de préparation
Cela vous permet de tester rapidement une nouvelle version d’un script d’installation ou de fichiers de code d’application. Voir Créer une application à l’aide de fichiers en zone de préparation pour plus d’informations.
Une version ou un correctif défini dans le paquet d’application
Après avoir défini une version ou un correctif pour un paquet d’application, vous pouvez tester cette version en créant une application basée sur celle-ci. Pour plus d’informations, voir Créer une application à partir d’une version ou d’un correctif.
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
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.
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';
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;
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;
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;
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;
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";
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;
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;
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;
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;
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;
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’);
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')
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();
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();
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;
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;
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¶
Configurez l’application pour utiliser la journalisation et le traçage des événements.
Configurez une table d’événement dans le compte de développement local.
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;
Affichez les messages de journal et les événements de trace dans la table d’événements.