snow app bundle

Prépare un dossier local avec des artefacts d’application configurés.

Syntaxe

snow app bundle
  --package-entity-id <package_entity_id>
  --app-entity-id <app_entity_id>
  --project <project_definition>
  --env <env_overrides>
  --format <format>
  --verbose
  --debug
  --silent
Copy

Arguments

Aucun

Options

--package-entity-id TEXT

L’ID de l’entité du paquet sur laquelle opérer lorsque definition_version est la 2 ou supérieure.

--app-entity-id TEXT

L’ID de l’entité de l’application sur laquelle opérer lorsque definition_version est la 2 ou supérieure.

-p, --project TEXT

Chemin où réside le projet Snowflake. La valeur par défaut est le répertoire de travail actuel.

--env TEXT

Chaîne au format clé=valeur. Remplace les variables de la section env utilisées pour les modèles. Par défaut : [].

--format [TABLE|JSON]

Spécifie le format de sortie. Par défaut : TABLE.

--verbose, -v

Affiche les entrées de journal pour les niveaux de journalisation info et supérieurs. Par défaut : false.

--debug

Affiche les entrées de journal pour les niveaux de journalisation debug et supérieurs ; les journaux de débogage contiennent des informations supplémentaires. Par défaut : false.

--silent

Désactive la sortie intermédiaire vers la console. Par défaut : false.

--help

Affiche le texte d’aide de cette commande.

Notes sur l’utilisation

La commande snow app bundle crée un répertoire local temporaire qui contient tous les artefacts Snowflake Native App. Elle peut également générer automatiquement des scripts SQL de votre code Snowpark Python. Cette commande est appelée automatiquement par les commandes snow app deploy, snow app run et snow app version create. Si, toutefois, vous souhaitez voir le script d’installation, les artefacts et les éléments SQL générés, avant de les télécharger vers une zone de préparation, vous pouvez exécuter cette commande manuellement. Pour plus d’informations sur la génération du code SQL, voir Préparation d’un dossier local avec des artefacts Snowflake Native App configurés.

  • La commande utilise le fichier de définition de projet pour déterminer le nom du dossier temporaire à créer dans le répertoire de votre projet.

    • Par défaut, ce sera <project_directory>/output/deploy. Ce répertoire, également connu sous le nom de racine de déploiement, reflète la structure de la zone de préparation une fois les fichiers téléchargés vers la zone de préparation dans les commandes suivantes.

    • Si vous souhaitez que Snowflake CLI crée un dossier avec un nom personnalisé au lieu de output/deploy, vous pouvez le faire en fournissant le champ deploy_root sur le paquet d'application entité dans le fichier de définition de projet.

      Note

      Vous devez fournir un chemin relatif pour la racine de déploiement ; les chemins absolus sont rejetés. Le chemin racine de déploiement est créé dans le répertoire du projet.

    • La racine de déploiement est un répertoire temporaire, car elle est supprimée et recréée à chaque fois que vous exécutez une commande run snow app bundle ou qu’une autre commande appelle la fonctionnalité du bundle.

  • Parce que snow app bundle est automatiquement appelée dans le cadre de commandes snow app deploy, snow app run et snow app version create, vous devez apporter des modifications aux fichiers sources uniquement, en dehors de la racine de déploiement. Si vous modifiez des fichiers dans la racine de déploiement, les fichiers sont écrasés par l’état le plus récent de vos fichiers sources la prochaine fois que vous appelez l’une de ces commandes.

  • Si vous utilisez un système de contrôle de version tel que git, vous pouvez choisir de ne pas suivre la racine de déploiement, car elle peut changer fréquemment.

  • snow app bundle ne construit pas ou ne compile pas vos artefacts pour vous, tels que la création de fichiers jar à partir de vos fichiers Java. Elle copie uniquement les artefacts spécifiés dans le fichier de définition du projet et les ajoute à la racine de déploiement pour imiter la structure du répertoire de la zone de préparation.

  • snow app bundle n’a pas besoin d’accéder à votre compte Snowflake ; elle a un impact uniquement sur votre système de fichiers local.

  • La commande a le comportement de copie et de création de lien symbolique suivant pour tout artefact de l’entité du paquet d'application dans le fichier de définition de projet :

    • Tous les noms de répertoire dans un chemin source sont également créés dans la racine de déploiement.

    • Tous les fichiers d’un chemin source sont liés symboliquement dans ces répertoires dans la racine de déploiement.

    • Certains fichiers liés symboliquement dans la racine de déploiement peuvent devenir des liens physiques si vous appelez une génération en SQL à partir de ces fichiers. Pour plus d’informations, voir Préparation d’un dossier local avec des artefacts Snowflake Native App configurés.

    Considérez l’exemple suivant de commande artifacts list à partir d’un fichier de définition de projet :

    entities:
      pkg:
        type: application package
        ...
        artifacts:
          - src: dir1/dir2/*
            dest: dest_dir1/dest_dir2/
          - src: dir8/dir9/file.txt
            dest: dest_dir8/dest_file.txt
      ...
    
    Copy

    dir1/dir2 dans la racine du projet pourrait avoir d’autres sous-répertoires, tels que dir3 et dir4, et certains fichiers, tels que file3.txt et file4.txt.

    Après avoir exécuté la commande snow app bundle, votre racine de déploiement devrait ressembler à ce qui suit :

    -- deploy_root
          -- dest_dir1
                -- dest_dir2
                      -- dir3
                          -- ... <entire directory tree of dir3>
                      -- dir4
                          -- ... <entire directory tree of dir4>
                      -- file3.txt
                      -- file4.txt
          -- dest_dir8
                -- dest_file.txt
    
    Copy

Traitement des annotations dans Snowpark

Depuis Snowflake CLI version 2.5.0 et l”API Snowpark Python version 1.15.0, vous pouvez exploiter la fonctionnalité de traitement des annotations Snowpark avec la commande snow app bundle. Cette fonctionnalité vous permet d’annoter vos fichiers de code Python avec les décorateurs Snowpark Python, tels que @udf, @sproc, @udaf, et @udtf pour permettre à Snowflake CLI de traiter automatiquement les instructions CREATE FUNCTION ou CREATE PROCEDURE SQL dans les fichiers de script d’installation du répertoire de projet. Pour une meilleure compréhension de ces décorateurs, veuillez vous référer à la documentation correspondante sur les décorateurs Python.

Le traitement des annotations de Snowpark implique les éléments suivants :

  • Il lit tous les fichiers Python que vous avez marqués avec un champ processor dans le fichier de définition du projet.

  • Il crée un environnement Python sandbox temporaire distinct à l’aide des informations d’environnement fournies dans le sous-domaine properties du processeur.

  • Il exécute ces fichiers Python dans l’environnement sandbox.

  • Il collecte toutes les fonctions décorées de ces fichiers.

  • Avec les informations collectées, Snowflake CLI génère les instructions SQL requises et les ajoute au script d’installation dont l’emplacement est spécifié dans votre fichier manifest.yaml.

Vous n’avez plus besoin de répéter le code SQL passe-partout pour écrire des fonctions d’extension Snowpark pour vos applications Snowflake Native App.

Pour plus d’informations sur l’activation de cette fonctionnalité dans vos fichiers de définition de projet, consultez Utilisation de décorateurs Snowpark Python.

Pour plus d’informations sur tous les processeurs d’artefacts pris en charge, consultez Plus d’informations sur les processeurs d’artefacts.

Exemples

Ces exemples supposent que vous avez apporté les modifications nécessaires à vos fichiers de code et que vous les avez ajoutés à vos fichiers snowflake.yml ou snowflake.local.yml, et aussi construit ou compilé les artefacts pertinents.

cd my_app_project
snow app bundle
Copy

La commande affiche des informations sur les différentes étapes qui se produisent pendant l’exécution de la commande et crée un nouveau répertoire à l’emplacement spécifié dans votre fichier de définition de projet (par défaut : my_app_project/output/deploy).

Pour voir un cas d’utilisation simple en action, vous pouvez exploiter les modèles prêts à l’emploi à l’aide des commandes suivantes :

snow init my_app_bundle_project --template app_basic
cd "my_app_bundle_project"
snow app bundle
ls my_app_bundle_project/output/deploy
Copy