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
--enhanced-exit-codes
Argumente¶
Keine
Optionen¶
--package-entity-id TEXTDie ID der Paketentität, mit der gearbeitet werden soll, wenn definition_version 2 oder höher ist.
--app-entity-id TEXTDie ID der Anwendungsentität, mit der gearbeitet werden soll, wenn die definition_version 2 oder höher ist.
-p, --project TEXTPfad, unter dem das Snowflake-Projekt gespeichert ist. Standardmäßig wird das aktuelle Verzeichnis als Arbeitsverzeichnis verwendet.
--env TEXTZeichenfolge im Format Schlüssel=Wert. Überschreibt die Variablen aus dem Abschnitt env, die für Vorlagen verwendet werden. Standard: [].
--format [TABLE|JSON|JSON_EXT|CSV]Gibt das Ausgabeformat an. Standard: TABLE.
--verbose, -vZeigt Protokolleinträge für die Protokolliergrade
infound höher an. Standard: false--debugZeigt Protokolleinträge für die Protokollebenen
debugund höher an; Debug-Protokolle enthalten zusätzliche Informationen. Standard: false--silentSchaltet Zwischenausgaben auf der Konsole aus. Standard: false
--enhanced-exit-codesExit-Fehlercodes nach Art des Fehlers unterscheiden. Standard: false
--helpZeigt 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/deployerstellt, können Sie dies tun, indem Sie das Felddeploy_rootauf der EntitätAnwendungspaketin 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 bundleausführen oder ein anderer Befehl die Funktionalitätbundleaufruft.
Da
snow app bundleautomatisch 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 bundleerstellt 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 bundlebenö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
Artefaktendes 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/dir2in der Wurzel des Projekts weitere Unterverzeichnisse wiedir3unddir4und einige Dateien wiefile3.txtundfile4.txthaben könnte.Nachdem Sie den Befehl
snow app bundleausgefü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
processorin der Definition des Projekts markiert haben.Sie erstellt eine separate temporäre Python-Umgebung unter Verwendung der Umgebungsinformationen, die im Unterfeld
propertiesdes 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.yamlangegeben 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