snow app bundle¶
設定されたアプリの成果物を含むローカルフォルダを準備します。
構文¶
snow app bundle
--package-entity-id <package_entity_id>
--app-entity-id <app_entity_id>
--project <project_definition>
--env <env_overrides>
--format <format>
--verbose
--debug
--silent
引数¶
なし
オプション¶
--package-entity-id TEXT
definition_versionが2以上のときに操作するパッケージ・エンティティの ID 。
--app-entity-id TEXT
definition_versionが2以上のときに操作するアプリケーション・エンティティの ID 。
-p, --project TEXT
Snowflakeプロジェクトが存在するパス。デフォルトは現在の作業ディレクトリです。
--env TEXT
key=value形式の文字列。テンプレートに使用される env セクションの変数をオーバーライドする。デフォルト: []
--format [TABLE|JSON]
出力形式を指定します。デフォルト: TABLE
--verbose, -v
ログレベル
info
以上のログエントリを表示します。デフォルト: false。--debug
ログレベル
debug
以上のログエントリを表示します。デバッグログには追加情報が含まれます。デフォルト: false。--silent
コンソールへの中間出力をオフにします。デフォルト: false。
--help
このコマンドのヘルプテキストを表示します。
使用上の注意¶
snow app bundle
コマンドは、 Snowflake Native App のすべての成果物を含む仮ローカル・ディレクトリを作成します。また、SnowparkのPythonコードから SQL スクリプトを自動生成することもできます。このコマンドは、 snow app deploy 、 snow app run 、 snow app version create コマンドによって自動的に呼び出されます。しかし、ステージにアップロードする前に、セットアップスクリプト、アーティファクト、生成された SQL を確認したい場合は、このコマンドを手動で実行することができます。SQL コード生成の詳細については、 設定された Snowflake Native App アーティファクトを含むローカルフォルダーの準備 をご参照ください。
このコマンドは、 プロジェクト定義ファイル を使用して、プロジェクト・ディレクトリ内に作成する仮フォルダの名前を決定します。
デフォルトでは、
<project_directory>/output/deploy
となります。このディレクトリはデプロイルートとも呼ばれ、後続のコマンドでステージにファイルがアップロードされると、ステージの構造がどのようになるかを反映します。output/deploy
の代わりに Snowflake CLI にカスタム名のフォルダを作成させたい場合は、 プロジェクト定義ファイル のアプリケーションパッケージ
エンティティのdeploy_root
フィールドを指定することで可能です。注釈
デプロイルートに関連パスを提供する必要があります。絶対パスは拒否されます。デプロイルート・パスはプロジェクト・ディレクトリ内に作成されます。
run snow app bundle
、あるいは他のコマンドがbundle
機能性を使用するとデプロイルートは削除され再作成されるため、デプロイルートは仮ディレクトリです。
snow app bundle
は、 snow app deploy 、 snow app run 、 snow app version create コマンドの一部として自動的に呼び出されるため、デプロイルートの外でソースファイルのみに変更を加える必要があります。デプロイルートにあるファイルを変更すると、次にこれらのコマンドを呼び出したときに、そのファイルはソースファイルの最新の状態で上書きされます。git
のようなバージョン管理システムを使用している場合、デプロイルートは頻繁に変更される可能性があるため、追跡しないように選択することができます。snow app bundle
は、Javaファイルからjarファイルを作成するなど、成果物のビルドやコンパイルは行いません。プロジェクト定義ファイルで指定された成果物のみをコピーし、デプロイルートに追加してステージのディレクトリ構造を模倣します。snow app bundle
は、ローカルファイルシステムにのみ影響するため、Snowflake アカウントへのアクセスは必要ありません。このコマンドは、 プロジェクト定義ファイル 内の
アプリケーションパッケージ
エンティティの:codenowrap:artifacts
に対して次のようなコピーおよびシンボリックリンク動作を行います。ソースパス内のすべてのディレクトリ名もデプロイルートに作成されます。
ソースパス内のすべてのファイルは、デプロイルート内のこれらのディレクトリ内でシンボリックリンクされます。
デプロイルートにあるシンボリックリンクされたファイルの中には、そのファイルから SQL 、ハードリンクになるものがあります。詳細については、 設定された Snowflake Native App アーティファクトを含むローカルフォルダーの準備 をご参照ください。
プロジェクト定義ファイルから、次の:codenowrap:
artifacts
リストの例を考えてみましょう。entities: pkg: type: application package ... artifacts: - src: dir1/dir2/* dest: dest_dir1/dest_dir2/ - src: dir8/dir9/file.txt dest: dest_dir8/dest_file.txt ...
ここで、プロジェクト・ルートの
dir1/dir2
には、dir3
やdir4
などのサブディレクトリがあり、file3.txt
やfile4.txt
などのファイルがあります。snow app bundle
コマンドを実行すると、デプロイルートは以下のようになります。-- deploy_root -- dest_dir1 -- dest_dir2 -- dir3 -- ... <entire directory tree of dir3> -- dir4 -- ... <entire directory tree of dir4> -- file3.txt -- file4.txt -- dest_dir8 -- dest_file.txt
Snowparkのアノテーション処理¶
Snowflake CLI バージョン2.5.0および Snowpark Python API バージョン1.15.0以降では、Snowparkアノテーション処理フィーチャーを:codenowrap:snow app bundle
コマンドでレバレッジできます。このフィーチャーを使用すると、PythonコードファイルにSnowpark Pythonデコレーター( @udf
、 @sproc
、 @udaf
、 @udtf
)を注釈として付けることができます。このデコレーターを使用すると、 Snowflake CLI 、プロジェクトディレクトリ内のセットアップスクリプトファイルの対応する CREATE FUNCTION、 CREATE PROCEDURE SQL ステートメントを自動的に実行します。これらのデコレーターをよりよく理解するには、対応する Python デコレーターのドキュメントを参照してください。
Snowparkのアノテーション処理には次のようなものがあります。
プロジェクト定義ファイルの
processor
フィールドでマークしたすべての Python ファイルを読み込みます。これは、プロセッサーの
properties
サブフィールドで提供される環境情報を使用して、別の仮サンドボックスPython環境を作成します。これらのPythonファイルはサンドボックス環境で実行されます。
これらのファイルからすべての装飾された機能を収集します。
収集された情報を使って、 Snowflake CLI は必要な SQL ステートメントを生成し、
manifest.yaml
ファイルで指定された場所の設定スクリプトに追加します。
Snowflake Native App アプリ用の Snowpark 拡張関数を記述するために、定型的な SQL コードを繰り返す必要はもうありません。
プロジェクト定義ファイルでこのフィーチャーを有効にする方法については、 Snowpark Python の使用を開始します。 をご参照ください。
サポートされているすべてのアーティファクト・プロセッサーの詳細については、 アーティファクト・プロセッサーに関する詳細 をご参照ください。
例¶
これらの例は、コードファイルに必要な変更を加え、 snowflake.yml
または snowflake.local.yml
ファイルに追加し、関連アーティファクトをビルドまはたコンパイルしたことを前提としています。
cd my_app_project
snow app bundle
コマンドの実行中に発生する様々なステップに関する情報が表示され、プロジェクト定義ファイルで指定された場所(デフォルト: my_app_project/output/deploy
)に新しいディレクトリが作成されます。
簡単なユースケースを実際に見るには、以下のコマンドを使ってすぐに使えるテンプレートを活用することができます。
snow init my_app_bundle_project --template app_basic
cd "my_app_bundle_project"
snow app bundle
ls my_app_bundle_project/output/deploy