Vorlagen für Projektdefinitionsdateien erstellen¶
In manchen Situationen möchten Sie vielleicht an einer anderen Stelle der Datei auf Informationen verweisen, die bereits in einer Projektdefinitionsdatei vorhanden sind. Snowflake CLI unterstützt die Erstellung von Vorlagen für die Projektdefinitionsdatei.
Vorlagen für Projektdefinitionsdateien verwenden die <% ... %>
-Syntax für die Angabe der Vorlagen. Im folgenden Beispiel wird der env
-Abschnitt verwendet, um einen Namen für eine Streamlit-Anwendung zu definieren:
definition_version: 2
env:
name: "my-app"
entities:
my_streamlit:
type: "streamlit"
identifier: <% ctx.env.name %>
Die Syntax <% ctx.env.name %>
verweist auf ein globales Kontextobjekt, das den Zugriff auf die Projektdefinition ermöglicht. Das Objekt ctx
hat die gleiche Struktur wie die Projektdefinition. Sie können auf Attribute von definierten Objekten in Punktnotation zugreifen. Beispiele für die Verwendung sind:
<% ctx.entities.pkg.identifier %>
zum Zugriff auf den Namen eines Pakets einer Native App mit IDpkg
.<% ctx.entities.function.stage_name %>
für den Zugriff auf den Stagingbereich für einen Snowpark UDFs und Prozeduren.<% ctx.entities.my_streamlit.identifier %>
für den Zugriff auf den Streamlit-Dashboardnamen.
Sie können jede im snowflake.yml
Projektdefinitionsdatei env
-Abschnitt definierte Variable überschreiben, indem Sie eine Shell-Umgebungsvariable mit demselben Namen setzen, wobei die Groß- und Kleinschreibung beachtet wird. Um den im Beispiel definierten Namenwert zu überschreiben, können Sie z. B. den folgenden Shell-Befehl ausführen:
export name="other"
Zugriff auf Vorlagenvorgaben¶
Mit Hilfe von Vorlagenvorgaben können Sie auf voreingestellte und automatisch generierte Felder aus einer Projektdefinitionsdatei zugreifen, auch wenn die Felder nicht explizit definiert sind. Betrachten Sie zur Veranschaulichung die folgende Datei mit der Snowflake Native App-Projektdefinitionsdatei:
definition_version: 2
entities:
pkg:
type: application package
artifacts:
- src: app/*
dest: ./
app:
type: application
from:
target: pkg
Diese Definition liefert genügend Informationen, um eine Snowflake Native App zu erstellen. Die Standardwerte für das Paket und die Anwendungsinstanz werden also automatisch generiert, wenn Sie die Anwendung erstellen. Sie können dann mit der folgenden Syntax auf diese Werte zugreifen:
<% ctx.entities.app.identifier %> <% ctx.entities.pkg.identifier %>