Bootstrapping eines Projekts aus einer Vorlage¶
Um Ihnen die Instanziierung von Projekten zu erleichtern, implementiert Snowflake CLI eine Projektvorlage. Sie können Ihre eigenen Projektvorlagen erstellen oder Beispiele verwenden, die Snowflake in den öffentlichen Snowflake CLI-Vorlagen Git-Repository bereitstellt.
Der Befehl snow init erstellt ein Verzeichnis für das Projekt und füllt es mit der in der angegebenen Vorlage definierten Dateistruktur.
Wenn Sie die Option
--no-interactive
nicht angeben, fragt der Befehl nach jeder in der Vorlage (template.yml
) angegebenen Variable, die Sie nicht mit der Option-D
(oder--variable
) angeben.Wenn Sie die Option
--no-interactive
angeben, verwendet der Befehl die Standardwerte der Variablen (definiert durch die Vorlage). Wenn in der Vorlage kein Standardwert für eine Variable definiert ist und Sie nicht die Option-D
verwenden, um ihn anzugeben, wird der Befehl mit einem Fehler beendet.
Der Befehl snow init
verwendet die folgende Syntax:
snow init PATH [--template-source SOURCE] [--template NAME] [-D key1=value1 -D key2=value2...] [--no-interactive]
Wobei:
PATH
ist ein neues Verzeichnis, in dem der Befehl das Projekt initialisiert. Wenn Sie ein bestehendes Verzeichnis angeben, wird der Befehl mit einem Fehler beendet.[--template-source SOURCE]
ist eine der folgenden Optionen:Ein lokaler Dateipfad des Verzeichnisses der Vorlage.
Ein gültiges Git URL zu dem Verzeichnis, das die Projektvorlage enthält. Wenn nichts angegeben wird, verwendet der Befehl standardmäßig die Snowflake CLI-Volagen Git-Repository.
[--template NAME]
gibt an, welches Unterverzeichnis vonSOURCE
als Vorlage verwendet werden soll (nützlich für Remote-Quellen). Wenn nicht angegeben, wirdSOURCE
als eine einzige Vorlage behandelt.[-D key1=value1 -D key2=value2...]
ist eine Liste von einem oder mehreren Name-Werte-Paaren, die Werte für die in der Vorlage definierten Variablen enthält (intemplate.yml
). Der Befehl fragt nicht nach Variablen, die Sie mit dieser Option angeben.[--no-interactive]
deaktiviert die Aufforderung zur Eingabe durch den Benutzer. Wenn Sie diese Option verwenden, müssen Sie alle geforderten Werte mit den Optionen[-D key1=value1 -D key2=value2...]
bereitstellen, andernfalls existiert der Befehl mit einem Fehler.
Weitere Informationen finden Sie in der Referenz des Befehls snow init.
Beispiele¶
Initialisieren Sie das Projekt mit der Vorlage
example_snowpark
aus dem Standard-Repository:snow init my_snowpark_test_app --template example_snowpark
Der Befehl fordert Sie zur Eingabe auf (Standardwerte sind in eckigen Klammern angegeben):
Project identifier (used to determine artifacts stage path) [my_snowpark_project]: What stage should the procedures and functions be deployed to? [dev_deployment]: snowpark Initialized the new project in my_snowpark_test_app
Initialisieren Sie das Projekt mit der lokalen Vorlage.
snow init new_streamlit_project --template-source ../local_templates/example_streamlit -D query_warehouse=dev_wareshouse -D stage=testing
In diesem Beispiel werden die Variablen
query_warehouse
undstage
mit der Option-D
angegeben, so dass der Befehl nur Folgendes abfragt:Name of the streamlit app [streamlit_app]: Initialized the new project in new_streamlit_project
Erstellen benutzerdefinierter Vorlagen¶
Vorlagenlayout¶
Eine Projektvorlage erfordert eine Datei template.yml
, die Daten enthält, die erklären, wie der Befehl snow init
die Vorlage darstellen soll. Wenn sich die Datei nicht im Wurzelverzeichnis der Vorlage befindet, wird snow init
mit einem Fehler beendet. Weitere Informationen finden Sie unter template.yml-Syntax.
Vorlagensyntax¶
Vorlagenvariablen und Ausdrücke sollten in <! ... !>
eingeschlossen werden. Snowflake CLI unterstützt auch grundlegende jinja2-Ausdrücke und Filter, zum Beispiel:
some_file_spec: filename: <! file_name !> size: "<! [ max_file_size_mb, 4 ] | max !> MB"
Snowflake CLI-Projektvorlagen unterstützen auch die folgende reservierte Variable sowie einen Filter:
project_dir_name
-Variable, die automatisch in das Wurzelverzeichnis des erstellten Projekts aufgelöst wird.Angenommen Ihre Datei
snowflake.yml
enthält Folgendes:definition_version: "1.1" snowpark: project_name: <! project_dir_name !> ...
Wenn Sie dann den folgenden Befehl ausführen, um das Projekt aus Ihrer benutzerdefinierten Vorlage zu initialisieren:
snow init examples/new_snowpark_project --template-source my_example_template/
Der Befehl
snow init
rendert die Dateisnowflake.yml
wie folgt:definition_version: "1.1" snowpark: project_name: new_snowpark_project ...
to_snowflake_identifier
-Filter, der vom Benutzer bereitgestellte Zeichenfolgen in korrekt formatierte Snowflake-Bezeichner umwandelt.Snowflake empfiehlt dringend, diesen Filter zu verwenden, wenn eine Variable auf ein Snowflake-Objekt verweist.
Angenommen Ihre Datei
snowflake.yml
enthält Folgendes:definition_version: "1.1" streamlit: name: <! name | to_snowflake_identifier !> ...
Wenn Sie dann den folgenden Befehl ausführen, um ein Projekt aus Ihrer benutzerdefinierten Vorlage zu initialisieren:
snow init examples/streamlit --template-source my_example_template2/ -D name='My test streamlit'
Der Befehl
snow init
rendert die Dateisnowflake.yml
wie folgt:definition_version: "1.1" streamlit: name: My_test_streamlit ...
Wenn eine Zeichenfolge nicht in einen gültigen Snowlake-Bezeichner umgewandelt werden kann, wird der Befehl
snow init
mit einem Fehler beendet, wie hier gezeigt:snow init examples/streamlit --template-source my_example_template2/ -D name=1234567890
╭─ Error ────────────────────────────────────────────────────────────────────────╮ │ Value '123456789' cannot be converted to valid Snowflake identifier. │ │ Consider enclosing it in double quotes: "" │ ╰────────────────────────────────────────────────────────────────────────────────╯
Über die template.yml
-Projektvorlagendatei¶
In der Projektvorlagendatei template.yml
sind alle Daten gespeichert, die zum Rendern des Projekts benötigt werden. Beispiel:
minimum_cli_version: "2.7.0"
files_to_render:
- snowflake.yml
variables:
- name: name
default: streamlit_app
prompt: "Name of the streamlit app"
type: string
- name: stage
default: my_streamlit_stage
prompt: "What stage should the app be deployed to?"
type: string
- name: query_warehouse
default: my_streamlit_warehouse
prompt: "On which warehouse SQL queries issued by the application are run"
type: string
Die folgende Tabelle listet die Eigenschaften in einer template.yml
-Projektvorlagendatei auf.
Eigenschaft |
Definition |
---|---|
minimum_cli_version optional, string (default:None) |
Snowflake CLI-Mindestversion Wenn angegeben, prüft der Befehl |
files_to_render optional, string list (Standard: |
Auflistung der Dateien, die mit dem Befehl Bemerkung Vorlagendateien, die nicht in dieser Liste enthalten sind, werden dem neuen Projekt hinzugefügt, ihr Inhalt bleibt jedoch unverändert. |
variables optional, variable list (Standard: |
Auflistung der Variablen der Vorlage. Es unterstützt die Anpassung von Eingabeaufforderungen, die Bereitstellung von Standardwerten für optionale Variablen und die grundlegende Typenprüfung. Weitere Einzelheiten finden Sie in der Tabelle Variables property parameters unten. Die Variablenwerte werden in der Reihenfolge dieser Liste ermittelt. Wenn Sie eine Variable, die in der Datei ╭─ Error ─────────────────────────────────────────────────────────╮
│ Cannot determine value of variable undefinded_variable │
╰─────────────────────────────────────────────────────────────────╯
|
In der folgenden Tabelle sind die Parameter einer Variableneigenschaft aufgelistet.
Eigenschaft |
Definition |
---|---|
name erforderlich, string |
Name der Variablen. Er wird in den Vorlagendateien verwendet, z. B. |
prompt optional, string |
Eingabeaufforderung an den Benutzer, um einen Wert zu erhalten. Wenn Sie diesen Parameter nicht einstellen, zeigt der Befehl den Namen des Parameters als Aufforderungstext an. Wenn Sie die Eingabeaufforderung wie folgt definieren: variables:
- name: project_id
prompt: The identifier for the project
The identifier for the project:
|
default optional, string/int/float |
Standardwert der Variablen. Wenn sie nicht angegeben wird, wird die Variable als Anforderung behandelt, so dass der Benutzer den Wert nach einer Eingabeaufforderung oder mit der Befehlszeilenoption Das folgende Beispiel definiert zwei Variablen mit Standardwerten: variables:
- name: max_file_size_mb
default: 16
- name: file_name
default: 'default_file_name.zip'
Bei der Ausführung des file_name [default_file_name.zip]:
max_file_size_mb [16]: 5
In diesem Beispiel verwendet der Befehl den Standardwert ( |
type optional, string |
Datentyp der Variablen. Gültige Werte sind: Das folgende Beispiel definiert eine Variable als Datentyp variables:
- name: max_file_size_mb
type: int
Der snow init-Befehl zeigt bei der Ausführung die folgenden Fehler an, wenn der Benutzer einen Wert vom falschen Datentyp eingibt: max_file_size_mb: not an int
Error: 'not an int' is not a valid integer.
max_file_size_mb: 14.5
Error: '14.5' is not a valid integer.
max_file_size_mb: 6
Initialized the new project in example_dir
|