プロジェクト定義ファイル¶
snowflake.yml
というプロジェクト定義ファイルは、 Snowflake Native App プロジェクトとしてディレクトリを宣言します。これは、 Snowflake Native App プロジェクトディレクトリのルートに存在するバージョン管理されたファイルであり、手動で作成することも、プロジェクト初期化の一部として Snowflake CLI によって作成することもできます。この構造化ファイルをディレクトリ内に提供し、独自の独立したプロジェクト構造を使用することを選択できる限り、 Snowflake CLI は関連ファイルを検出し、通常どおり機能を実行できます。
Native Appsの場合、 snowflake.yml
は次のようになります。
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>
共通エンティティ・プロパティ¶
次の表では、Native Appsのプロジェクト定義エンティティで使用できる一般的なプロパティについて説明します。プロジェクト定義エンティティの詳細については、 Specify entities をご参照ください。
プロパティ |
定義 |
---|---|
タイプ required, string |
管理するエンティティの型。 Snowflake Native App に有効な値には、次が含まれます。
|
識別子 optional, string |
オプションのエンティティのSnowflake識別子。引用符で囲まれていない識別子と引用符で囲まれた識別子の両方がサポートされています。引用符で囲まれた識別子を使用するには、 YAML の値に引用符を含めます(例: 指定がない場合は、プロジェクト定義のエンティティ ID が識別子として使用されます。 |
meta.warehouse optional, string |
これらのスクリプト内の SQL コマンドでウェアハウスの使用が必要な場合、 デフォルト: Snowflake CLI
|
meta.role optional, string |
アプリケーションパッケージとプロバイダー側オブジェクトを作成するときに使用するロール。 注釈 ロールを指定しない場合、 Snowflake CLI はSnowflakeアカウントでユーザーに割り当てられた既定のロールを使用しようとします。 通常、この値は プロジェクト定義の上書き で説明されているように デフォルト: Snowflake CLI 接続 で指定されたロール |
meta.post_deploy optional, sequence |
エンティティの作成後に実行する SQL スクリプトのリスト。以下の例では、プロジェクト定義ファイルにこれらのスクリプトを定義する方法を示しています。 definition_version: 2
entities:
myapp_pkg:
type: application package
...
meta:
post_deploy:
- sql_script: scripts/post_deploy1.sql
- sql_script: scripts/post_deploy2.sql
これらのスクリプトは、エンティティを作成または更新するコマンドによって呼び出されます。例えば、 また、以下のサンプル スクリプト コンテンツに示すように、デプロイ後の SQL スクリプトでもテンプレートを使用できます。 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 |
このエンティティに適用する mixin の名前。詳細については、 プロジェクト・ミキシン をご参照ください。 |
アプリケーション・パッケージのエンティティ・プロパティ¶
次の表に、Native Appsのアプリケーションパッケージエンティティで使用できる一般的なプロパティを示します。プロジェクト定義エンティティの詳細については、 Specify entities をご参照ください。
プロパティ |
定義 |
---|---|
タイプ required, string |
|
マニフェスト required, string |
プロジェクト内の Snowflake Native App |
deploy_root optional, string |
構築ステップでアーティファクトがコピーされるプロジェクトのルートにあるフォルダー。この場所にコピーしたら、Snowflakeステージにデプロイできます。 デフォルト: |
generated_root optional, string |
Snowflake CLI が生成されたファイルを書き込むデプロイルートのサブディレクトリ。 デフォルト: |
ステージ optional, string |
アプリケーション成果物を保存するステージの識別子。値は:codenowrap: デフォルト: |
アーティファクト required, sequence |
デプロイルートに追加するファイルソースと宛先のペアのリスト、およびオプションのSnowparkのアノテーションプロセッサー。次のアーティファクト プロパティを使用できます。
各項目に対して、 プロセッサーなしの例: pkg:
artifacts:
- src: app/*
dest: ./
- src: streamlit/*
dest: streamlit/
- src: src/resources/images/snowflake.png
dest: streamlit/
プロセッサーの例: pkg:
artifacts:
- src: qpp/*
dest: ./
processors:
- name: snowpark
properties:
env:
type: conda
name: <conda_name>
|
配布 optional, string |
Snowflake CLI で作成されたアプリケーションパッケージの配布。 デフォルト: |
scratch_stage optional, string |
Snowflake CLI が使用する仮スクラッチデータを保存するステージの識別子。値は デフォルト: |
アプリケーション・エンティティ・プロパティ¶
次の表に、Native Appsのアプリケーションエンティティで使用できる一般的なプロパティを示します。プロジェクト定義エンティティの詳細については、 Specify entities をご参照ください。
プロパティ |
定義 |
---|---|
タイプ required, string |
|
from.target required, string |
このアプリケーション・エンティティの作成元となるアプリケーション・パッケージ。次の例では、 from:
target: my_pkg
|
デバッグ optional, boolean |
名前付きステージを使用してアプリケーションを作成するときに、デバッグモードを有効にするかどうか。 デフォルト: |
アーティファクト・プロセッサーに関する詳細¶
プロジェクト定義ファイルに:codenowrap:artifacts.processors
フィールドを含めると、snow app bundle
コマンドは、src
ディレクトリまたはファイルにある Python コードファイルのカスタム処理を呼び出します。
このセクションでは、サポートされているプロセッサーの一覧を説明します。
Snowpark・プロセッサー¶
Snowflake CLI でサポートされているプロセッサーのひとつに:codenowrap:snowpark
があり、Snowparkのアノテーション処理をPythonファイルに適用します。以下に、処理環境別の基本構造と構文を示します。
conda環境でコードを実行するには、以下を使います。
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark properties: env: type: conda name: <conda_name>
ここで:codenowrap:
<conda_name>
は、Snowparkアノテーション処理に使用するPythonインタプリターとSnowparkライブラリを含むconda環境の名前です。Pythonの仮想環境でコードを実行するには、以下を使います。
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark properties: env: type: venv path: <venv_path>
ここで:codenowrap:
<venv_path>
は、PythonインタプリターとSnowparkアノテーション処理に使用するSnowparkライブラリを含むPython仮想環境のパスです。パスは、プロジェクト・ディレクトリに対する絶対パスでも相対パスでもよいです。現在アクティブな環境でコードを実行するには、以下の等価な定義のいずれかを使用します。
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark properties: env: type: current
または
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark
または
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - snowpark
カスタム処理の詳細については、 SQL コード自動生成 および snow app bundle コマンドをご参照ください。
テンプレートプロセッサー¶
Snowflake Native App プロジェクトは任意のファイルでのテンプレートをサポートしており、アーティファクトの src
ディレクトリにあるすべてのファイルでテンプレートを展開できます。この機能を有効にするには、次の例に示すように、templates
プロセッサーを、artifacts
定義に含めます。
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
Snowflake CLI がステージにファイルをアップロードする際、アップロード前にテンプレートを自動的に展開します。例えば、あなたのアプリケーションが、<% ctx.entities.pkg.identifier %>
テンプレートを含む以下の内容の app/README.md
ファイルを含むとします。
This is a README file for application package <% ctx.entities.pkg.identifier %>.
そして、ファイルをステージにアップロードする前に、テンプレートを以下のように展開します。
This is a README file for application package myapp_pkg.
プロジェクト定義の上書き¶
プロジェクトディレクトリには snowflake.yml
ファイルが必要ですが、独自のアプリケーションパッケージをテストするための新しいロールなど、 snowflake.yml
にローカル上書きを提供することで、 Snowflake CLI の動作をカスタマイズすることもできます。これらの上書きは、ベースプロジェクト定義の横にある snowflake.local.yml
ファイルに配置する必要があります。Snowflakeでは、gitでバージョン管理されないように、 .gitignore
ファイルに追加することを推奨しています。Snowflakeが提供するすべてのテンプレートでは、すでに .gitignore
ファイルに含まれています。
この上書きファイルは、 snowflake.yml
ファイルと同じ場所に配置する必要があります。
snowflake.local.yml
ファイルは snowflake.yml
とまったく同じスキーマを共有しますが、必須であったすべての値が、すでにオプションであった値に加えて、オプションになった点が異なります。 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>
すべての snow app
コマンドは、ベースとなる snowflake.yml
構成ファイルで設定されたパラメーターよりも、このファイル内のパラメーターを優先します。適切なデフォルトにより、同じSnowflakeアカウントを使用して同じアプリケーションプロジェクトを開発する開発者間の分離が既に提供されるため、始めたばかりの場合は上書きファイルを含めないことをお勧めします。
snowflake.yml
を snowflake.local.yml
で上書きした後に取得される最終的な定義スキーマは、解決されたプロジェクト定義と呼ばれます。
制限事項¶
現在、 Snowflake CLI はサポートされていません
複数の上書きファイル。
空白の上書きファイル。
snowflake.yml
の値を上書きする場合にのみ、このファイルを作成してください。