Projektdefinitionsdateien¶
Eine Projektdefinitionsdatei namens snowflake.yml
deklariert ein Verzeichnis als Snowflake Native App-Projekt. Es handelt sich um eine versionskontrollierte Datei, die sich im Stammverzeichnis eines Snowflake Native App-Projektverzeichnisses befindet und entweder manuell oder durch Snowflake CLI als Teil der Projektinitialisierung erstellt werden kann. Solange Sie diese strukturierte Datei im Verzeichnis bereitstellen können, aber Ihre eigene, unabhängige Projektstruktur verwenden, kann Snowflake CLI die relevanten Dateien finden und seine Funktionen wie gewohnt ausführen.
Bei Native Apps sieht Ihre snowflake.yml
-Datei ähnlich wie die folgende aus:
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>
Allgemeine Eigenschaften von Entitäten¶
Die folgende Tabelle beschreibt allgemeine Eigenschaften, die für Entitäten der Definition von Projekten für Native Apps verfügbar sind. Weitere Informationen zu den Entitäten der Definition von Projekten finden Sie unter Entitäten angeben.
Eigenschaft |
Definition |
---|---|
type erforderlich, string |
Der Typ der zu verwaltenden Entität. Für Snowflake Native App sind folgende Werte gültig:
|
Bezeichner optional, string |
Optionaler Snowflake-Bezeichner für die Entität. Es werden sowohl Bezeichner mit Anführungszeichen als auch ohne Anführungszeichen unterstützt. Um Bezeichner in Anführungszeichen zu verwenden, schließen Sie die umgebenden Anführungszeichen in den YAML-Wert ein (z. B. Wenn nicht angegeben, wird die Entität ID in der Definition des Projekts als Bezeichner verwendet. |
meta.warehouse optional, string |
Warehouse, das zum Ausführen der Skripte verwendet wird, die als Teil von Standard: Warehouse, das für die Verbindung in der Snowflake CLI-Datei
|
meta.role optional, string |
Rolle, die bei der Erstellung der Entität und der Anbieter-seitigen Objekte zu verwenden ist. Bemerkung Wenn Sie keine Rolle angeben, versucht Snowflake CLI, die Standardrolle zu verwenden, die Ihrem Benutzer in Ihrem Snowflake-Konto zugewiesen wurde. Normalerweise geben Sie diesen Wert in der Datei Standard: Rolle, die in der Snowflake CLI-Verbindung angegeben ist. |
meta.post_deploy optional, sequence |
Auflistung der SQL-Skripte, die nach der Erstellung der Entität ausgeführt werden sollen. Das folgende Beispiel zeigt, wie Sie diese Skripte in der Projektdefinitionsdatei definieren: definition_version: 2
entities:
myapp_pkg:
type: application package
...
meta:
post_deploy:
- sql_script: scripts/post_deploy1.sql
- sql_script: scripts/post_deploy2.sql
Diese Skripte werden von Befehlen aufgerufen, die eine Entität erstellen oder aktualisieren. Wenn Sie zum Beispiel den Befehl Sie können auch Vorlagen in den SQL-Skripten nach ihrer Bereitstellung verwenden, wie das folgende Beispiel für den Inhalt des Skripts zeigt: 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 |
Namen der Mixins, die auf diese Entität angewendet werden sollen. Weitere Informationen dazu finden Sie unter Projekt-Mixins. |
Eigenschaften der Entität des Anwendungspakets¶
Die folgende Tabelle beschreibt allgemeine Eigenschaften, die für Entitäten von Anwendungspaketen für Native Apps verfügbar sind. Weitere Informationen zu den Entitäten der Definition von Projekten finden Sie unter Entitäten angeben.
Eigenschaft |
Definition |
---|---|
type erforderlich, string |
Sie müssen |
manifest erforderlich, string |
Der Speicherort der Snowflake Native App |
deploy_root optional, string |
Unterverzeichnis an der Wurzel Ihres Projekts, in das der Build-Schritt die Artefakte kopiert. Sobald sie dorthin kopiert wurden, können sie in einem Snowflake-Stagingbereich bereitgestellt werden. Standard: |
generated_root optional, string |
Unterverzeichnis des Bereitstellungsstamms, in das Snowflake CLI die generierten Dateien schreibt. Standard: |
stage optional, string |
Bezeichner des Stagingbereichs, in dem die Artefakte der Anwendung gespeichert werden. Der Wert verwendet die Form Standard: |
Artefakte erforderlich, sequence |
Auflistung der Datei-Quell- und -Zielpaare, die dem Bereitstellungsstamm hinzugefügt werden sollen, sowie ein optionaler Snowpark-Anmerkungsprozessor. Sie können die folgenden Eigenschaften des Artefakts verwenden“
Wenn Sie können anstelle von Beispiel ohne Prozessor: pkg:
artifacts:
- src: app/*
dest: ./
- src: streamlit/*
dest: streamlit/
- src: src/resources/images/snowflake.png
dest: streamlit/
Beispiel mit einem Prozessor: pkg:
artifacts:
- src: qpp/*
dest: ./
processors:
- name: snowpark
properties:
env:
type: conda
name: <conda_name>
|
distribution optional, string |
Verteilung des von der Snowflake CLI erstellten Anwendungspakets. Wenn Sie Standard: |
scratch_stage optional, string |
Bezeichner des Stagingbereichs, der temporäre Scratch-Daten speichert, die von Snowflake CLI verwendet werden. Der Wert hat die Form Standard: |
Eigenschaften der Anwendungsentitäten¶
Die folgende Tabelle beschreibt allgemeine Eigenschaften, die für Anwendungsentitäten für Native Apps verfügbar sind. Weitere Informationen zu den Entitäten der Definition von Projekten finden Sie unter Entitäten angeben.
Eigenschaft |
Definition |
---|---|
type erforderlich, string |
Sie müssen |
from.target erforderlich, string |
Anwendungspaket, aus dem diese Entität erstellt werden soll. Im folgenden Beispiel definiert from:
target: my_pkg
|
debug optional, boolean |
Ob der Debug-Modus aktiviert werden soll, wenn ein benannter Stagingbereich zum Erstellen einer Anwendung verwendet wird. Standard: |
Weitere Informationen über Artefakte-Prozessoren¶
Wenn Sie das Feld artifacts.processors
in die Projektdefinitionsdatei aufnehmen, ruft der Befehl snow app bundle
die benutzerdefinierte Verarbeitung für Python-Code-Dateien im Verzeichnis oder in der Datei src
auf.
Dieser Abschnitt enthält eine Liste der unterstützten Prozessoren.
Snowpark-Prozessor¶
Einer der von Snowflake CLI unterstützten Prozessoren ist snowpark
, der Snowpark- Annotationsverarbeitung auf Python-Dateien anwendet. Im Folgenden finden Sie die grundlegende Struktur und Syntax für verschiedene Umgebungen:
Um Code in einer conda-Umgebung auszuführen, verwenden Sie Folgendes:
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark properties: env: type: conda name: <conda_name>
wobei
<conda_name>
der Name der Umgebung von conda ist, die den Python-Interpreter und die Snowpark-Bibliothek enthält, die Sie für die Verarbeitung von Snowpark-Anmerkungen verwenden möchten.Um Code in einer virtuellen Umgebung von Python auszuführen, verwenden Sie Folgendes:
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark properties: env: type: venv path: <venv_path>
wobei
<venv_path>
der Pfad der virtuellen Umgebung von Python ist, die den Python-Interpreter und die Snowpark-Bibliothek enthält, die Sie für die Verarbeitung von Snowpark-Anmerkungen verwenden möchten. Der Pfad kann absolut oder relativ zum Verzeichnis des Projekts sein.Um Code in der gerade aktiven Umgebung auszuführen, verwenden Sie eine der folgenden gleichwertigen Definitionen:
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark properties: env: type: current
oder
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark
oder
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - snowpark
Weitere Informationen zur benutzerdefinierten Verarbeitung finden Sie unter Automatische SQL-Code-Erstellung und dem snow app bundle-Befehl.
Vorlagenprozessor¶
Snowflake Native App-Projekte unterstützen Vorlagen in beliebigen Dateien, wodurch Sie Vorlagen in allen Dateien im src
-Verzeichnis eines Artefakts erweitern können. Sie können dieses Feature aktivieren, indem Sie einen templates
-Prozessor in die gewünschte artifacts
-Definition aufnehmen, wie im folgenden Beispiel gezeigt:
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
Wenn Snowflake CLI die Dateien in einen Stagingbereich hochlädt, erweitert es automatisch die Vorlagen, bevor es sie hochlädt. Nehmen wir zum Beispiel an, Ihre Anwendung enthielte eine Datei app/README.md
mit folgendem Inhalt, der die Vorlage <% ctx.entities.pkg.identifier %>
enthält:
This is a README file for application package <% ctx.entities.pkg.identifier %>.
Die Vorlage wird dann wie folgt erweitert, bevor die Datei in einen Stagingbereich hochgeladen wird:
This is a README file for application package myapp_pkg.
Überschreiben von Projektdefinitionen¶
Obwohl Ihr Projektverzeichnis eine Datei snowflake.yml
enthalten muss, können Sie das Verhalten der Snowflake CLI anpassen, indem Sie snowflake.yml
lokale Überschreibungen zur Verfügung stellen, z. B. eine neue Rolle, um Ihr eigenes Anwendungspaket zu testen. Diese Überschreibungen müssen in der Datei snowflake.local.yml
abgelegt werden, die neben der Basisprojektdefinition besteht. Snowflake schlägt vor, dass Sie diese Datei zu Ihrer .gitignore
-Datei hinzufügen, damit keine Versionskontrolle durch Git erfolgt. Alle von Snowflake bereitgestellten Vorlagen enthalten diese Datei bereits in der Datei .gitignore
.
Diese Überschreibungsdatei muss sich am selben Speicherort befinden wie Ihre snowflake.yml
-Datei.
Die Datei snowflake.local.yml
hat das gleiche Schema wie snowflake.yml
, mit dem Unterschied, dass jeder Wert, der zuvor erforderlich war, nun optional ist, zusätzlich zu den bereits bestehenden optionalen Werten. Im Folgenden sehen Sie die Beispieldatei 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>
Jeder snow app
-Befehl priorisiert die Parameter in dieser Datei gegenüber denen in der Basiskonfigurationsdatei snowflake.yml
. Sinnvolle Standardeinstellungen sorgen bereits für eine Isolation zwischen Entwicklern, die dasselbe Snowflake-Konto für die Entwicklung desselben Anwendungsprojekts verwenden. Wenn Sie also gerade erst anfangen, empfehlen wir Ihnen, keine Überschreibungsdatei einzufügen.
Das endgültige Definitionsschema, das Sie erhalten, nachdem Sie snowflake.yml
mit snowflake.local.yml
überschrieben haben, wird die aufgelöste Projektdefinition genannt.
Einschränkungen¶
Derzeit, unterstützt Snowflake CLI Folgendes nicht:
Mehrere Überschreibungsdateien.
Eine leere Überschreibungsdatei. Erstellen Sie diese Datei nur, wenn Sie einen Wert aus
snowflake.yml
überschreiben möchten.