Lignes directrices pour la publication d’une application dans Snowflake Marketplace

Cette rubrique décrit les critères de publication d’une Snowflake Native App dans la Snowflake Marketplace.

Publier une application dans la Snowflake Marketplace

Lorsque votre paquet d’application est prêt à être publié sur Snowflake Marketplace, vous devez le soumettre à Snowflake pour approbation.

Note

Le processus d’approbation requis pour publier une application sur Snowflake Marketplace s’ajoute à l’analyse de sécurité automatisée qui est exécutée lorsque la propriété DISTRIBUTION d’un paquet d’application est définie sur EXTERNAL.

Avant de créer une annonce, vérifiez que vous comprenez les exigences appliquées et assurez-vous que votre paquet d’application respecte chaque exigence. Si un paquet d’application ne respecte pas ces exigences, votre demande pourrait être rejetée.

Si vous recevez une notification de rejet pour votre paquet d’application, apportez les modifications recommandées et soumettez à nouveau votre paquet d’application pour approbation.

Normes pour les Snowflake Native Apps sur la Snowflake Marketplace

Snowflake fournit une plateforme qui permet aux fournisseurs de créer, distribuer et monétiser des applications.

Le processus d’examen de Snowflake garantit la qualité des applications publiées sur la Snowflake Marketplace. Pour garantir un processus de révision simplifié, Snowflake fournit les exigences et directives suivantes pour les applications publiées sur la Snowflake Marketplace.

Utilité immédiate

Toutes les fonctionnalités de l’application doivent être fournies dans le compte du consommateur au moment de l’installation de l’application. Par exemple, lorsqu’un consommateur installe une application sur son compte, toutes les fonctionnalités de l’application doivent être disponibles sans que le consommateur n’ait à installer de composants supplémentaires.

Autonome

Les applications doivent fournir une expérience produit sur Snowflake et faciliter les exigences externes grâce aux fonctionnalités de Snowflake.

Centré sur les données

Les applications doivent être basées sur des cas d’utilisation centrés sur les données qui exploitent les données stockées dans Snowflake.

Transparent et simple

Les applications doivent utiliser les fonctions de Snowflake pour divulguer les exigences de l’application en matière de ressources et d’accès et simplifier le processus de configuration au consommateur.

Exigences appliquées

Snowflake utilise les lignes directrices suivantes pour déterminer si une Snowflake Native App répond aux exigences de publication sur la Snowflake Marketplace. Ces exigences sont vérifiées lorsque vous soumettez une annonce avec un paquet d’application joint à la Marketplace de Snowflake.

  1. Utilité immédiate

    1. Les applications ne doivent pas être des applications shell qui font la publicité de fonctionnalités.

    2. Les applications doivent inclure un framework et des instructions clairs pour l’utilisation des fonctionnalités de l’application.

    3. Les fonctionnalités ne doivent pas se bloquer, se figer ou fonctionner de manière anormale.

    4. Les applications doivent lister toutes les identifiants requis et les fournisseurs doivent partager les identifiants requis avec Snowflake lors de la soumission pour les tests.

    5. Les applications doivent être immédiatement actionnables, permettant aux consommateurs d’installer et de configurer entièrement l’application sans avoir besoin de contacter le fournisseur.

  2. Autonome

    1. Les applications ne doivent pas rediriger les consommateurs vers un service externe pour activer les fonctionnalités de l’application.

    2. Les interfaces des applications doivent être accessibles après l’installation directement depuis Snowflake.

    3. Les applications ne peuvent pas exiger des consommateurs qu’ils créent des utilisateurs ou des rôles qui donnent accès à un service externe dans le compte du consommateur Snowflake.

    4. Les applications ne peuvent pas utiliser Snowflake Marketplace comme plate-forme de distribution pour la vente croisée d’applications ou de services externes.

  3. Centré sur les données

    1. Les applications doivent exploiter les données de Snowflake de l’une des manières suivantes :

      1. Partagez les données du compte du fournisseur d’applications.

      2. Utilisez les ensembles de données de Snowflake Marketplace.

      3. Accéder aux données du compte consommateur.

  4. Transparentes

    1. Tous les privilèges et toutes les références au niveau du compte dont l’appli a besoin doivent être répertoriés dans le fichier manifeste du paquet d’application.

    2. Toutes les exigences en matière de ressources pour l’application Snowflake Native App doivent être répertoriées dans le fichier marketplace.yml de l’application. L’application doit créer ces ressources dans le cadre de l’installation et de la configuration.

    3. Tous les privilèges et références au niveau du compte énumérés dans le fichier manifeste du paquet d’application doivent être demandés au consommateur par l’intermédiaire de Snowsight ou de Python Permission SDK.

    4. Les fournisseurs doivent fournir un fichier lisez-moi. Les applications qui n’incluent pas de Streamlit ou d’interface utilisateur personnalisée doivent inclure les informations suivantes dans le fichier lisez-moi :

      1. Une description de ce que fait l’application.

      2. Les étapes que le consommateur doit suivre pour configurer l’application après son installation.

      3. Les procédures stockées et les fonctions définies par l’utilisateur que l’application utilise.

      4. Les privilèges requis par l’application.

      5. Exemple SQL de commandes qui montrent aux consommateurs comment utiliser l’application.

    5. Toutes les commandes SQL requises doivent être transmises à l’aide de Snowflake et formatées sous forme de blocs de code.

    6. Si l’application fournit des échantillons de données, vous devez inclure des procédures sur la façon d’utiliser ces échantillons.

Bonnes pratiques pour la publication d’une Snowflake Native App

Outre les exigences relatives à la soumission d’un paquet d’application à Snowflake Marketplace, Snowflake recommande également les meilleures pratiques suivantes lors de la publication d’une Snowflake Native App :

  • Assurez-vous que tous les fichiers requis sont chargés dans la zone de préparation nommée pour la version de l’application que vous soumettez, y compris :

    • Le fichier manifest.yml.

    • Le script d’installation.

    • Le fichier readme.md.

    • Toutes les procédures stockées externes ou les fonctions définies par l’utilisateur requises par le paquet d’application.

    • Tous les fichiers Streamlit requis par le paquet d’application.

    • Tout code source externe, y compris Python, Java, etc.

  • Assurez-vous que la version de l’application que vous développez passe l’analyse de sécurité automatisée.

  • Testez la nouvelle version de votre paquet d’application en créant l’objet d’application localement à l’aide de la commande CREATE APPLICATION.

    • N’ajoutez pas de nouvelle version à votre paquet d’application ou ne définissez pas la propriété DISTRIBUTION sur EXTERNAL pendant que vous développez et testez une application. Ces actions déclenchent l’analyse de sécurité automatisée, ce qui retarde le cycle de développement.

      Au lieu de cela, créez l’objet d’application en utilisant les fichiers sur une zone de préparation nommée.

    • Si votre application comprend une application Streamlit, testez l’application dans Snowsight pour vous assurer que l’application Streamlit fonctionne comme prévu.

    • Vérifiez que les interactions entre l’application Streamlit et les feuilles de calcul Snowflake sont transparentes et que le consommateur n’a pas à faire des allers-retours entre les deux de façon excessive.

  • Examinez toutes les parties d’une annonce avant de la soumettre pour approbation.

  • Assurez-vous qu’il n’y a pas de fautes de frappe ou d’autres erreurs de texte dans l’annonce, le fichier readme et l’application Streamlit.

Recommandations pour les annonces d’essai

Lorsqu’une annonce d’essai d’application expire, Snowflake suspend automatiquement l’application pour éviter que les consommateurs encourent des frais de calcul supplémentaires. Snowflake suspend uniquement les objets appartenant à l’application qui sont actuellement actifs. Snowflake ne modifie pas le statut des objets déjà suspendus.

Lorsqu’une annonce d’essai est convertie en annonce complète ou payante, Snowflake tente de réactiver l’application en reprenant les tâches, les conteneurs et les pools de calcul. Snowflake ne reprend que les services et les pools de calcul qui ont la propriété auto_resume définie sur false.

Recommandations pour les applications avec conteneurs

  • Les pools de calcul doivent être configurés pour être suspendus automatiquement en combinaison avec les tâches Snowpark Container Services afin d’éviter les nœuds de calcul inactifs.

  • Pour une meilleure disponibilité lors des mises à niveau et pour réduire la latence de démarrage à froid, Snowflake vous recommande de définir le paramètre MIN_NODES supérieur à 1.

  • Si des connexions entre différents services sont requises dans la même application, utilisez le nom DNS du service au lieu de configurer une intégration d’accès externe.

Recommandations pour le partage d’événements

  • Les fournisseurs doivent configurer une application pour émettre des messages de journal et suivre les événements conformes aux définitions d’événements prises en charge pour garantir que les consommateurs comprennent quelles informations sont collectées.

  • Les définitions d’événements obligatoires doivent être limitées aux messages de journal et aux événements de trace requis par l’application. Les définitions d’événements obligatoires excessives ou inutiles doivent être évitées.

  • L’ajout de nouvelles définitions d’événements obligatoires dans une mise à niveau de version doit nécessiter que le consommateur réactive les définitions d’événements pour l’application.

  • Utilisez Python Permission SDK pour permettre aux consommateurs de partager des événements optionnels.