Fichiers de définition de projet¶
Un fichier de définition de projet appelé snowflake.yml
déclare un répertoire comme étant un projet Snowflake Native App. Il s’agit d’un fichier contrôlé par version qui réside à la racine du répertoire d’un projet Snowflake Native App et qui peut être créé manuellement ou par Snowflake CLI dans le cadre de l’initialisation du projet. Tant que vous pouvez fournir ce fichier structuré dans le répertoire mais que vous choisissez d’utiliser votre propre structure de projet indépendante, Snowflake CLI peut découvrir les fichiers pertinents et exécuter ses fonctions comme d’habitude.
Pour les Native Apps, votre snowflake.yml
ressemblerait à ce qui suit :
definition_version: 2
entities:
pkg:
type: application package
identifier: <name_of_app_pkg>
stage: app_src.stage
manifest: app/manifest.yml
artifacts:
- src: app/*
dest: ./
- src: src/module-add/target/add-1.0-SNAPSHOT.jar
dest: module-add/add-1.0-SNAPSHOT.jar
- src: src/module-ui/src/*
dest: streamlit/
meta:
role: <your_app_pkg_owner_role>
warehouse: <your_app_pkg_warehouse>
post_deploy:
- sql_script: scripts/any-provider-setup.sql
- sql_script: scripts/shared-content.sql
app:
type: application
identifier: <name_of_app>
from:
target: pkg
debug: <true|false>
meta:
role: <your_app_owner_role>
warehouse: <your_app_warehouse>
Propriétés communes des entités¶
Le tableau suivant décrit les propriétés communes disponibles pour les entités de définition de projet pour les Native Apps. Voir Spécifier des entités pour plus d’informations sur les entités de définition de projet.
Propriété |
Définition |
---|---|
type required, string |
Le type d’entité à gérer. Pour Snowflake Native App, les valeurs valides incluent :
|
identifier optional, string |
Identificateur Snowflake facultatif pour l’entité, les identificateurs entre guillemets et non entre guillemets sont pris en charge. Pour utiliser des identificateurs entre guillemets, incluez les guillemets dans la valeur de YAML (par exemple, Si non spécifié, l’ID d’entité dans la définition du projet est utilisé comme identificateur. |
meta.warehouse optional, string |
L’entrepôt est utilisé pour exécuter les scripts fournis dans le cadre de Par défaut : entrepôt spécifié pour la connexion dans le fichier Snowflake CLI
|
meta.role optional, string |
Rôle à utiliser lors de la création de l’entité et des objets côté fournisseur. Note Si vous ne spécifiez pas de rôle, Snowflake CLI tente d’utiliser le rôle par défaut attribué à votre utilisateur dans votre compte Snowflake. En règle générale, vous spécifiez cette valeur dans Par défaut : rôle spécifié dans la Connexion Snowflake CLI |
meta.post_deploy optional, sequence |
Liste de scripts SQL à exécuter après la création de l’entité. L’exemple suivant montre comment définir ces scripts dans le fichier de définition de projet : definition_version: 2
entities:
myapp_pkg:
type: application package
...
meta:
post_deploy:
- sql_script: scripts/post_deploy1.sql
- sql_script: scripts/post_deploy2.sql
Ces scripts sont appelés par des commandes qui créent ou mettent à jour une entité. Par exemple, en exécutant la commande Vous pouvez également utiliser des modèles dans le script SQL de post-déploiement également, comme le montre l’exemple de contenu de script suivant : GRANT reference_usage on database provider_data to share in entity <% fn.str_to_id(ctx.entities.myapp_pkg.identifier) %>
|
meta.use_mixins optional, sequence |
Noms des mixins à appliquer à cette entité. Pour plus d’informations, voir Mixins de projets |
Propriétés de l’entité du paquet d’application¶
Le tableau suivant décrit les propriétés communes disponibles pour les entités de paquet d’application pour les Native Apps. Voir Spécifier des entités pour plus d’informations sur les entités de définition de projet.
Propriété |
Définition |
---|---|
type required, string |
Doit être |
manifest required, string |
L’emplacement du fichier Snowflake Native App |
deploy_root optional, string |
Sous-dossier à la racine de votre projet dans lequel l’étape de construction copie les artefacts. Une fois copiés à cet endroit, vous pouvez les déployer dans une zone de préparation Snowflake. Par défaut : |
generated_root optional, string |
Sous-répertoire de la racine de déploiement où Snowflake CLI écrit les fichiers générés. Par défaut : |
stage optional, string |
Identificateur de la zone de préparation qui stocke les artefacts de l’application. La valeur utilise le formulaire Par défaut : |
artifacts required, sequence |
Liste des paires de fichiers source et destination à ajouter à la racine du déploiement, ainsi que le processeur d’annotation Snowpark optionnel. Vous pouvez utiliser les propriétés d’artéfacts suivantes :
Si Vous pouvez également transmettre une chaîne pour chaque élément au lieu d’un Exemple sans processeur : pkg:
artifacts:
- src: app/*
dest: ./
- src: streamlit/*
dest: streamlit/
- src: src/resources/images/snowflake.png
dest: streamlit/
Exemple avec un processeur : pkg:
artifacts:
- src: qpp/*
dest: ./
processors:
- name: snowpark
properties:
env:
type: conda
name: <conda_name>
|
distribution optional, string |
Distribution du paquet d’application créé par Snowflake CLI. Lors de l’exécution des commandes Par défaut : |
scratch_stage optional, string |
Identificateur de la zone de préparation qui stocke les données temporaires utilisées par Snowflake CLI. La valeur prend la forme suivante : Par défaut : |
Propriétés de l’entité d’application¶
Le tableau suivant décrit les propriétés communes disponibles pour les entités d’application pour les Native Apps. Voir Spécifier des entités pour plus d’informations sur les entités de définition de projet.
Propriété |
Définition |
---|---|
type required, string |
Doit être |
from.target required, string |
Paquet d’application à partir duquel créer cette entité d’application. Dans l’exemple suivant, from:
target: my_pkg
|
debug optionnel, booléen |
Permet d’activer ou non le mode débogage lors de l’utilisation d’une zone de préparation nommée pour créer une application. Par défaut : |
Plus d’informations sur les processeurs d’artefacts¶
Si vous incluez le champ artifacts.processors
dans le fichier de définition du projet, la commande snow app bundle
appelle un traitement personnalisé pour les fichiers de code Python dans le répertoire ou le fichier src
.
Cette section couvre une liste des processeurs pris en charge.
Processeur Snowpark¶
L’un des processeurs pris en charge par Snowflake CLI est snowpark
, qui applique le traitement des annotations Snowpark aux fichiers Python. Ce qui suit montre la structure et la syntaxe de base pour différents environnements de traitement :
Pour exécuter du code dans un environnement conda, utilisez ce qui suit :
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark properties: env: type: conda name: <conda_name>
où
<conda_name>
est le nom de l’environnement conda contenant l’interpréteur Python et la bibliothèque Snowpark que vous souhaitez utiliser pour le traitement des annotations Snowpark.Pour exécuter du code dans un environnement virtuel Python, utilisez ce qui suit :
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark properties: env: type: venv path: <venv_path>
où
<venv_path>
est le chemin de l’environnement virtuel Python contenant l’interpréteur Python et la bibliothèque Snowpark que vous souhaitez utiliser pour le traitement des annotations Snowpark. Le chemin peut être absolu ou relatif au répertoire du projet.Pour exécuter du code dans l’environnement actuellement actif, utilisez l’une des définitions équivalentes suivantes :
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark properties: env: type: current
ou
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark
ou
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - snowpark
Pour plus d’informations sur le traitement personnalisé, voir les commandes Génération automatique de code SQL et snow app bundle.
Processeur de modèles¶
Les projets Snowflake Native App prennent en charge les modèles dans des fichiers arbitraires, ce qui vous permet d’étendre les modèles dans tous les fichiers d’un répertoire src
d’artefact. Vous pouvez activer cette fonctionnalité en incluant un processeur templates
dans la définition artifacts
désirée, comme le montre l’exemple suivant :
definition_version: 2
entities:
pkg:
type: application package
identifier: myapp_pkg
artifacts:
- src: app/*
dest: ./
processors:
- templates
manifest: app/manifest.yml
app:
type: application
identifier: myapp_<% fn.get_username() %>
from:
target: pkg
Quand Snowflake CLI télécharge les fichiers vers une zone de préparation, il développe automatiquement les modèles avant de les télécharger. Par exemple, supposons que votre application contenue dans un fichier app/README.md
avec le contenu suivant qui inclut le modèle <% ctx.entities.pkg.identifier %>
:
This is a README file for application package <% ctx.entities.pkg.identifier %>.
Le modèle est ensuite étendu comme suit avant de télécharger le fichier vers une zone de préparation :
This is a README file for application package myapp_pkg.
Remplacements de la définition du projet¶
Bien que votre répertoire de projet doive contenir un fichier snowflake.yml
, vous pouvez choisir de personnaliser le comportement de Snowflake CLI en fournissant des modifications locales dans snowflake.yml
, telles qu’un nouveau rôle pour tester votre propre paquet d’application. Ces remplacements doivent être placés dans le fichier snowflake.local.yml
qui se trouve à côté de la définition du projet de base. Snowflake vous suggère de l’ajouter à votre fichier .gitignore
afin qu’il ne soit pas contrôlé par git. Tous les modèles fournis par Snowflake l’incluent déjà dans le fichier .gitignore
.
Ce fichier de remplacements doit se trouver au même endroit que votre fichier snowflake.yml
.
Le fichier snowflake.local.yml
reprend exactement le même schéma que le fichier snowflake.yml
, à ceci près que toutes les valeurs qui étaient obligatoires sont désormais facultatives, en plus des valeurs déjà facultatives. Vous trouverez ci-dessous un exemple de fichier snowflake.local.yml
:
entities:
pkg:
meta:
role: <your_app_pkg_owner_role>
name: <name_of_app_pkg>
warehouse: <your_app_pkg_warehouse>
app:
debug: <true|false>
meta:
role: <your_app_owner_role>
name: <name_of_app>
warehouse: <your_app_warehouse>
Chaque commande snow app
donne la priorité aux paramètres de ce fichier sur ceux définis dans le fichier de configuration de base snowflake.yml
. Des valeurs par défaut raisonnables permettent déjà d’isoler les développeurs qui utilisent le même compte Snowflake pour développer le même projet d’application. Si vous débutez, nous vous suggérons de ne pas inclure de fichier de remplacements.
Le schéma de définition final obtenu après avoir remplacé snowflake.yml
par snowflake.local.yml
est appelé définition de projet résolue.
Limitations¶
Actuellement, Snowflake CLI ne prend pas en charge
les fichiers de remplacements multiples.
Un fichier de remplacement vierge. Ne créez ce fichier que si vous souhaitez remplacer une valeur de
snowflake.yml
.