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
Copy

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 Feld deploy_root auf der Entität Anwendungspaket 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ät bundle 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
      ...
    
    Copy

    wobei dir1/dir2 in der Wurzel des Projekts weitere Unterverzeichnisse wie dir3 und dir4 und einige Dateien wie file3.txt und file4.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
    
    Copy

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
Copy

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
Copy