创建项目定义文件模板¶
在某些情况下,您可能希望在文件的另一处引用项目定义文件中已有的信息。Snowflake CLI 支持对项目定义文件进行模板化。
项目定义文件模板使用 <% … %>
syntax for specifying the templates. The following example uses the env
部分来定义 Streamlit 应用程序的名称:
definition_version: 2
env:
name: "my-app"
entities:
my_streamlit:
type: "streamlit"
identifier: <% ctx.env.name %>
<% ctx.env.name %>
语法引用了一个全局上下文对象,该对象提供了对项目定义的访问权限。ctx
对象的结构与项目定义相同。您可以使用点表示法访问已定义对象的属性。用例示例包括:
<% ctx.entities.pkg.identifier %>
访问具有 IDpkg
的 Native App 包名称。<% ctx.entities.function.stage_name %>
访问 Snowpark UDFs 的暂存区名称和过程。<% ctx.entities.my_streamlit.identifier %>
访问 Streamlit 仪表板名称。
通过设置同名(区分大小写)的 shell 环境变量,您可以覆盖在 snowflake.yml
项目定义文件 env
部分中定义的任何变量。例如,要覆盖示例中定义的名称值,可以执行以下 shell 命令:
export name="other"
访问模板默认值¶
模板默认值允许您项目定义文件中的默认字段和自动生成的字段,即使这些字段没有明确定义。为了演示这一点,请考虑以下 Snowflake Native App 项目定义文件:
definition_version: 2
entities:
pkg:
type: application package
artifacts:
- src: app/*
dest: ./
app:
type: application
from:
target: pkg
该定义为创建 Snowflake Native App 提供了足够的信息,因此在创建应用程序时会自动生成应用程序包和应用程序实例的默认值。然后,您可以使用以下语法访问这些值:
<% ctx.entities.app.identifier %> <% ctx.entities.pkg.identifier %>