プロジェクト定義ファイルのテンプレートの作成

状況によっては、プロジェクト定義ファイルにすでに存在する情報を、ファイルの別の場所で参照したい場合があります。 Snowflake CLI は、プロジェクト定義ファイルのテンプレート化をサポートしています。

プロジェクト定義ファイル・テンプレートでは、テンプレートの指定に <% %> 構文を使用します。次の例では、 env セクションを使って Streamlit アプリケーションの名前を定義しています。

definition_version: 2
env:
  name: "my-app"
entities:
  my_streamlit:
    type: "streamlit"
    identifier: <% ctx.env.name %>
Copy

<% ctx.env.name %> 構文は、プロジェクト定義へのアクセスを提供するグローバル・コンテキスト・オブジェクトを参照します。ctx オブジェクトは、プロジェクト定義と同じ構造を持っています。定義されたオブジェクトの属性にはドット記法でアクセスできます。使用例は次を含みます。

  • <% ctx.entities.pkg.identifier %> で、 ID pkg を持つNative Appパッケージの名前にアクセスできます。

  • <% ctx.entities.function.stage_name %> で、Snowpark UDFs とプロシージャのステージ名にアクセスできます。

  • <% ctx.entities.my_streamlit.identifier %> でStreamlit ダッシュボード名にアクセスできます。

snowflake.yml プロジェクト定義ファイル env セクションで定義された変数は、同じ名前のシェル環境変数(大文字と小文字を区別)を設定することで上書きできます。たとえば、例で定義されている名前値を上書きするには、次のシェルコマンドを実行します。

export name="other"
Copy

テンプレートのデフォルトにアクセスする

テンプレート・デフォルトでは、フィールドが明示的に定義されていなくても、プロジェクト定義ファイルからデフォルト・フィールドや自動生成フィールドにアクセスできます。例として、 Snowflake Native App のプロジェクト定義ファイルを考えてみましょう。

definition_version: 2
entities:
  pkg:
    type: application package
    artifacts:
      - src: app/*
        dest: ./
  app:
    type: application
    from:
      target: pkg
Copy

この定義は、 Snowflake Native App を作成するのに十分な情報を提供します。したがって、アプリケーション・パッケージとアプリケーション・インスタンスのデフォルト値は、アプリケーションの作成時に自動的に生成されます。これらの値には、以下の構文でアクセスできます。

<% ctx.entities.app.identifier %>
<% ctx.entities.pkg.identifier %>
Copy