snow app bundle¶
Bereitet einen lokalen Ordner mit konfigurierten Anwendungsartefakten vor.
Syntax¶
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
Argumente¶
Keine
Optionen¶
--package-entity-id TEXT
Die ID der Paketentität, auf der die Operation ausgeführt werden soll, wenn definition_version 2 oder höher ist.
--app-entity-id TEXT
Die ID der Anwendungsentität, auf der die Operation ausgeführt werden soll, wenn definition_version 2 oder höher ist.
-p, --project TEXT
Pfad, in dem sich das Snowflake-Projekt befindet. Standardmäßig wird das aktuelle Verzeichnis verwendet.
--env TEXT
Zeichenfolge im Format von Schlüssel=Wert. Überschreibt Variablen aus dem env-Abschnitt, die für Vorlagen verwendet werden. Standard: [].
--format [TABLE|JSON]
Gibt das Ausgabeformat an. Standard: TABLE.
--verbose, -v
Zeigt Protokolleinträge für die Protokolliergrade
info
und höher an. Standard: false--debug
Zeigt Protokolleinträge für die Protokolliergrade
debug
und höher an; Debug-Protokolle enthalten zusätzliche Informationen. Standard: false--silent
Schaltet Zwischenausgaben auf der Konsole aus. Standard: false
--help
Zeigt den Hilfetext für diesen Befehl an.
Nutzungshinweise¶
Der Befehl snow app bundle
erstellt ein temporäres lokales Verzeichnis, das alle Snowflake Native App-Artefakte enthält. Er kann auch automatisch SQL-Skripte aus Ihrem Snowpark Python-Code generieren. Dieser Befehl wird automatisch von den Befehlen snow app deploy, snow app run und snow app version create aufgerufen. Wenn Sie jedoch das Setup-Skript, die Artefakte und generierte SQL sehen möchten, bevor Sie sie in einen Stagingbereich hochladen, können Sie diesen Befehl manuell ausführen. Weitere Informationen zur Erzeugung von SQL-Code finden Sie unter Vorbereiten eines lokalen Ordners mit konfigurierten Snowflake Native App-Artefakten.
Der Befehl verwendet die Projektdefinitionsdatei, um den Namen des temporären Ordners zu bestimmen, der in Ihrem Verzeichnis erstellt werden soll.
Standardmäßig lautet er
<project_directory>/output/deploy
. Dieses Verzeichnis, das auch als Bereitstellungsstamm bezeichnet wird, spiegelt die Struktur des Stagingbereichs wider, sobald die Dateien mit nachfolgenden Befehlen in den Stagingbereich hochgeladen werden.Wenn Sie möchten, dass Snowflake CLI einen Ordner mit einem benutzerdefinierten Namen anstelle von
output/deploy
erstellt, können Sie dies tun, indem Sie das Felddeploy_root
auf der EntitätAnwendungspaket
in der Datei Projektdefinition angeben.Bemerkung
Sie müssen einen relativen Pfad für den Bereitstellungsstamm angeben; absolute Pfade werden abgelehnt. Der Pfad des Bereitstellungsstamms wird im Verzeichnis des Projekts erstellt.
Der Bereitstellungsstamm ist ein temporäres Verzeichnis, da es gelöscht und neu erstellt wird, sobald Sie
snow app bundle
ausführen oder ein anderer Befehl die Funktionalitätbundle
aufruft.
Da
snow app bundle
automatisch als Teil der Befehle snow app deploy, snow app run und snow app version create aufgerufen wird, sollten Sie Änderungen nur an den Quelldateien vornehmen, und zwar außerhalb des Bereitstellungsstamms. Wenn Sie Dateien im Bereitstellungsstamm ändern, werden die Dateien beim nächsten Aufruf eines dieser Befehle mit dem neuesten Stand Ihrer Quelldateien überschrieben.Wenn Sie ein System zur Versionskontrolle verwenden, wie z. B.
git
, können Sie den Bereitstellungsstamm nicht verfolgen, da er sich häufig ändern kann.snow app bundle
erstellt oder kompiliert Ihre Artefakte nicht für Sie, wie z. B. die Erstellung von jar-Dateien aus Ihren Java-Dateien. Er kopiert nur die in der Datei mit der Projektdefinition angegebenen Artefakte und fügt sie dem Bereitstellungsstamm hinzu, um die Struktur des Stagingbereichs zu imitieren.snow app bundle
benötigt keinen Zugriff auf Ihr Snowflake-Konto; er hat nur Auswirkungen auf Ihr lokales Dateisystem.Der Befehl hat die folgende Verhaltensweise beim Kopieren und Verknüpfen von
Artefakten
des Anwendungspakets `` Entität in der -Projektdefinitionsdatei:Alle Verzeichnisnamen in einem Pfad zur Quelle werden auch im Bereitstellungsstamm erstellt.
Alle Dateien in einem Pfad werden innerhalb dieser Verzeichnisse im Bereitstellungsstamm mit Symlinks versehen.
Einige mit Symlinks versehene Dateien im Bereitstellungsstamm können zu harten Links werden, wenn Sie die Generierung von SQL aus diesen Dateien aufrufen. Weitere Informationen dazu finden Sie unter Vorbereiten eines lokalen Ordners mit konfigurierten Snowflake Native App-Artefakten.
Betrachten Sie das folgende
artifacts
-Auflistungsbeispiel aus einer Projektdefinitionsdatei: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 ...
wobei
dir1/dir2
in der Wurzel des Projekts weitere Unterverzeichnisse wiedir3
unddir4
und einige Dateien wiefile3.txt
undfile4.txt
haben könnte.Nachdem Sie den Befehl
snow app bundle
ausgeführt haben, sollte Ihr Bereitstellungsstamm wie folgt aussehen:-- 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
Verarbeitung von Anmerkungen bei Snowpark¶
Ab Snowflake CLI Version 2.5.0 und Snowpark Python API Version 1.15.0 können Sie das Snowpark Feature zur Verarbeitung von Anmerkungen mit dem Befehl snow app bundle
nutzen. Mit diesem Feature können Sie Ihre Python-Codedateien mit Snowpark Python-Dekoratoren wie @udf
, @sproc
, @udaf
und @udtf
versehen, damit Snowflake CLI automatisch die entsprechenden CREATE FUNCTION oder CREATE PROCEDURE SQL-Anweisungen in Setup-Skript-Dateien im Verzeichnis des Projekts anzeigt. Zum besseren Verständnis dieser Dekoratoren lesen Sie bitte die entsprechende Python-Dekoratoren-Dokumentation.
Die Verarbeitung von Anmerkungen bei Snowpark umfasst Folgendes:
Sie liest alle Python-Dateien, die Sie mit einem Feld
processor
in der Definition des Projekts markiert haben.Sie erstellt eine separate temporäre Python-Umgebung unter Verwendung der Umgebungsinformationen, die im Unterfeld
properties
des Prozessors angegeben sind.Sie führt diese Python.Dateien in der Sandbox-Umgebung aus.
Sie sammelt alle dekorierten Funktionen aus diesen Dateien.
Anhand der gesammelten Informationen generiert Snowflake CLI die erforderlichen SQL-Anmerkungen und fügt sie dem Setup-Skript hinzu, dessen Speicherort in Ihrer Datei
manifest.yaml
angegeben ist.
Sie müssen nicht mehr den Vorlagen-SQL-Code wiederholen, um Snowpark-Erweiterungsfunktionen für Ihre Snowflake Native App-Apps zu schreiben.
Weitere Informationen über die Aktivierung dieses Features in Ihren Projektdefinitionsdateien finden Sie unter Verwendung der Snowpark Python-Decorators.
Weitere Informationen über alle unterstützten Artefaktprozessoren finden Sie unter Weitere Informationen über Artefakte-Prozessoren.
Beispiele¶
In diesem Beispiel wird davon ausgegangen, dass Sie die notwendigen Änderungen an Ihren Codedateien vorgenommen und sie zu Ihren snowflake.yml
- oder snowflake.local.yml
-Dateien hinzugefügt und auch alle relevanten Artefakte erstellt oder kompiliert haben.
cd my_app_project
snow app bundle
Der Befehl zeigt Informationen zu den verschiedenen Schritten an, die während der Ausführung des Befehls erfolgen, und erstellt ein neues Verzeichnis an dem in Ihrer Projektdefinitionsdatei angegebenen Speicherort (Standard: my_app_project/output/deploy
).
Um einen einfachen Anwendungsfall in Aktion zu sehen, können Sie die gebrauchsfertigen Vorlagen mit den folgenden Befehlen nutzen:
snow init my_app_bundle_project --template app_basic
cd "my_app_bundle_project"
snow app bundle
ls my_app_bundle_project/output/deploy