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
--enhanced-exit-codes
引数¶
なし
オプション¶
--package-entity-id TEXTdefinition_version が 2 以上の場合に操作するパッケージ・エンティティの ID 。
--app-entity-id TEXTdefinition_version が 2 以上の場合に操作するアプリケーション・エンティティの ID 。
-p, --project TEXTSnowflakeプロジェクトが保存されているパス。デフォルトは現在の作業ディレクトリです。
--env TEXTkey=value の形式の文字列。テンプレートに使用されたenvセクションの変数を上書きします。デフォルト: []
--format [TABLE|JSON|JSON_EXT|CSV]出力形式を指定します。デフォルト: TABLE
--verbose, -vログレベル
info以上のログエントリを表示します。デフォルト: false。--debugログレベル
debug以上のログ エントリを表示します。デバッグログには追加情報が含まれます。デフォルト: false。--silentコンソールへの中間出力をオフにします。デフォルト: false。
--enhanced-exit-codes終了エラーコードをエラーのタイプによって区別します。デフォルト: 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 アカウントへのアクセスは必要ありません。このコマンドは、 プロジェクト定義ファイル 内の
アプリケーションパッケージエンティティのartifactsに対して次のようなコピーおよびシンボリックリンク動作を行います。ソースパス内のすべてのディレクトリ名もデプロイルートに作成されます。
ソースパス内のすべてのファイルは、デプロイルート内のこれらのディレクトリ内でシンボリックリンクされます。
デプロイルートにあるシンボリックリンクされたファイルの中には、そのファイルから SQL 、ハードリンクになるものがあります。詳細については、 設定された Snowflake Native App アーティファクトを含むローカルフォルダーの準備 をご参照ください。
プロジェクト定義ファイルから、次の
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アノテーション処理機能を 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