Mettre à jour et mettre à niveau une Snowflake Native App

Le Snowflake Native App Framework permet aux fournisseurs de mettre à jour une Snowflake Native App pour y ajouter de nouvelles fonctionnalités, corriger des bogues et apporter d’autres modifications. Cette rubrique explique comment ajouter des versions et des correctifs à un paquet d’application. Il explique également comment mettre à niveau les instances installées d’une Snowflake Native App.

À propos des versions et des correctifs

Dans le contexte du Snowflake Native App Framework, les termes « version » et « correctif » font référence aux éléments suivants :

Version

Contient généralement des mises à jour importantes d’une Snowflake Native App. Les versions sont définies dans un paquet d’application. Un paquet d’application ne peut avoir que deux versions actives à la fois. Pour ajouter une nouvelle version à un paquet d’application qui a déjà deux versions définies, vous devez commencer par supprimer l’une des versions.

Correctif

Contient généralement de petites mises à jour d’une Snowflake Native App. Comme les versions, les correctifs sont définis dans le paquet d’application. Bien qu’un paquet d’application ne puisse contenir que deux versions actives à la fois, une même version peut contenir plusieurs correctifs.

Note

Une seule version peut comporter jusqu’à 130 correctifs.

Lorsqu’un fournisseur ajoute une nouvelle version à un paquet d’application, la nouvelle version se voit automatiquement attribuer le correctif 0. Lorsqu’un fournisseur ajoute un nouveau correctif à une version, il peut spécifier manuellement le numéro de correctif. Si aucun numéro de correctif n’est fourni, Snowflake incrémente automatiquement la version du correctif de 1.

Après avoir ajouté une version ou un correctif à un paquet d’application, vous pouvez tester les modifications localement en créant un objet d’application basé sur la version ou le correctif. Pour plus d’informations, voir Création d’une application à partir d’un niveau de version ou de correctif.

Note

Chaque version et chaque correctif définis dans un paquet d’application doivent avoir leur propre version du script d’installation et des fichiers d’application.

Différences entre les versions et les correctifs

Lorsqu’un fournisseur publie une nouvelle version d’une application, le Snowflake Native App Framework s’assure que seule la version précédente de l’application est active. Par exemple, si un fournisseur a publié les versions V1 et V2 d’une application, le Snowflake Native App Framework s’assure que seule la version V2 est actuellement installée sur le compte d’un consommateur avant de passer à la version V3. Ainsi, le script d’installation ne doit tenir compte que des différences entre les versions V2 et V3. En d’autres termes, le script d’installation n’est rétrocompatible qu’avec la version la plus récente de l’application. Si un fournisseur modifie l’état de l’application, par exemple, en créant une nouvelle table ou en ajoutant des colonnes à une table, il n’existe pas de problème de compatibilité entre les versions.

En revanche, lorsqu’un fournisseur publie un nouveau correctif pour une version d’une application, le Snowflake Native App Framework n’impose aucune restriction quant au nombre de correctifs actifs en cours d’exécution. Les fournisseurs doivent éviter de modifier l’état d’une application dans un correctif.

À propos des directives de version

Une directive de version spécifie la version (et éventuellement le correctif) qui est utilisée lorsqu’un consommateur installe une Snowflake Native App. Les directives de version sont également utilisées pour déclencher une mise à niveau automatique de toutes les instances installées d’une version ou d’un correctif spécifique.

Les directives de version sont définies dans le paquet d’application. Il existe deux types de directives de version :

Directive de version personnalisée

Permet à un fournisseur de spécifier la version d’une application que des comptes Snowflake spécifiques peuvent installer. Pour plus d’informations, voir Ajouter une directive de version personnalisée.

Directive de version par défaut

Spécifie la version et le correctif applicables à tous les consommateurs lors de l’installation d’une Snowflake Native App. Si un fournisseur crée des versions V1 et V2 d’une application, le fait de définir la directive de version par défaut sur V2 garantit que lorsqu’un consommateur installe l”Snowflake Native App, il installe la version V2. Pour plus d’informations, voir Définir une directive de version par défaut.

Si un fournisseur créer les versions V2 et V3 d’une application, il peut assigner V2 comme version par défaut et créer une directive de version personnalisée pour partager V3 uniquement avec des comptes spécifiques. Un fournisseur peut également partager la version V3 de l’application avec un compte test avant de publier cette version.

Note

Si vous spécifiez à la fois une directive de version par défaut et une directive de version personnalisée, la directive de version personnalisée est toujours prioritaire. Dans l’exemple ci-dessus, les comptes consommateurs spécifiés dans la directive de version personnalisée ne pourront installer que la version V3 de l’application.

Vous devez définir une directive de version dans un paquet d’application avant de pouvoir effectuer les tâches suivantes :

  • Créer une annonce publique avec le paquet d’application comme contenu de données.

  • Installer une Snowflake Native App sur un compte consommateur.

À propos des mises à niveau

Dans le contexte du Snowflake Native App Framework, les mises à niveau sont des mises à jour d’une version ou d’un correctif d’une Snowflake Native App installée sur le compte consommateur. Le Snowflake Native App Framework prend en charge deux types de mises à niveau :

Mises à niveau automatisées

Les mises à niveau automatisées sont des mises à niveau lancées par le fournisseur. Lorsqu’une nouvelle version ou un nouveau correctif est disponible, le fournisseur modifie la directive de version dans le paquet d’application. Cela déclenche une mise à niveau automatique de toutes les instances installées de l’application spécifiée par la directive de version.

Mises à niveau manuelles

Les mises à niveau manuelles sont des mises à niveau lancées par le consommateur en réponse à une communication du fournisseur. Les mises à jour manuelles sont utiles lorsqu’un fournisseur doit publier rapidement une mise à jour, par exemple une correction de bogue, à l’intention d’un consommateur.

Lorsqu’une nouvelle version ou un nouveau correctif est disponible, le fournisseur modifie la directive de versions dans le paquet d’application, puis il informe le consommateur qu’une nouvelle version est disponible. Le consommateur effectue ensuite la mise à niveau en exécutant la commande ALTER APPLICATION pour effectuer la mise à niveau. En général, les mises à niveau manuelles permettent au consommateur de mettre à niveau l’application installée plus rapidement que les mises à niveau automatisées.

Pour des informations sur le workflow de mise à niveau, voir Mettre à niveau une Snowflake Native App.

À propos des mises à niveau dans différentes régions

Voir Mettre à niveau une application installée dans plusieurs régions pour des informations sur la mise à niveau d’une application installée dans différentes régions.

Ajouter une version ou un correctif à un paquet d’application

Les informations relatives à la version d’une application sont spécifiées dans le paquet d’application.

Privilèges nécessaires pour ajouter ou supprimer des versions et des correctifs

Pour spécifier une version ou un correctif pour un paquet d’application, vous devez disposer de l’un des privilèges suivants accordés à votre rôle sur le paquet d’application :

  • OWNERSHIP

  • MANAGE VERSIONS

Par exemple, pour accorder le privilège MANAGE VERSION sur le paquet d’application au rôle release_mgr, utilisez la commande GRANT <privilèges> comme indiqué dans l’exemple suivant :

GRANT MANAGE VERSIONS ON APPLICATION PACKAGE hello_snowflake_package
  TO ROLE release_mgr;
Copy

Ajouter une version à un paquet d’application via SQL

L’exemple suivant montre comment utiliser la commande ALTER APPLICATION PACKAGE pour ajouter une version à un paquet d’application.

ALTER APPLICATION PACKAGE MyAppPackage
  ADD VERSION v1_0
  USING '@dev_stage/v1_0'
  LABEL = 'MyApp Version 1.0';
Copy

Dans cet exemple, v1_0 est un identificateur de la version qui n’est pas visible par les consommateurs lorsqu’ils installent l’application. Le consommateur voit les informations relatives à la version, telles que définies dans la clause LABEL.

Seules deux versions d’une application peuvent exister en même temps. Par exemple, si vous définissez v1_0 et v1_1 dans une application, vous devez supprimer v1_0 pour créer v1_2. Cependant, vous pouvez avoir plusieurs correctifs pour une seule version.

Vous pouvez définir le nom de la version et la balise dans le fichier manifest.yml ou les spécifier directement avec la commande ALTER APPLICATION PACKAGE. Si vous les définissez dans le fichier manifest.yml ainsi qu’avec la commande SQL, les valeurs spécifiées dans la commande SQL ont la priorité sur les valeurs spécifiées dans le fichier manifest.yml.

Ajouter un correctif à un paquet d’application via SQL

En plus de créer des versions pour une application, vous pouvez également créer des correctifs pour une version spécifique. Comme les versions, les correctifs d’application ont également leurs propres fichiers d’application.

Pour créer un nouveau correctif pour un paquet d’application, utilisez la clause ADD PATCH FOR VERSION de la commande ALTER APPLICATION PACKAGE … VERSION , comme indiqué dans l’exemple suivant :

ALTER APPLICATION PACKAGE MyAppPackage
 ADD PATCH FOR VERSION V1_0
 USING '@dev_stage/v1_0_p1;
Copy

Dans l’exemple, aucun numéro de correctif n’est fourni à la clause ADD PATCH FOR VERSION V1_0. Dans ce cas, Snowflake incrémente automatiquement le numéro de correctif de 1.

Pour créer un nouveau correctif pour un paquet d’application avec un numéro de correctif personnalisé, fournissez un numéro de correctif à la clause ADD PATCH FOR VERSION de la commande ALTER APPLICATION PACKAGE … VERSION, comme indiqué dans l’exemple suivant :

ALTER APPLICATION PACKAGE MyAppPackage
 ADD PATCH 3
 FOR VERSION V1_0
 USING '@dev_stage/v1_0_p1;
Copy

Afficher les versions et les correctifs d’un paquet d’application

En tant que fournisseur, vous pouvez voir les versions et les correctifs définis pour une application en exécutant la commande SHOW VERSIONS sur le paquet d’application.

La commande suivante affiche les versions et les correctifs qui ont été définis pour un paquet d’application nommé hello_snowflake_package :

SHOW VERSIONS IN APPLICATION PACKAGE hello_snowflake_package;
Copy

Supprimer une version d’un paquet d’application

Pour supprimer une version d’un paquet d’application, vous devez vérifier qu’il n’existe pas de directives de version pointant actuellement vers la version à supprimer.

Pour afficher les directives de version spécifiées dans un paquet d’application, exécutez la commande SHOW RELEASE DIRECTIVES comme indiqué dans l’exemple suivant :

SHOW RELEASE DIRECTIVES IN APPLICATION PACKAGE hello_snowflake_package;
Copy

Pour supprimer une version d’un paquet d’application, utilisez la clause DROP VERSION de la commande ALTER APPLICATION PACKAGE comme indiqué dans l’exemple suivant :

ALTER APPLICATION PACKAGE hello_snowflake_package
  DROP VERSION v1_0;
Copy

Après l’exécution de cette commande, la version n’est pas supprimée tant que toutes les instances installées de l’application n’ont pas été supprimées. Pour vérifier le statut de la commande de suppression, utilisez la commande SHOW VERSIONS comme indiqué dans l’exemple suivant :

SHOW VERSIONS IN APPLICATION PACKAGE hello_snowflake_package;
Copy

La colonne dropped_on indique l’horodatage du lancement de la suppression.

Note

La version supprimée n’apparaît dans la sortie de cette commande que si le statut est DROPPED. Lorsque toutes les instances installées de l’application sont supprimées, la version supprimée n’apparaît plus.

Lorsqu’une version est supprimée, les consommateurs ne peuvent plus installer de nouvelles instances de cette version de l’application.

Selon la manière dont l’application est publiée auprès des consommateurs, la suppression de la version peut prendre plus ou moins de temps :

  • Si le paquet d’application n’a pas été publié auprès des consommateurs, la version est immédiatement supprimée.

  • Si le paquet d’application a été publié sous forme d’annonce publique ou privée dans une seule région, la version est immédiatement supprimée.

  • Si le paquet d’application est publié sous forme de produit de données d’une annonce partagée dans la même région que celle du paquet d’application, la version est supprimée en l’espace de quelques heures.

  • Si le paquet d’application est publié sous forme de produit de données d’une annonce via Exécution automatique inter-Cloud, il faudra peut-être plus de temps pour que la version soit supprimée dans toutes les régions.

Définir la directive de version d’un paquet d’application

Après avoir ajouté une version à un paquet d’application, vous pouvez spécifier les directives de version du paquet d’application. Les directives de version déterminent la version de l’application qui est disponible pour un consommateur lorsqu’il installe l’application ou lorsqu’une application installée est automatiquement mise à niveau.

Privilèges nécessaires pour définir la directive de version

Pour définir une directive de version, un fournisseur doit avoir le privilège MANAGE RELEASES ou être propriétaire du paquet d’application.

GRANT MANAGE RELEASES ON APPLICATION PACKAGE hello_snowflake_package
  TO ROLE release_mgr;
Copy

Définir la directive de version par défaut d’un paquet d’application

Utilisez la commande ALTER APPLICATION PACKAGE avec SET DEFAULT RELEASE DIRECTIVE pour définir la directive de version par défaut, comme indiqué dans l’exemple suivant :

ALTER APPLICATION PACKAGE hello_snowflake_package
  SET DEFAULT RELEASE DIRECTIVE
  VERSION = v1_0
  PATCH = 2;
Copy

Pour mettre à jour la directive de version par défaut d’un paquet d’application, exécutez de nouveau la commande ALTER APPLICATION PACKAGE avec SET DEFAULT RELEASE DIRECTIVE, en spécifiant de nouvelles valeurs pour VERSION ou PATCH, le cas échéant.

Définir une directive de version personnalisée d’un paquet d’application

Pour ajouter une directive de version personnalisée, utilisez la commande ALTER APPLICATION PACKAGE avec SET RELEASE DIRECTIVE. Utilisez la clause ACCOUNTS pour spécifier les comptes auxquels s’applique cette directive de version. Par exemple :

ALTER APPLICATION PACKAGE hello_snowflake_package
  SET RELEASE DIRECTIVE hello_snowflake_package_custom
  ACCOUNTS = (CONSUMER_ORG.CONSUMER_ACCOUNT)
  VERSION = v1_0
  PATCH = 0;
Copy

Mettre à jour une directive de version personnalisée

Pour mettre à jour la version ou le correctif d’une directive de version personnalisée, utilisez la commande ALTER APPLICATION PACKAGE avec MODIFY RELEASE DIRECTIVE comme indiqué dans l’exemple suivant :

ALTER APPLICATION PACKAGE hello_snowflake_package
  MODIFY RELEASE DIRECTIVE hello_snowflake_package_custom
  VERSION = v1_0
  PATCH = 0;
Copy

En revanche, vous ne pouvez pas modifier les comptes associés à la directive de version. Pour modifier l’organisation et le compte associés à une directive de version, procédez comme suit :

  1. Supprimez la directive de version du paquet d’application en exécutant la commande ALTER APPLICATION PACKAGE avec UNSET RELEASE DIRECTIVE.

  2. Ajoutez à nouveau la directive de version au paquet d’application en exécutant la commande ALTER APPLICATION PACKAGE avec SET RELEASE DIRECTIVE et en utilisant la clause ACCOUNTS pour spécifier la liste des comptes.

Note

Lorsque vous modifiez l’organisation et le compte associés à la directive de version, veillez à ajouter la nouvelle directive de version immédiatement après avoir supprimé l’ancienne. Si vous ne le faites pas, les applications installées des comptes affectés à la directive de version personnalisée reviendront à la directive de version par défaut.

Supprimer une directive de version personnalisée

Pour supprimer une directive de version personnalisée d’un paquet d’application, utilisez la commande ALTER APPLICATION PACKAGE avec UNSET RELEASE DIRECTIVE comme indiqué dans l’exemple suivant :

ALTER APPLICATION PACKAGE hello_snowflake_package
  UNSET RELEASE DIRECTIVE hello_snowflake_package_custom;
Copy

Tester une version et un correctif à l’aide d’une directive de version

Lors de l’installation d’une application à partir d’un paquet d’application en mode développement, la version et le correctif sont explicitement spécifiés. Cependant, lorsque l’application est installée à l’aide de la commande suivante :

CREATE APPLICATION hello_snowflake
  FROM APPLICATION PACKAGE hello_snowflake_package
Copy

La directive de version détermine la version qui est installée lors de l’exécution de cette commande.

Mettre à niveau une Snowflake Native App

Une mise à niveau est lancée lorsque le fournisseur définit ou modifie la directive de version du paquet d’application.

Workflow de mise à niveau d’une Snowflake Native App

Un fournisseur met à niveau une application installée via le workflow suivant :

  1. Mettez à jour la logique d’application et le script d’installation du paquet d’application.

  2. Si deux versions sont actuellement définies, supprimez une version du paquet d’application.

  3. Créer une nouvelle version ou un nouveau correctif pour les modifications apportées au paquet d’application.

    Si la propriété DISTRIBUTION de l’application est définie sur EXTERNAL, l”analyse de sécurité automatisée est lancée. L’analyse de sécurité doit s’effectuer correctement avant que la mise à niveau puisse avoir lieu.

  4. Testez la nouvelle version en créant un objet APPLICATION dans le compte test du fournisseur.

  5. Mettez à jour la directive de version pour la version ou le correctif.

    Cette opération lance une mise à niveau automatisée qui mettra à jour toutes les instances installées de la version précédente. Un fournisseur peut informer le consommateur qu’une mise à niveau est disponible et lui demander d’effectuer manuellement une mise à niveau manuelle.

Note

Après la mise à niveau d’un paquet d’application, il se peut que les modifications apportées à l”Snowflake Native App installée sur le compte consommateur ne soient pas visibles tant que l’actualisation des régions distantes n’a pas été effectuée.

Vous pouvez utiliser la vue APPLICATION_STATE du schéma DATA_SHARING_USAGE pour surveiller le statut. Si la mise à niveau n’est pas terminée plus d’1 jour après la première actualisation suivant la mise à niveau, il se peut qu’il y ait un problème avec le processus d’actualisation. Contactez l’assistance Snowflake.

Mettre à niveau une application installée dans plusieurs régions

Si un fournisseur publie une Snowflake Native App via Exécution automatique inter-Cloud, les mises à niveau automatisées peuvent prendre un certain temps en fonction des facteurs suivants :

  • La valeur de la planification d’actualisation.

  • Le nombre d’instances installées de l’application.

  • Le nombre de régions dans lesquelles l’application est déployée.

Si la mise à niveau contient un correctif urgent qui doit être mis à niveau dans une région distante, les fournisseurs peuvent envisager les moyens suivants pour effectuer une mise à niveau plus rapidement :

Effectuer une mise à niveau manuelle d’une application installée

Les mises à niveau manuelles permettent à un consommateur de lancer la mise à niveau d’une version ou d’un correctif installé(e) d’une application via la directive de version spécifiée dans le paquet d’application.

Pour mettre à niveau une Snowflake Native App installée à la dernière version disponible, un consommateur peut utiliser la clause UPGRADE de la commande ALTER APPLICATION pour modifier l’objet de l’application :

ALTER APPLICATION <name> UPGRADE
Copy

Afficher le statut d’une mise à niveau

Pour afficher l’état de mise à niveau d’une application, utilisez la vue système Vue APPLICATION_STATE comme indiqué dans l’exemple suivant :

SELECT * FROM snowflake.data_sharing_usage.APPLICATION_STATE
Copy

Cette vue comprend des colonnes spécifiques aux mises à niveau, notamment l’état de mise à niveau et la région dans laquelle l’application est déployée.